Anleitung zu httpDNS 1.2.0

Was ist httpDNS?

Basierend auf der Idee von Carl Kossack und Axel Werner einen Webspace für die IP-Aktualisierung auf einer HTML-Seite zu verwenden, kann man mit httpDNS die (dynamische) IP Adressen von fli4l-Routern für eine geschlossene Benutzergruppe im WWW publizieren. Die wesentliche Verbesserung ist, dass httpDNS ausschließlich das HTTP für die Synchronisierung verwendet und so das Webspace-FTP-Paßwort nicht an die Benutzer weitergegeben werden muss. Der Unterschied zu herkömmlichen dynDNS-Diensten ist, dass der Server nur mit gültigem Schlüssel abgefragt werden kann und die gespeicherten IP Adressen somit nicht frei zugänglich sind. Das Paket besteht aus zwei Teilen: Dem fli4l-CGI-Interface für das httpd Paket und dem im Webspace abgelegten Server Programm.

Typische Anwendungen:
Kernpunkte: Voraussetzungen:

Wie funktioniert httpDNS?

Vorab ein paar Begriffe: Das Paket besteht aus zwei getrennt laufenden Programmen:
  1. Das Server Programm ist in PHP4 geschrieben und läuft auf dem Webserver im WWW. Es wird bei jeder Anfrage an die Webadresse gestartet und überprüft die bei der Anfrage verwendete Verschlüsselung. Zusammen mit der Anfrage wird die IP Adresse und der Host Name des Client übermittelt. Ist die Verschlüsselung korrekt, werden die IP Adresse des Client, dessen Host Name und der Zeitstempel der Anfrage in eine Datei am Server abgespeichert. Wenn in der Datei bereits ein Eintrag mit demselben Host Name besteht, wird dieser überschrieben. Somit wird immer nur die aktuellste IP Adresse für einen Client bereitgehalten. Als Antwort sendet das Server Programm alle gespeicherten Einträge in verschlüsselter Form an den Client. Ist die Verschlüsselung der Anfrage nicht korrekt, wird eine Fehlermeldung an Client gesandt.
  2. Das Client Programm ist als Bash/Bourne Shell CGI Script geschrieben. Es ermittelt die aktuelle IP Adresse des Clients (vom WWW aus gesehen) und schickt sie zusammen mit dem Host Name als verschlüsselte Anfrage an den Server. Die Antwort des Servers wird ausgewertet und alle übermittelten DNS Einträge lokal gespeichert. Danach werden alle lokal gespeicherten Einträge aller abgefragten Server bezüglich des Zeitstempels miteinander verglichen. Nur der jeweils aktuellste Eintrag für jeden Host Name wird in die Datei 'hosts.httpdns' eingetragen. Ein beliebiger Client im Netzwerk kann dann ganz einfach über dessen Host Name angesprochen werden.
Das Paket httpDNS verwendet übrigens Universal Standard Time (UST) als Zeitbasis für alle internen Zeitstempel. Damit ist es gleichgültig, wo die einzelnen Server geografisch stehen und welche Zeitzone auf den Websevern eingestellt ist.

Schnelleinstieg für Eilige (oder: 12 Schritte zum Erfolg ;-) )

  1. httpdns.zip ins fli4l-Verzeichnis entpacken.
  2. config/httpdns.txt öffnen und OPT_HTTPDNS='yes' einstellen und abspeichern.
  3. fli4l komplett auf den Router überspielen (zum Beispiel per IMonc oder mkfli4l), Router neu hochfahren
  4. Über einen Browser das Webinterface vom Router aufrufen. Es wird im Menü ein neuer Punkt "httpDNS" angezeigt. Dort drauf klicken und den Reiter "Schlüsselgenerator" auswählen.
  5. Es werden drei Schlüssel generiert. Das kann etwas dauern, je nach Rechenleistung des Routers bis zu ein oder zwei Minuten (486).
  6. Für jeden Server den man installieren möchte einen Schlüssel generieren lassen und mit Markieren und Kopieren in die config/httpdns.txt unter HTTPDNS_SERVER_%_KEY einfügen.
  7. In der config/httpdns.txt die Variable HTTPDNS_INTERFACE auf das Device einstellen, über das ins Internet geroutet wird und einen HTTPDNS_HOSTNAME vergeben. für jeden Server zumindest HTTPDNS_SERVER_%_NAME eintragen und die Anzahl Server bei HTTPDNS_SERVER_N angeben. HTTPDNS_SERVER_%_DNSFILE am Besten auf der Grundeinstellung 'httpdns.dns' belassen. Abspeichern.
  8. fli4l komplett auf den Router überspielen (zum Beispiel per IMonc oder mkfli4l), Router neu hochfahren
  9. Über einen Browser das Webinterface vom Router aufrufen. Im Menü unter "httpDNS" den Reiter "Administration" auswählen.
  10. Es sollten alle eingetragenen Server angezeigt werden, mit jeweils einem Button "Manuell einrichten", wenn keine Angeben zum FTP-Zugang gemacht wurden oder "Programm hochladen", wenn FTP eingerichtet wurde. Auf das Button klicken und den Anweisungen am Bildschirm folgen.
  11. Den Reiter "Synchronisieren" anwählen und im Fenster "Aktuelle IP Adresse" das Button "Alle DNS synchronisieren" klicken.
  12. Wenn für alle Server "Synchronisiert." angezeigt wird, hast Du gewonnen. Gratulation! Wenn nicht, bitte doch die ganze Anleitung lesen.

Einrichten des httpDNS-Paketes auf dem fli4l-Router

Die Installation verläuft nicht viel anders als von anderen OPT Paketen her bekannt. Die ZIP-Datei muss in das fli4l-Installationsverzeichnis entpackt werden. Danach befindet sich im Verzeichnis config die Datei httpdns.txt für die Konfiguartion des Paketes. Der ungewöhnliche Schritt bei httpDNS ist, dass für die vollständige Einrichtung die Serverschlüssel benötigt werden. Um qualitativ hochwertige Schlüssel zu bekommen habe ich einen Schlüsselgenerator in das httpd-Webinterface integriert. Der Menüpunkt steht aber erst nach der Installation zur Verfügung. Problem erkannt? ;-)

Deshalb im ersten Schritt einfach nur OPT_HTTPDNS='yes' in die Datei config/httpdns.txt einfügen, abspeichern, die Software auf den Router übertragen und den Router neu starten. Wenn der Router wieder zur Verfügung steht über einen Browser das Webinterface aufrufen. Dort gibt es dann im Menü einen neuen Punkt "httpDNS". Einfach den neuen Punkt anklicken und durch Wahl des Reiters "Schlüsselgenerator" jenselbigen starten und warten bis alle drei generierten Schlüssel angezeigt werden.

Für jeden Server den man installieren möchte braucht man einen Schlüssel. Theoretisch kann man natürlich denselben Schlüssel auf mehreren Servern benutzen, aber nachdem die Schlüssel den Zugriff auf die Server steuern macht es wohl wenig Sinn. Dann kann man ja gleich alle Benutzer an einen Server mit einem Schlüssel binden. Die Schlüssel müssen in der Datei config/httpdns.txt hinterlegt werden, und zwar in den Variablen HTTPDNS_SERVER_%_KEY. Das "%" steht dabei für die Nummer eines Servers. Die Schlüssel können im Browserfenster markiert, kopiert und in die Konfigurationsdatei eingefügt werden. Dabei aber beachtem, dass Du alle Zeichen markierst! Die Schlüssel müssen jeweils 41 Zeichen lang sein.

Als Nächstes musst Du Dir einen Host Name für Deinen fli4l-Router überlegen. Der Host Name muss einzigartig sein, darf also von keinem anderen Client im Netzwerk verwendet werden und auch nicht gleich lauten wie ein Device oder die Domäne des Routers, da es sonst zu Problemen bei der Namensauflösung kommt. Der Host Name sollte auch nicht gleich der Variable HOSTNAME aus der config/base.txt Datei sein. Daneben ist so ziemlich Alles möglich. Aber immer bedenken, dass das der Name ist, mit dem Du Deinen fli4l-Router den anderen Clients zur Verfügung stellst. Auf jeden Fall solltest Du den Namen mit dem Administrator des httpDNS Servers und den anderen Benutzern absprechen. Der Host Name wird in der Variablen HTTPDNS_HOSTNAME in der Datei config/httpdns.txt angegeben. Er ist auf allen Servern gleichermaßen gültig. Wie bei Domainnamen darf nur Kleinschreibung und Ziffern, sowie Punkt '.' und Strich '-' verwendet werden.

Damit das Client Programm die aktuelle IP Adresse lokal ermitteln kann, muss man das Device in HTTPDNS_INTERFACE angeben, mit dem man ins WWW geht. Das ist im Fall eines externen DSL-Modems oder eines reinen Routers meist 'eth1'. Im Zweifelsfall einfach ein Wenig probieren bis im Webinterface unter "Synchronisation" die richtige aktuelle IP Adresse angezeigt wird.
Wenn HTTPDNS_INTERFACE leer gelassen wird, dann holt sich das Client Programm die IP Adresse vom Server durch eine Spiegelungsabfrage. Dabei sendet der Server die HTTP REMOTE IP, die in der Anfrage vom Client steht. Es ist sinnvoll diese Variante der Ermittlung der IP Adresse zu wählen, wenn der Client hinter einem weiteren Router oder maskierendem Proxy installiert ist.

HTTPDNS_DNSFOLDER gibt an, wo die vom Server empfangenen Einträge auf dem fli4l-Router abgelegt werden sollen. In den meisten Fällen kann man die Grundeinstellung verwenden. Wenn Du aber die Einträge auch nach einem Neustart des Routers (Stromausfall) sofort wieder haben willst, kannst Du auch ein Verzeichnis auf einem physikalischen Laufwerk statt auf der RAMDisk angeben. Bitte dabei beachten, dass dann zwar Du die Einträge der anderen Clients hast, aber höchstwahrscheinlich Dein Router bei der Wiedereinwahl vom ISP eine neue IP Adresse zugewiesen bekommen hat. Solange Du also nicht mit dem Server oder den Servern synchronisierst versuchen die anderen Client Deinen Router über die alte IP Adresse zu erreichen.

Die gewünschte Anzahl Server muss in HTTPDNS_SERVER_N eingetragen werden. Die meisten übrigen Einstellungen können für jeden Server separat erfolgen.

In HTTPDNS_SERVER_%_NAME wird die URL des Servers angegeben. Das ist meistens etwas in der Art "members.myprovider.de/vorname.nachname" oder im Fall, dass Du eine eigene Domain eintragen hast lassen einfach "www.mydomain.de". In beiden Beispielen muss das Server Programm direkt im home Verzeichnis des Webservers liegen. Das ist recht unelegant und beim Betrieb mehrerer httpDNS Server auch nicht möglich, weil diese getrennte Verzeichnisse brauchen. Es empfiehlt sich also das Sever Programm in einem Unterverzeichnis - zum Beispiel "httpdns" abzulegen. Die Server URL verändert sich dadurch natürlich zu "members.myprovider.de/vorname.nachname/httpdns" beziehungsweise "www.mydomain.de/httpdns". Es lassen sich beliebige Verzeichnisse angeben. Dadurch kann ein Server im Verzeichnis "httpdns-vpn" und ein anderer im "lan-party" auf demselben Webspace betrieben werden. Die Server arbeiten dabei voneinander unabhängig.

Für jeden Server kann man mit HTTPDNS_SERVER_%_IPUP extra angeben, ob der Router und der Server nach dem Verbindungsaufbau (IP-up Ereignis) mit dem ISP miteinander automatisch synchronisiert werden sollen. Vor Allem bei Wählleitungen empfiehlt sich diese Option für zumindest die wichtigsten Server zu aktivieren. Bei Standleitungen und direkten Verbindungen ins WWW kann es vereinzelt zu Problemen kommen, wenn der ISP dem Anschluss erst nach einer gewissen Zeit (einige Sekunden, bis zu einigen Minuten) eine gültige IP Adresse zuweist.

HTTPDNS_SERVER_%_DNSFILE legt fest in welchem Verzeichnis und mit welchem Dateinamen auf dem Webserver die DNS Einträge gespeichert werden. Die Pfadangaben gelten relativ zum Home Verzeichnis auf dem Webserver. Man kann auch für mehrere Server dieselbe DNS Datei verwenden. Allerdings kann ich mir dafür keine Anwendung vorstellen, weil dann alle Server dieselbe Antwort auf Anfragen liefern. Und wozu hat man dann überhaupt mehrere Server? Wird keine Angabe gemacht, nimmt der Server die Grundeinstellung 'httpdns.dns' an, verwendet also das aktuelle Server Verzeichnis (nicht das Home Verzeichnis!).
Mit HTTPDNS_SERVER_%_LOGFILE verhält es sich ganz ähnlich. Die Variable gibt den Namen und den Pfad zur Log Datei auf dem Server an. Wenn die Variable allerdings leer gesetzt wird, wird überhaupt kein Log erstellt. Im Log werden alle Ereignisse den Server betreffend festgehalten. Er dient in erster Linie zur Fehlerbehebung. Für den normalen Server Betrieb empfehle ich den Log auszuschalten (HTTPDNS_SERVER_%_LOGFILE=''), weil der Log nur unnötig Platz verbraucht und zudem alle Zugriffe auf den Server im Klartext anzeigt. Auch hier kann man für mehrere Server eine Log Datei angeben. Allerdings wird in den Log nicht mit eingetragen von welchem Server die Zeile stammt.

Variable
Grundeinstellung
Beschreibung
Erlaubte Werte
Beispiel
Pflicht
OPT_HTTPDNS
'no'
Aktiviert durch setzen auf 'yes' das httpDNS Paket.
yes oder no
'yes'
Ja
HTTPDNS_INTERFACE
''
Device über das ins WWW geroutet wird. Das ist meist ein Ethernet Interface oder eine ISDN-Karte. Wird für die Ermittlung der aktuellen IP Adresse benötigt. Wenn leergelassen wird die IP Adresse vom Server abgefragt.
alle NIC und PPP Devices
'eth1'
Nein
HTTPDNS_HOSTNAME
''
Einzigartiger Name für den fli4l-Router, durch den er für andere Clients erreichbar ist. ACHTUNG: Der Name wird automatisch in Kleinschreibung konvertiert!
a-z, 0-9, '-', '@', '_', '!' und '.'
'hunter99'
Ja
HTTPDNS_DNSFOLDER
'/var/run/httpdns'
Verzeichnis auf dem Client in dem die von Servern empfangenen Daten abgelegt werden. Wenn das Verzeichnis nicht auf der RAMDisk liegt sind die Daten der letzten Synchronisation nach dem Neustart des Routers wieder verfügbar.
absoluter Pfad
'/boot/httpdns'
Ja
HTTPDNS_SERVER_N
'0'
Anzahl Server, die verwendet werden soll.
alle Zahlen
'1'
Ja
HTTPDNS_SERVER_%_NAME
''
URL des n'ten Servers. Muss auf das Verzeichnis in dem das Server Programm liegt zeigen. Der Dateiname des Server Programms wird automatisch angehängt.
URL (HTTP)
'members.myprovider.de/vorname.nachname/httpdns/sub/folder' Ja
HTTPDNS_SERVER_%_KEY
''
Schlüssel für den n'ten Server. Der Server Schlüssel muss auf allen Clients eingerichtet sein, die den Server benutzen.
bitte Generartor benutzen!
'iAZoUkX!v0@V_flg5BLyPwuHTFbK3R9xaIYEGJnqp'
Ja
HTTPDNS_SERVER_%_IPUP
'no'
Soll bei der Einwahl beim ISP automatisch synchronisiert werden?
yes oder no
'yes'
Nein
HTTPDNS_SERVER_%_DNSFILE 'httpdns.dns'
Den Dateinamen der auf dem Server für die Ablage der DNS Einträge verwendet werden soll hier angeben. Das Verzeichnis wird auf dem Webserver beim ersten Start des Servers automatisch angelegt.
Dateiname mit oder ohne Pfad
'subfolder/httpdns.log'
Nein
HTTPDNS_SERVER_%_LOGFILE ''
Wenn Aktivitäten auf dem Server mitgeschrieben werden sollen, dann hier den Dateinamen der Log-Datei angeben. Das Verzeichnis wird auf dem Webserver beim ersten Start des Servers automatisch angelegt. Dateiname mit oder ohne Pfad 'subfolder/access.log'
Nein
HTTPDNS_SERVER_%_LOGLEVEL
'5'
Angabe darüber, wie detailliert der Log durch das Server Programm sein soll. '9' ist sehr ausführlich, während '0' das Log komplett ausschaltet.
0-9
'0'
Nein

Wie geht es weiter?
Wenn eine MySQL Datenbank für die Speicherung der DNS und log Daten verwendet werden soll, gibt es Näheres dazu unter Einrichten einer MySQL Datenbank für die Datenspeicherung
Wenn man über einen FTP Zugang zum Webspace verfügt, kann man die automatische Installation des Server Programms einrichten. Mehr dazu im Kapitel FTP Hochladen einrichten (optional)
Wenn man den FTP Zugang schon eingerichtet hat, kann man die automatische Server Programm Installation starten. Mehr dazu im Kapitel Automatische Installation des Server Programms
Wenn man das Server Programm manuell einrichten will, findet man mehr zum Thema im Kapitel Manuelle Installation des Server Programms

Einrichten einer MySQL Datenbank für die Datenspeicherung

Wenn eine MySQL Datenbank zur Verfügung steht, sollte überlegt werden diese an Stelle externer Dateien für die Ablage der DNS und/oder Log Daten zu nutzen. MySQL bietet zusätzliche Sicherheit durch die Passwortsicherung der Daten und ist gewöhnlich auch schneller als ein Dateizugriff, was die Antwortzeit des Servers insgesamt reduziert.

Die Datenbank muss nicht unbedingt auf demselben Server gehostet werden, auf dem das httpDNS Server Programm installiert ist. Jeder MySQL Server ist nutzbar. Notwendig ist lediglich die Konfiguration der entsprechenden Variablen, sodass das Server Programm sich an MySQL anmelden kann. Die Nutzung von MySQL kann für jeden httpDNS Server getrennt eingerichtet werden.

Hinweis: Das Server Programm erzeugt keine Datenbanken, sondern nur Tabellen. Bitte daher vor dem Hochladen des Server Programmes sicherstellen, dass die Datenbank existiert!

Variable
Grundeinstellung
Beschreibung Erlaubte Werte
Beispiel
Pflicht mit MySQL
HTTPDNS_SERVER_%_MYSQL
'no'
Aktiviert MySQL für diesen Server.
'yes' oder 'no'
'yes'
Ja
HTTPDNS_SERVER_%_MYSQL_SERVER
'localhost'
URL zum MySQL server.
URL mit oder ohne Portangabe
'localhost' or 'localhost:3306'
Ja
HTTPDNS_SERVER_%_MYSQL_USER
''
Benutzername für die MySQL Server Anmeldung.
alle 'username'
Ja
HTTPDNS_SERVER_%_MYSQL_PWD
''
Password für die MySQL Server Anmeldung.
alle
'password'
Ja
HTTPDNS_SERVER_%_MYSQL_DB
''
Der Name der Datenbank, die benutzt werden soll. Auf Grund der Restriktionen auf vielen Servern muss die Datenbank manuell eingerichtet werden.
alle
'mydb01'
Ja
HTTPDNS_SERVER_%_MYSQL_DNSTABLE
'httpDNS_DNS'
Name der Tabelle für die DNS Informationen. Alle Tabellen werden von httpDNS automatisch erzeugt.
a-z, A-Z, 0-9, '_' und '$', keine Leerzeichen, max. 64 Zeichen
'my_dns_table'
Nein (siehe unten)
HTTPDNS_SERVER_%_MYSQL_LOGTABLE
'httpDNS_Log'
Name der Tabelle für die Log Informationen. Alle Tabellen werden von httpDNS automatisch erzeugt. a-z, A-Z, 0-9, '_' und '$', keine Leerzeichen, max. 64 Zeichen 'my_log_table'
Nein (siehe unten)

httpDNS erlaubt es festzulegen, ob man beide Arten Daten (DNS und Log Daten) oder nur eine Art Daten mit MySQL speichern will. Die Variablen HTTPDNS_SERVER_%_MYSQL_DNSTABLE und HTTPDNS_SERVER_%_MYSQL_LOGTABLE bestimmen das Verhalten. Wenn MySQL aktiviert und die zugehörige Tabellen-Variable festgelegt ist, wird das Server Programm MySQL für die Speicherung der Daten benutzen. Wenn die Tabellen-Variable leer bleibt, wird eine extene Datei benutzt.

Inhalt der Variable
DNS Daten in

HTTPDNS_
SERVER_%_
DNSFILE
HTTPDNS_
SERVER_%_
MYSQL
HTTPDNS_
SERVER_
%_MYSQL_
DNSTABLE
Lokale Datei
MySQL DB
Bemerkung
leer
'no'
gleichgültig
Ja
Nein
Voreingestellter Dateiname
festgelegt
'no'
gleichgültig Ja
Nein

leer
'yes'
leer
Ja
Nein
Voreingestellter Dateiname
festgelegt
'yes'
leer
Ja
Nein

leer
'yes'
festgelegt Nein
Ja

festgelegt
'yes'
festgelegt
Nein
Ja
Warnung während Build
Inhalt der Variable
Log Daten in

HTTPDNS_
SERVER_%_
LOGFILE
HTTPDNS_
SERVER_%_
MYSQL
HTTPDNS_
SERVER_
%_MYSQL_
LOGTABLE
Lokale Datei
MySQL DB
Bemerkung
leer
'no'
gleichgültig
Nein
Nein
Logging deaktiviert
festgelegt
'no'
gleichgültig Ja
Nein

leer
'yes'
leer
Nein
Nein
Logging deaktiviert
festgelegt
'yes'
leer
Ja
Nein

leer
'yes'
festgelegt Nein
Ja

festgelegt
'yes'
festgelegt
Nein
Ja
Warnung während Build

FTP Hochladen einrichten (optional)

Das Hochladen des Server Programms auf den Webspace über FTP erfordert die Eingabe von einer ganzen Reihe von Befehlen. Das ist eine lästige Sache, weil man sicher irgendeinen Befehl vergisst und dann garnichts geht, bis man sich wieder neu eingeloggt hat. Um den Vorgang zu vereinfachen habe ich die ganze Prozedur in das httpd Webinterface integriert. Damit der Automatismus aber läuft, braucht er noch einige zusätzliche Angaben. Diese Variablen werden nur für das Hochladen des Server Programms verwendet. Wenn man das Hochladen selbst übernimmt, braucht keine der Variablen gesetzt zu werden. Die Variablen brauchen auch nicht auf jedem Client angegeben werden, sondern nur auf dem des Server Administrators. Also nur auf dem Router, über den der Server im Webspace installiert und gewartet wird.

Variable
Grundeinstellung
Beschreibung
Erlaubte Werte
Beispiel
Pflicht
HTTPDNS_SERVER_%_FTPURL
''
Adresse über die der FTP Zugang erreicht werden kann.
URL (FTP)
'ftp.myprovider.de'
Nein
HTTPDNS_SERVER_%_FTPUSER ''
FTP Benutzername wie er vom Webspace Provider vergeben wurde.
a-z, 0-9, '-' und '.' 'vorname.nachname'
Nein
HTTPDNS_SERVER_%_FTPPWD
''
FTP Passwort.
alle Werte
'password'
Nein
HTTPDNS_SERVER_%_FOLDER
''
Unterverzeichnis auf dem Webserver, in dem der Server laufen soll. Das Unterverzeichnis muss über den in HTTPDNS_SERVER_%_NAME angegebenen Pfad erreichbar sein.

'httpdns/sub/folder'
Nein

Einrichten des Zugriffs durch Passwort

In machen Situationen ist kein Verschlüsselungsmodul verfügbar um eine Abfrage für die Synchronisation zu berechnen. Zum Beispiel alleinstehende PCs oder andere Router als fli4l (so dumm es klingt, aber soll noch einige geben ;-) ) sind nicht in der Lage IP-Adressen auf einem httpDNS Server zu aktualisieren. Dem kann abgeholfen werden, wenn ein spezielles Passwort definiert wird, mit dem ohne verschlüsselte Abfrage aktualisiert werden kann. Das Passwort kann frei gewählt werden und erlaubt nur das Hinzufügen von Hostnamen in die Datenbank des Servers und das Aktualisieren von IP-Adressen in der Datenbank. Weder eine Information zu irgendeinem Host kann abgefragt, noch ein Log angezeigt werden.

Einige Hardware Router und Modems unterstüzten auch DDNS (DynDNS). Um diese Funktionen zusammen mit httpDNS nutzen zu können, muss der Router oder das Modem einen "Benutzerdefiniertes DDNS" Eintrag haben. So kann man eine frei definierte DDNS Server Adresse (URL) eintragen, statt nur die üblichen, vordefinierten auszuwählen. Die URL für httpDNS sollte etwa wie folgt aussehen:

www.tiger.adm24.eu/httpdns-test/httpdns.php?hostname=DEINHOSTNAME&password=DEINPASSWORT

Wie zu sehen wird keine IP mit gesendet. Das geschieht aus Sicherheitsgründen. Das Server Programm verwendet ausschließlich die IP Adresse von der aus die Abfrage gesandt wurde. Auf diese Weise ist eine Veränderung der IP-Adresse nicht beliebig möglich und "Spoofing" erschwert. Aber immer daran denken, dass alle Informationen unverschlüsselt übertragen werden und jeder der das Passwort kennt IP-Adressen ändern und Hosts hinzufügen kann.

Variable
Grundeinstellung
Beschreibung
Erlaubte Werte
Beispiel
Pflicht
HTTPDNS_SERVER_%_PASSWORD
''
Zugriff per Passwort auf den Server durch die Angabe eines Passwortes einschalten.
alle Werte
'5hDdfg2aLsf'
Nein

Festlegen der Lebendauer von Host Einträgen

Möglicherweise synchronisieren manche Hosts nicht häufig genug, um immer eine gültige IP auf dem Server hinterlegt zu haben. Es ist eher mühsam, wenn Du versuchst einen solchen Host zu kontaktieren und immer nur Fehlermeldungen bekommst. Um diese Art von Problemen zu vermeiden, kann einen Lebensdauer für Host Einträge definiert werden. Wann immer das Server Programm ausgeführt wird, wird dann überprüft, ob irgendwelche Host Einträge älter als die angegebene Zahl von Stunden sind und automatisch alle diese veralteten Einträgt gelöscht.

Variable
Grundeinstellung
Beschreibung
Erlaubte Werte
Beispiel
Pflicht
HTTPDNS_SERVER_%_LIFETIME
'0'
Anzahl Stunden, bis Hosts aus der Server Datenbank gelöscht werden, wenn sie nicht aktualisiert werden. '0' schaltet das automatische Löschen aus.
0 bis 65535
'8770'
Nein

Du kannst diese Funktion auch dafür benutzen, um zu überprüfen, ob ein Host online ist. Dafür musst Du auf dem Host easycron dafür einrichten, periodisch (zum Beispiel alle 55 Minuten) zu synchronisieren. Das verursacht keinen merklichen Datenverkehr. Richte Deinen Server mit einer Lifetime von '1' ein. Wenn Du dann den Server per Abfrage Link nach einem Host abfragst und als Antwort 'N/A' erhältst, dann ist der Host seit einiger Zeit offline.

Buttons im Webinterface

Symbol
Name
Beschreibung
Siehe Kapitel
httpdns_sync.gif
Synchronisieren
Startet die Synchronisation mit dem Server, neben dem das Symbol angezeigt wird.
Synchronisierung mit dem Server
httpdns_syncall.gif
Alle DNS synchronisieren
Starte die Synchronisation mit allen Servern.
Synchronisierung mit dem Server
httpdns_viewlog.gif
Log anzeigen
Zeit die Log Datei des Servers an.
Administration des Servers
httpdns_clearlog.gif
Log löschen
Leert die Log Datei auf dem Server.
Administration des Servers
httpdns_manual.gif
Manuell einrichten
Startet die Konfiguration des Server Programmes für die manuelle Server Installation.
Manuelle Installation des Server Programms
httpdns_upload.gif
Programm hochladen
Startet das automatische Hochladen des Server Programmes. Automatische Installation des Server Programms
httpdns_linkgen.gif Abfrage-Links generieren
Erzeugt eine Liste von http Verweisen, mit denen die IPs einzelner Hosts abgefragt werden können.
Generieren von Abfrage-Links
httpdns_linkgen.gif Host Eintrag löschen
Einen einzelnen Hostnamen vom Server löschen.
Löschen von Host Einträgen

Automatische Installation des Server Programms

Wenn die alle drei Variablen (HTTPDNS_SERVER_%_FTPURL, HTTPDNS_SERVER_%_FTPUSER und HTTPDNS_SERVER_%_FTPPWD) für den FTP Zugang gesetzt sind wird im httpd Webinterface im Reiter "Administration" neben jedem Server Namen statt dem Button "Manuell einrichten" der Button "Programm hochladen" angezeigt. Ein Klick auf den Button genügt, um das Server Programm mit der aktuellen Konfiguration auf den Webspace zu übertragen. Damit man weiß, ob Alles geklappt hat, werden das Ergebnis der Übertragung, sowie die Antworten des FTP Webservers anschließend in einem Fenster angezeigt. Bitte die Antworten genau durchschauen, denn das Programm kann nicht alle möglichen Fehler erkennen und zeigt unter Umständen "Erfolgreich" an, obwohl die Übertragung nicht erfolgreich war. Alles hat Grenzen ;-)

Will man die Konfiguration des Servers ändern braucht man nur die entsprechenden Variablen neu einstellen und das "Programm hochladen" starten.

Manuelle Installation des Server Programms

Wenn der für den Server verwendete Webspace keinen FTP Zugang hat oder man die Installation des Servers einfach selbst in die Hand nehmen will, ist das auch kein Hindernis. Nachdem man die wichtigsten Variablen des Servers konfiguriert hat, wird im httpd Webinterface im Reiter "Administration" neben jedem Server Namen der Button "Manuell einrichten" angezeigt. Ein Klick auf den Button zeigt ein Info-Fenster an, in dem man die einzelnen Schritte der Installation noch einmal zusammengefaßt bekommt. Essentiell ist der im Fenster angezeigte Link auf die Server Programm Datei, die eigens nach den Spezifikationen in den Variablen zusammengestellt wurde. Diese Datei muss man erst einmal vom Router auf den jeweiligen Rechner, an dem man sitzt herunterladen.

Danach kann man sich in den Webserver einloggen und das Verzeichnis für den Server erstellen, sofern man eines in HTTPDNS_SERVER_%_NAME angegeben hat. In das Verzeichnis kopiert man die Server Programm Datei. Handelt es sich bei dem Webspace um einen Unix Server, dann muss das Server Programm als "ausführbar" gekennzeichnet werden. Das geschiet mit dem Befehl "chmod 755 httpdns.php". Uuuuuund fertig!

Synchronisierung mit dem Server

Die Synchronsisation erfolgt automatisch nach der Einwahl beim ISP, wenn für den Server HTTPDNS_SERVER_%_IPUP aktiviert wurde.

Während der Router online ist, kann die Synchronisation auch über das httpd Webinterface oder über die Kommandozeile des Routers händisch ausgelöst werden. Es werden dafür im Webinterface Reiter "Synchronisation" in den Fenstern Buttons angezeigt. Im jeweiligen Fenster des Servers gibt es ein Button "Synchronisieren" mit dem genau dieser eine Server synchronisiert werden kann. Will man gleich alle Server auf einmal synchonisieren, dann bitte dazu den Button "Alle DNS synchronisieren" ganz oben im Fenster "Aktuelle IP Adresse" verwenden. Der Erfolg oder die Fehlermeldung der Synchronisation wird in einer Übersicht angezeigt.

Wie die Synchronisation von der Kommandozeile aus erfolgt kannst Du im Kapitel Aufruf des Client Programms von der Kommandozeile aus nachlesen.

Generieren von Abfrage-Links

Damit der httpDNS Server auch unabhängig von fli4l abgefragt werden kann, können mit dem Button "Abfrage-Links generieren" Links für jeden am Server registrierten Host erzeugt werden. Jeder Link ist zeitlich unbeschränkt für beliebig viele Abfragen jeweils eines Host-Eintrags auf einem Server gültig. Auf Grund der Verschlüsselung ist es nicht einfach möglich durch Modifikation des Links auf die übrigen am Server gespeicherten Daten zuzugreifen. Die Server Sicherheit wird durch die Links also nicht kompromittiert.

Jeder Link kann entweder direkt in die Adreßzeile eines Browsers eingegeben werden, oder als <IFRAME> in eine Webseite integriert werden. Der Server antwortet dann mit einer unformatierten HTML Seite, auf der ohne weitere Angaben nur die IP Adresse des Hosts steht.

Die aktuelle IP lautet:
<IFRAME src="http://www.tiger.adm24.eu/httpdns-test/httpdns.php?query=oHdADfKVvZh.tczmGONilqjaJE_01xPCQRIFTr3w7t4pFQjC|Gd2n0.a6vDxPumKkAY
">
    Server nicht erreichbar
</IFRAME><br>


Obiges Beispiel zeigt die aktuelle IP auf der Webseite in einem Rahmen an, oder den Text "Server nicht erreichbar", wenn die Link-Adresse ungültig ist. Wenn der Host für den der Link generiert wurde auf dem Server nicht mehr registriert ist wird statt der IP Adresse der Text "N/A" vom Server ausgegeben.

Die <IFRAME> Anweisung unterstützt auch einen class Parameter mit dessen Hilfe Rahmen und Inhalt in einem Cascading Style Sheet (CSS) formatiert werden können. Die IP ist dabei unmittelbar Teil des body des Rahmens.

Löschen von Host Einträgen

In manchen Fällen (zum Beispiel wenn ein Host umbenannt wird) ist es notwendig, Host Einträge vom Server zu löschen. Um das für Dich zu vereinfachen, findest Du im Administrator Reiter des Webinterface eine Schaltfläche neben jedem Server auf dem httpDNS 1.2.0 oder höher läuft. Wenn Du auf die Schaltfläche klickst, dann werden vom Server alle Hostnamen abgerufen und in einer Liste mit einem X daneben angezeigt. Klicke einfach auf das X neben dem Hostnamen, den Du vom Server löschen möchtest.

Beachte, dass Du danach noch einmal mit dem Server synchronisieren musst, um den Eintrag auch vom lokalen Router zu löschen!

Server Dateien auf dem Webserver

Das Server Programm beinhaltet nach der Bereitstellung durch das Webinterface (Client Programm) alle für den Betrieb notwendigen Daten, außer den DNS Einträgen. Ursprünglich habe ich das Server Programm zur Nutzung einer externen Konfigurationsdatei programmiert. Das hat aber keinen Sinn gemacht, weil sich durch das Einlesen der Datei jedes Mal nur die Abfragezeit verlängert hat und sowieso niemand die Konfigurationsdatei am Webspace händisch ändert, wenn er das mit ein paar Klicks vom httpd Webinterface aus auch tun kann. Damit war das All-in-One Server Programm geboren.

Wenn man die DNS Einträge auf dem Server zurücksetzten will, reicht es die DNS Datei zu löschen. Der Server beginnt dann wieder bei Null. Die Log Datei kann man einfacher über das Webinterface zurücksetzen.

Dem Server Programm ist es übrigens egal, in welchem Verzeichnis es sich befindet. Man kann also das Server Programm durchaus händisch auf dem Webspace in ein anderes Verzeichnis verschieben. Man muss nur die Pfade zur DNS Datei und Log Datei sicherstellen, da diese sonst neu angelegt werden. Wenn für die Dateien spezielle Pfade in HTTPDNS_SERVER_%_DNSFILE und HTTPDNS_SERVER_%_LOGFILE angegeben wurden, sollten die Dateien dort bestehen bleiben. Andernfalls müssen die beiden Dateien zusammen mit dem Server Programm mit verschoben werden.

Beschreibung
Üblicher Dateiname
Übliches Verzeichnis
Dateiformat
Server Programm
httpdns.php
-
Text, PHP4
DNS Datei
httpdns.dns
wie Server Programm oder wie in HTTPDNS_SERVER_%_DNSFILE angegeben
Text, codiert
Log Datei
httpdns.log
wie Server Programm oder wie in HTTPDNS_SERVER_%_LOGFILE angegeben
Text

Administration des Servers

Normalerweise braucht der Server nicht gesondert gewartet zu werden. Die Verwaltung der DNS Einträge übernimmt vollständig der Server. Lediglich wenn ein Rücksetzen der DNS Tabelle gewünscht wird, muss man die DNS Datei am Server händisch löschen. Ich habe ganz bewusst kein Button dafür in das httpd Webinterface mit eingebaut, weil ein ungewolltes Rücksetzen der DNS Tabelle die Stabilität des Netzwerks gefährd

Für die Verwaltung der Log Datei stehen im httpd Webinterface Reiter "Administration" die Buttons "Log anzeigen" und "Log löschen" neben dem Server Namen zur Verfügung. Die Log Datei Anzeige erfolgt ungefiltert. Nach dem Löschen der Log Datei ist der erste Eintrag in der neuen Datei immer, wer den Log gelöscht hat.

Wenn an der Konfiguration des Server etwas geändert werden soll (zum Beispiel ein neuer Schlüssel für den Server), dann genügt es das neu konfigurierte Server Programm Datei auf den Webspace zu spielen. Die DNS Einträge auf dem Server bleiben dabei erhalten.

Benanneter Administrator

Um zu verhindern, dass andere Benutzer den Server Log oder Host Einträge löschen, kannst Du für den Server einen Administrator per Hostnamen benennen. Wenn das Server Programm mit einem Clear Log oder Kill Host Befehl aufgerufen wird, überprüft es, ob der Befehl von der selben IP Adresse kommt, mit der Hostname des Administrators in der Datenbank eingetragen ist. Wenn die IP Adresse des Befehls und die IP Adresse des Administrators nicht übereinstimmen, wird der Befehl nicht ausgeführt, sondern eine Fehlermeldung ausgegeben.

Diese Prozedur ist nicht vollkommen sicher, aber sie verhindert zumindestens, dass Benutzer "unabsichtlich" Daten auf dem Server löschen. Natürlich kann jede IP Adresse manipuliert werden ...

Variable
Grundeinstellung
Beschreibung
Erlaubte Werte
Beispiel
Pflicht
HTTPDNS_SERVER_%_ADMIN
''
Hostname des Administrators des Servers. Verhindert das Löschen von Daten auf dem Server durch andere Benutzer. '' schaltet die Überwachung aus.
a-z, 0-9, '-', '@', '_', '!' and '.' 'herrscher'
Nein

Setzen der Benutzerrechte für den Client

Das Paket httpDNS ist so programmiert, dass es die Rechteverwaltung durch das Paket httpd unterstützt. Für nähere Informationen wie die Rechteverwaltung funktioniert bitte die Anleitung um httpd Paket lesen. Bitte berücksichtigen, dass ohne besondere Einträge in die Benutzerrechteverwaltung Jeder Alles darf.

Der Bereich zum Setzen von Benutzerrechten für das Paket httpDNS heisst - man glaubt es nicht - 'httpdns' ;-) .

Rechte Eintrag für den Benutzer
Schlüsselgenerator
DNS Tabelle anschauen
Synchronisieren
Programm hochladen
Server Log ansehen & löschen
Protokoll anzeigen
'httpdns:'
Nein
Nein
Nein
Nein
Nein
Nein
'httpdns:view'
Ja
Ja
Nein
Nein
Nein
Nein
'httpdns:view,sync'
Ja
Ja
Ja
Nein
Nein
Nein
'httpdns:view,sync,admin' oder 'httpdns:all' oder einfach ''
Ja
Ja
Ja
Ja
Ja
Ja

Aufruf des Client Programms von der Kommandozeile aus

Das Client Programm ist - wie oben beschrieben - ein Shell Script. Das heißt man kann es direkt von der Kommandozeile des fli4l Routers aufrufen. Auf diese Weise lässt sich das Paket httpDNS leicht von anderen Programmen aus automatisieren. Ein Beispiel dafür ist, mit easycron zeitgesteuert Synchronisationen durchzuführen.

Dem Client Programm muss über Parameter ein Auftrag mitgeteilt werden, also was es zu tun hat. Es können pro Aufruf beliebig viele Parameter übergeben werden, jedoch wir jeder Server nur einmal synchronisiert, auch wenn er mehrfach angegeben wurde. Ebenso wird beim Anhängen von '1 --update' zum Synchronisieren mit dem Server Nummer 1 die Hosts Datei nur einmal aktualisiert (wie bei jeder Synchronisation).

Parameter
Beschreibung
Beispiel
-a, --all
Mit allen konfigurierten Servern synchronisieren und die hosts.httpdns Datei aktualisieren.
/srv/www/admin/httpdns.cgi -a
-h, --help
Anzeigen der Hilfe und Programm Version.
/srv/www/admin/httpdns.cgi -h
-i, --ipup
Mit allen Servern synchronisieren, für die HTTPDNS_SERVER_%_IPUP='yes' eingetragen wurde. Danach hosts.httpdns Datei aktualisieren.
/srv/www/admin/httpdns.cgi -i
-u, --update
Nur die hosts.httpdns Datei aktualisieren ohne vorherige Synchronisation. Es werden die zuletzt abgefragten Daten verwendet.
/srv/www/admin/httpdns.cgi -u
-s, --silent Optionaler Parameter. Unterdrückt jegliche Ausgabe auf der Konsole.
/srv/www/admin/httpdns.cgi -a -s
{Server Name}
Nur mit dem angegebenen Server synchronisieren und danach die hosts.httpdns Datei aktualisieren. Der Server muss konfiguriert worden sein. Die angegebene URL muss mit der in HTTPDNS_SERVER_%_NAME übereinstimmen.
/srv/www/admin/httpdns.cgi member.myprovider.de/vorname.nachname
{Server Nummer}
Nur mit dem angegebenen Server synchronisieren und danach die hosts.httpdns Datei aktualisieren. Der Server muss konfiguriert worden sein. Die angegebene Nummer muss mit der durch '%' in HTTPDNS_SERVER_%_NAME dargestellten Nummer übereinstimmen. /srv/www/admin/httpdns.cgi 1 2 3

Kein Parameter zeigt die Hilfe an.
/srv/www/admin/httpdns.cgi

Das Client Programm gibt nach der Beendigung einen Errorlevel von 0 zurück, wenn es erfolgreich ausgeführt wurde, oder einen Fehlerkode, wenn bei der Ausführung ein Fehler aufgetreten ist.

Erweiterte Funktionen mit WGet

NetCat ist ein sehr kleines, handliches Programm, das aber keinen allzu großen Funktionsumfang bietet. Deshalb kann durch setzen der Variablen HTTPDNS_USEWGET='yes' die Verwendung von WGet statt NetCat als Kommunikationswerkzeug eingeschaltet werden. Nicht vergessen OPT_WGET in config/tools.txt einzuschalten! Beachte, dass WGet deutlich mehr Platz auf der Diskette braucht als NetCat.

Einige zusätzliche Funktionen durch die Verwendung von WGet werden in den folgenden Kapiteln beschrieben. Weitere Funktionen werden mit zukünftigen Versionen von httpDNS eingeführt.

HTTP Login

Die meisten Webspaces sind heute so konfiguriert, dass sie .access-Dateien für jedes Verzeichnis benutzen, um Zugriffsrechte zu setzen. Du kannst von dieser Funktion gebrauch machen und so die Sicherheit Deines httpDNS Servers verbessern. Bitte lies die Dokumentation Deines Providers, wie man die .access-Zugriffsbeschränkungen einrichtet. Die Konfigurationssoftware (wie etwa Confixx) der meisten Webspaces macht es sehr einfach die Zugriffrechte zu verwalten. Nachdem Du den Webspave entsprechend konfiguriert hast, lass httpDNS die Login-Informationen durch die folgenden Variablen wissen. Du kannst eigene Logins für jeden Server einrichten.

Variable Beschreibung
Erlaubte Werte
Beispiel
HTTPDNS_SERVER_%_HTTPUSER
Benutzername für das login in das Verzeichnis am Webspace.
alle Werte
'httpdns'
HTTPDNS_SERVER_%_HTTPPWD Das Passwort für den Zugang zum Verzeichnis am Webspace.
alle Werte
'iO02Dq_yasE2'

Windows Client Programm

Da httpDNS für die Ausführung unter Linux-basierenden Betriebssystemen konzipiert ist, ist ein eigenes Programm für MS Windows verfügbar, um die grundlegenden Funktionen eines httpDNS Servers zu erreichen. Beachte aber, dass das Windows Client Programm nicht als Ersatz für die fli4l Weboberfläche für httpDNS, sondern für das Synchronisieren von IP Daten eines Netzwerks ohne fli4l Router mit denen fli4l-gerouteter Netzwerke gedacht ist. Das Programm ist also mehr eine Erweiterung als ein Ersatz.

Das Programm ist mit dem Opt httpDNS gebündelt und befindet sich im Unterverzeichnis 'windows\opt\httpdns' Deines fli4l-Verzeichnisses. Es besteht aus einem AutoIt3 Skript mit allen Quellkodes und einer einzelnen Alles-in-Einem-EXE-Datei. Die EXE-Datei kann ohne vorherige Installation direkt gestartet werden. Das Windows Client Programm benötigt keine weiteren Programme und verwendet nur Teile des Betriebssystems, die sehr wahrscheinlich auf allen Windows PCs zu finden sind. Der MS Internet Explorer ist nicht erforderlich.

Anmerkung: Leider funktionieren mit Windows 95, 98 und ME die für den Datenaustausch mit dem Server Programm erforderlichen COM Bibliotheken nicht. Das Windows Client Programm kann daher unter diesen Betriebssystemen nicht gestartet werden.

Abspeichern von Einstellungen und das Arbeiten mit Profilen

Alle Einstellungen werden in der MS Windows Registrierung an Stelle von Dateien gespeichert, um Problemen mit den Dateizugriffsrechten zu verhindern. Deshalb solltest Du sicher stellen, dass Du ausreichende Rechte hast Daten in die Registrierung zu schreiben, und dass in der Antivirus-Software das Windows Client Programm von der Registrierungszugriffsperre ausgenommen ist, wenn Du das Programm ausführst. Wenn Du die Einstellungen in eine Datei sichern möchtest, kannst Du den RegEdit von MS Windows benutzen, um alle Daten aus 'HKEY_CURRENT_USER\SOFTWARE\httpDNS' zu exportieren.

Weil alle Einstellungen inklusive Paßwörter als lesbarer Text gespeichert werden, werden sie in 'HKEY_CURRENT_USER\*' statt in 'HKEY_LOCAL_MACHINE\*' geschrieben. Auf diese Weise ist zumindest ein gewisser Grad an Sicherheit gegen Paßwortklau und Modifikation durch andere Benutzer des Computers gewährleistet. Wenn Du die Einstellungen mit anderen Benutzern teilen möchtest, dann musst Du sie mit RegEdit aus Deiner HKCU exportieren und die Datei an die anderen Benutzer zum Import in deren HKCU verteilen.

Die Einstellungen werden in frei benennbaren Profilen abgelegt. Jedes Profil enthält alle Informationen jedes Feldes des Windows Client Fensters. Um ein neues Profil zu erzeugen, brauchst Du nur den gewünschten Profilnamen in das Listenfeld ganz oben im Fenster eintragen und den Knopf 'Merken' rechts daneben drücken. Profile können überschrieben werden, in dem man sie mit dem selben Namen abspeichert. Beim Start lädt das Windows Client Programm automatisch das zuletzt gespeicherte Profil.

Um die Einstellungen eines Profils wiederherzustellen, brauchst Du nur das Profil in der Auswahl des Listenfelds anklicken. Wähle '<Neues Profil>', um alle Felder zu leeren und mit der Erstellung eines neuen Profils zu beginnen. Nicht vergessen das Profil zu benennen und die Einstellungen durch einen Klick auf 'Merken' abzuspeichern.

Synchronisieren

Die IP Daten auf dem Server können über den Reiter 'Synchronisieren' aktualisiert werden.

Feld
Beschreibung
Erlaubte Werte Beispiel
Server URL
HTTP Adresse des Server Programms, so wie sie in HTTPDNS_SERVER_%_NAME steht.
jede URL
http://www.tiger.adm24.eu/httpdns-test
Hostname
Name mit dem das lokale Netzwerk auf dem Server repräsentiert wird.
a-z, 0-9, '-', '@', '_', '!' und '.' myhost.network
Password
Das Paßwort aus HTTPDNS_SERVER_%_PASSWORD
a-z, 0-9, '-', '@', '_', '!' and '.' 5hDdfg2aLsf

Nach dem Eintragen aller benötigten Informationen einfach auf 'Senden' klicken, um die Daten auf den Server zu übertragen. Wenn erfolgreich, dann wird ein Fenster mit der synchronisierten IP Adresse angezeigt und das Programm beendet. Im Fall eines Fehlers wird eine Fehlermeldung ausgegeben und das Programm bleibt offen, damit Du die Einstellungen ändern kannst.

Anmerkung: Für das Synchronisieren muss auf dem Server httpDNS 1.1.5 oder höher installiert und bei der Installation HTTPDNS_SERVER_%_PASSWORD gesetzt worden sein.

IPs abfragen

Um eine IP vom Server zu erhalten in den Reiter 'Abfrage' wechseln. Lege fest, was mit der IP nach der Abfrage gemacht werden soll. Das Windows Client Programm kann automatisch eine Textdatei modifizieren und/oder ein externe Programm (zum Beispiel WinOpenVPN oder PuTTY) starten.

Wenn 'Dateiname' festgelegt wurde, dann versucht das Programm alle Stellen mit dem Text in 'Suchen' zu finden und durch den in 'Ersetzen mit' angegeben Text auszutauschen. In beiden Feldern kann der Platzhalter @IP an stelle von IP Adressen verwendet werden. Im Fall von 'Suchen' stellt er eine alte IP Adresse dar, während er in 'Ersetzen mit' für die neu erhaltene IP Adresse steht. Das Feld 'Suchen' kann auch AutoIt3 Regular Expressions (für weitere Informationen dazu suche nach StringRegExp in der AutoIt3 Anleitung unter 'windows\autoit\AutoIt3.chm') verarbeiten. Die Suchen-und-Ersetzen-Routine arbeitet unabhängig von Groß-Klein-Schreibung. In 'Ersetzen mit' stehen auch noch Platzhalter für aktuelles Datum (@DATE) und aktuelle Uhrzeit (@TIME) zur Verfügung.

Wenn eine Befehlzeileneingabe in 'Befehl ausf.' eingetragen ist, wird sie nach dem Modifizieren der Textdatei oder direkt nach dem Erhalt der IP Adresse, wenn keine Textdatei in 'Dateiname' angegeben wurde, ausgeführt. Benutze auch hier den Platzhalter @IP für die neue IP Adresse ('cmd /c ping @IP' beispielsweise versucht den Host anzupingen).

Feld
Beschreibung
Erlaubte Werte Beispiel
Server URL
Link mit verschlüsselter Abfrage. Benutze die httpd Wenoberfläche, um Links zu erzeugen, kopiere einen und füge ihn in das Windows Client Programm ein.
jeder Link, der mit der httpDNS Weboberfläche erzeugt wurde
http://www.tiger.adm24.eu/httpdns-test/httpdns.php?
query=oHdADfKVvZh.tczmGONilqjaJE_01xPCQRIFTr3w7t4pF
QjC|Gd2n0.a6vDxPumKkAY
Dateiname
Name und Pfad einer Textdatei, die mit der übermittelten IP Adresse geändert werden soll. Wenn leer, dann wird keine Datei verändert.
beliebige Textdatei mit voller Pfadangabe
C:\WINNT\system32\drivers\etc\hosts
Suchen
In der Textdatei zu suchender Text. Verwende @IP als Platzhalter für IP Adressen.
jeder Text und auch AutoIt3 Regular Expression
remote='@IP' ; Synchronisiert am [-[:digit:]]* um [:[:digit:]]*
Ersetzen mit
Text, der jede Fundstelle überschreibt. Verwende @IP als Platzhalter für die empfange IP Adresse. Die Platzhalter @DATE und @TIME fügen das aktuelle Datum und die aktuelle Uhrzeit ein. jeder Text
remote='@IP' ; Synchronisiert am @DATE um @TIME
Anfügen
Wenn Anfügen angehakt ist, dann wird der Text in 'Ersetzen mit' an das Textdateiende angefügt, wenn der Text in 'Suchen' nicht in der Datei gefunden wurde.
-
-
Befehl ausf.
Nach der Modifikation der Textdatei oder wenn keine Textdatei angegeben wurde, wird dieser Befehl ausgeführt. Verwende @IP als Platzhalter für die empfange IP Adresse. jeder Kommandozeilenbefehl
cmd /c "C:\Programs\PuTTY\putty.exe root@@IP"   oder
cmd /c "echo @IP > %TEMP%\ip.txt && notepad %TEMP%\ip.txt"

Nach dem Eintragen aller benötigten Informationen einfach auf 'Senden' klicken, um die Abfrage zu starten. Wenn erfolgreich, dann wird das Programm beendet. Im Fall eines Fehlers wird eine Fehlermeldung ausgegeben und das Programm bleibt offen, damit Du die Einstellungen ändern kannst.

Anmerkung: Für die Abfrage von IP Adressen muss auf dem Server httpDNS 1.1.1 oder höher laufen.

Befehlszeilenparameter

Das Windows Client Program verhält sich unterschiedlich je nachdem, mit wie vielen Parametern es aufgerufen wird.
Anz. Parameter
Beschreibung
0
Öffnet das Fenster und lädt das zuletzt gespeicherte Profil.
1
Öffnet das Fenster und lädt das als Parameter angegebene Profil.. Ausnahme: '-h' or '/?' or '--help' öffnet das Hilfe-Fenster.
2
Es wird kein Fenster geöffnet, sondern das im zweiten Parameter angegebene Profil geladen und der als erster Parameter angegebene httpDNS-Befehl ausgeführt.

Beim Aufruf mit zwei Parametern muss der erste Parameter einer der folgenden sein:
1. Parameter Beschreibung
'-s' oder '--sync' oder '/s'
Lädt das im zweiten Parameter angegebene Profil und synchronisiert mit dem Server Programm. Das Windows Client Programm wird ohne Fensteranzeigen beendet, ausgenommen eventueller Fehlermeldungen.
'-q' oder '--query' oder '/q'
Lädt das im zweiten Parameter angegebene Profil und fragt eine IP Adresse vom Server Programm ab. Es modifiziert die Textdatei, wenn 'Dateiname' angegeben wurde, führt den Befehl in 'Befehl ausf.' aus und wird ohne Fensteranzeigen beendet, ausgenommen eventueller Fehlermeldungen.

Das Programm setzt die ERRORLEVEL Umgebungsvariable beim Beenden, sodass andere Programm überprüfen können, ob es erfolgreich ausgeführt wurde (zum Beispiel httpdns.exe -q profile && echo Alles bestens!).

Zum Thema Sicherheit

Die von httpDNS verwendete Verschlüsselung ist für die Anwendung im SOHO (Small Office, Home Office) Bereich durchaus ausreichend. Sie ist sicher nicht unknackbar, aber ein guter Kompromiss zwischen Schutz der Privatsfäre und Bedarf an Rechenzeit. Ich möchte an dieser Stelle ganz bewusst nicht näher auf die Prozedur der Verschlüsselung eingehen. Wer sich für die Verschlüsselung interessiert kann sich ja den Source Code anschauen. Es sei nur soviel gesagt: Der Server Schlüssel wird bei einer DNS Anfrage nicht mit übertragen. Auf diese Weise ist sichergestellt, dass der Schlüssel aus den übermittelten Daten nicht einfach rückgerechnet werden kann. Mit einer großen Anzahl verschlüsselten Abfragedaten ist eventuell möglich Teile des Schlüssels zu rekonstruieren. Deshalb empfehle ich in gewissen Zeitabständen (alle paar Monate, einmal im Jahr) den Schlüssel für jeden Server zu ändern.

Ich möchte betonen, dass die Verschlüsselung für professionellen Einsatz sicher nicht ausreicht. Zudem unterminiert der offene Source Code weitere Möglichkeiten der Absicherung jenseits von Verschlüsselung. Auch ist es für Behörden (BND, NSA) sicher kein Problem einen Schlüssel zu knacken. Und das ist durchaus von mir gewünscht. Ich möchte mit dem Paket auf keinen Fall irgend einer Form von Missbrauch Tür und Tor öffnen.

Weiters ist zu bedenken, dass die DNS Einträge, die Log Datei und das Server Programm mit dem integrierten Server Schlüssel für den Provider einsehbar sind. Auch das ist beabsichtigt. Denn der Webspace Provider haftet nach aktueller Gesetzgebung bei Straftaten mit, bei denen seine Server als "Tatwerkzeuge" verwendet wurden. Dem Provider die Kontrolle zu entziehen wird meist zum Ausschluss aus dem Webspace führen.

Tipp: Um zu verhindern, dass die DNS Datei des Server vom Webspace heruntergeladen werden kann, sollte man sie möglichst versteckt in einem anderen Verzeichnis als das Server Verzeichnis unterbringen. Eine gute Idee ist auch den Zugriff auf das Verzeichnis per htaccess Datei zu limitieren.

Deinstallation des Server Programms

Wenn ein Server nicht mehr benötigt wird, brauchen nur die Server Programm Datei, die DNS Datei und die Log Datei vom Webserver gelöscht zu werden. Das Löschen muss manuell über den Zugang zum Webserver erfolgen. Die serverspezifischen Variablen sollten auch aus der Datei config/httpdns.txt genommen werden.

Erwähnt sei noch, dass für die Änderung der Konfiguration oder des Schlüssels der Server nicht deinstalliert werden muss.

Fehlerbehebung

Ich bin bemüht meine Programme so fehlerfrei wie möglich zu halten. Es ist trotz großer Bemühungen meinerseits sicher nicht möglich komplette Fehlerfreiheit zu erreichen. Wenn Du also ein reproduzierbares, ungewöhnliches Verhalten (Bug) des Paketes entdeckst oder auch nur einen Vertippsler, dann schreib mir bitte eine kurze Mail. Meine Mail Adresse findest Du in der OPT-Datenbank auf www.fli4l.de direkt bei der Beschreibung zu diesem Paket (auf "Tiger" klicken). Achtung: Ich biete keinen End User Support an!

Untenstehend einige Tipps zur Fehlerbehebung. Ich habe darauf verzichtet, jede einzelne Fehlermeldung, die ein Programm anzeigt anzuführen, da die meisten Fehlermeldungen selbsterklärend formuliert wurden.

Installation

Fehlerbeschreibung
Fehlerursache
Fehlerbehebung
Beim Compilieren von fli4l (mkfli4l) wird 'Invalid key.' angezeigt. Ich habe aber noch keine gültigen Schlüssel, weil der Schlüsselgenerator noch nicht läuft.
Schlüssel müssen aus 41 Zeichen eines speziellen Zeichensatzes bestehen.
Für die Erstinstallation des Paketes kann man die Variablen für die Schlüssel leer lassen. HTTPDNS_SERVER_%_KEY=''
Ich bekomme keine oder nicht die richtige IP Adresse im Fenster 'Aktuelle IP Adresse' angezeigt.
Falsche Einstellung in HTTPDNS_INTERFACE
Die Variable muss das Device nennen, über das der WWW Zugriff erfolgt. Wenn der fli4l hinter einem anderen Router oder maskierenden Proxy installiert ist, dann muss HTTPDNS_INTERFACE leer gelassen werden.
Es wird im Reiter "Synchronisation" immer die Fehlermeldung "offline" ausgegeben, obwohl ich online bin.
Falsche Einstellung in HTTPDNS_INTERFACE
Die Variable muss das Device nennen, über das der WWW Zugriff erfolgt.

Einrichten des Servers und Administration

Fehlerbeschreibung
Fehlerursache
Fehlerbehebung
Ich bekomme nur "Manuell einrichten" als Button im Reiter "Administration", aber keine Button "Programm hochladen"
Mindestens eine der Variablen HTTPDNS_SERVER_%_FTPURL, HTTPDNS_SERVER_%_FTPUSER oder HTTPDNS_SERVER_%_FTPPWD ist nicht gesetzt Die FTP Konfiguration in der Datei config/httpdns.txt vervollständigen.
Beim Abrufen des Server Logs bekomme ich viel Datenschrott
Der Webspace Server fügt automatisch Frames oder Java Code in die Server Antwort ein.
Da hilft nur ein Providerwechsel oder das Upgrade auf eine kostpflichtige Webspace Variante beim Provider.
Beim Programm hochladen werden unter den Anworten des FTP Servers Fehler angezeigt
Fehler 530: Beim Login bedeutet falsche Benutzerkennung oder Passwort
Fehler 530: Beim Befehl 'chmod' bedeutet der Server unterstützt den Befehl nicht
Fehler 526 und 536: Das Server Programm konnte nicht auf den Webspace kopiert werden.
Die Ursachen sind vielfältig. Der beste Tipp ist, die Anleitung vom Provider hinsichtlich des FTP Zugangs noch einmal zu studieren und alle Variablen zu überprüfen. Wenn chmod nicht funktioniert wird es wahrscheinlich auch nicht gebraucht. Oder aber der Server unterstützt das Ausführen von Programmen grundsätzlich nicht.
Unmittelbar nach der Installation des Server Programms wird bei der Synchronisation immer "Ungültige Antwort" oder "Server Fehler" angezeigt.
Das Server Programm versucht die Verzeichnisse und Dateien für die DNS Daten und den Log anzulegen. Einschränkungen bei den Zugriffsrechten am Server verhindern das Anlegen aber.
Alle eventuell automatisch angelegten Verzeichnisse löschen und alle Verzeichnis händisch anlegen. Dann mit dem Befehl "chmod 777" volle Schreibrechte auf die Verzeichnisse setzen und einmal Synchronisieren. Nach der Synchronisation sollten die Dateien angelegt worden sein und man kann die Zugriffsrechte auf die Verzeichnisse wieder mit "chmod 755" einschränken.
Als Status wird 'Nicht erreichbar' gemeldet.
Der NSLookup hat kein positives Ergebnis gebracht.
Die URL oder FTP Adresse ist ungültig oder der DNS Deines ISP ist gerade down.
Das Button "Abfrage-Links generieren" wird nicht angezeigt
Das Button wird nur angezeigt wenn der Server die Abfrage über Links unterstützt. Dies ist erst ab httpDNS 1.1.1 der Fall.
Das Server Programm aktualisieren.
Das Button "Host Eintrag löschen" wird nicht angezeigt
Das Button wird nur angezeigt wenn der Server das Löschen von Hosts unterstützt. Dies ist erst ab httpDNS 1.1.7 der Fall.
Das Server Programm aktualisieren.
Während des Löschens von Hosts oder des Löschens des Server Logs wird eine Meldung 'Du hast keine Administratorrechte' angezeigt, obwohl ich namentlicher Administrator des Servers bin.
Die IP Adresse von der aus Du den Server Befehl sendest stimmt nicht mit der IP Adresse überein, mit der Dein Hostname registriert ist.
Du brauchst lediglich neu zu synchronisieren.

Synchronisation

Fehlerbeschreibung
Fehlerursache
Fehlerbehebung
Trotz Synchronisation wird für meinen Host Name eine falsche IP Adresse in die hosts.httpdns Datei eingetragen.
Falsche Einstellung in HTTPDNS_INTERFACE oder der Provider übermittelt die IP Adresse verzögert oder der Client ist hinter einem weiteren Router oder maskierenden Proxy installiert
Die Variable muss das Device nennen, über das der WWW Zugriff erfolgt. Die IP Adresse kann im Reiter "Synchronisation" im Fenster "Aktuelle IP Adresse" kontrolliert werden.
Manche Modems mit internem DHCP übermitteln eine "provisorische" IP Adresse, bis eine richtige Adresse vom Provider zugewiesen wurde. Da hilft nur manuelles Synchronisieren.
Wenn der fli4l hinter einem anderen Router oder maskierenden Proxy installiert ist, dann muss HTTPDNS_INTERFACE leer gelassen werden.
Die Synchronisation funktioniert, nur finden andere Clients meinen Router nicht.
Falsche Einstellung in HTTPDNS_INTERFACE
Die Variable muss das Device nennen, über das der WWW Zugriff erfolgt. Die IP Adresse kann im Reiter "Synchronisation" im Fenster "Aktuelle IP Adresse" kontrolliert werden. Es muss die IP Adresse angezeigt werden, die vom ISP für den Router vergeben wurde, nicht die die im lokalen Netz für den Router verwendet wird.
Wenn der fli4l hinter einem anderen Router oder maskierenden Proxy installiert ist, dann muss HTTPDNS_INTERFACE leer gelassen werden.
HTTPDNS_SERVER_%_IPUP ist auf 'yes' eingestellt. Trotzdem wird bei der Einwahl zum ISP nicht synchronisiert.
IP-Up Ereignis wird nicht ausgelöst
Bei reinen Router-Konfigurationen muss im Paket OPT_DHCP die Option DHCPCD_EXEC_IPUPDOWN eingeschaltet werden, sonst wird kein IP-up ausgelöst.

Der Client findet den Sever nicht (Status "Keine Antwort.")
Das Server Programm liegt im falschen Verzeichnis
Entweder das Server Programm am Webspace verschieben oder die Variable HTTPDNS_SERVER_%_NAME anpassen.
Die URL in HTTPDNS_SERVER_%_NAME stimmt mit dem Pfad zum Server am Webspace überein. Trotzdem wird immer der Status "Keine Antwort." angezeigt.
Der Webserver unterstützt vielleicht kein PHP4
Das Server Programm liegt auf einem Unix Webspace und ist nicht als "ausführbar" gekennzeichnet
Als Test einfach einmal in einem Browser die URL plus '/httpdns.php' dahinter eingeben. Wenn nur Datenschrott daher kommt, ist der Webserver nicht PHP4-fähig oder das Server Programm muss erst mit "chmod 755 httpdns.php" auf dem Webspace ausführbar gemacht werden. Wenn eine "httpDNS" Kopfzeile angezeigt wird, passt von Serverseite alles. Dann ist vielleicht doch die URL nicht richtig eingetragen. Wenn "404 nicht gefunden" angezeigt wird, stimmt die URL grundsätzlich nicht. Die Anleitung vom Webspace Provider hilft dann weiter.
Es wird immer "Verschlüsselung ungültig." angezeigt.
Es wurde für den Server noch kein Schlüssel eingetragen
Schlüsselgenerator anwerfen und einen Schlüssel für den Server in die Datei config/httpdns.txt eintragen.
Der Client bekommt keine DNS Einträge vom Server
Die DNS Datei am Server kann nicht erstellt werden
Zugriffsrechte auf das Verzeichnis, in dem die DNS Datei erzeugt werden soll mit dem FTP Befehl chmod überprüfen.
Im Webinterface werden im Reiter "Synchronisation" keine Buttons in den Fenstern angezeigt
Benutzerrecht "sync" für Dich nicht gesetzt
Wende Dich an den Administrator, damit er die Benutzerrechte für den Bereich "httpdns" im Paket httpd entsprechend setzt. Wenn Du der Admin bist, dann lies bitte mehr zum Thema Benutzerrechte in der Anleitung zum Paket "httpd" nach.
Es wird noch immer ein alter Server im Reiter "Synchronisation" angezeigt, obwohl ich ihn aus der Konfiguration bereits gelöscht habe
Eine alte Datei liegt noch im Verzeichnis HTTPDNS_DNSFOLDER
Am fli4l Router die Datei manuell aus dem Verzeichnis löschen. httpDNS wertet alle Dateien mit der Endung ".dns" im Verzeichnis HTTPDNS_DNSFOLDER aus.

Verwenden der erweiterten Debugging Funktionen

httpDNS stellt mehrere Variablen für das Einrichten und Konfigurieren des Debuggings zur Verfügung. Eine detaillierte Beschreibung findet sich in den folgenden Tabellen.

Lokales Logging auf dem Router

Variable
Grundeinstellung
Beschreibung
Beispiel
Erlaubte Werte
HTTPDNS_DEBUG
'no'
Während der normalen Programmausführung werden alle temporären Dateien sofort gelöscht. Mit eingeschaltetem Debugging werden die Dateien mit der HTTP Anfrage (httpdns-request.tmp) und der Server Antwort (httpdns-response.tmp) im Verzeichnis /tmp gesichert.
'yes'
yes oder no
HTTPDNS_LOGFILE
''
Unabhängig von HTTPDNS_DEBUG kann das CGI so konfiguriert werden, dass ein Protokoll aller WAN Aktivitäten geführt wird. Einfach den Dateinamen der Log Datei angeben und schon wird Alles mitnotiert. Umgekehrt ist bei leerer HTTPDNS_LOGFILE das Logging abgeschaltet, jedoch wird eine eventuell vorhandene Log Datei dadurch nicht gelöscht. Zum Einsehen und Löschen der Protokolldatei kann das Webinterface benutzt werden. In der Protokolldatei wird das Common Log Format verwendet.
'/var/log/httpdns.log' Beliebiger Dateiname mit absolutem Pfad
HTTPDNS_LOGLEVEL
'5'
Legt fest wie ausführlich geloggt wird. 0 schaltet das Logging aus, während 9 sehr detailliert loggt. Die untenstehende Tabelle beschreibt die einzelnen Log Levels.
'1'
0-9 oder leer

Entferntes Logging auf dem Server

Der entfernte Log kann über das Webinterface eingesehen und gelöscht werden.

Variable
Grundeinstellung
Beschreibung
Beispiel
Erlaubte Werte
HTTPDNS_SERVER_%_LOGFILE
'httpdns.log'
Wenn Du die Log Daten auf Platte geschrieben haben willst, dann kannst Du hier den Namen und den relativen Pfad auf die Datei am Server angeben.
'log/serverlog.txt'
Beliebiger Dateiname mit relativem Pfad
HTTPDNS_SERVER_%_MYSQL_LOGTABLE
'httpDNS_Log'
An Stelle einer Datei kann auch eine Tabelle einer MySQL Datenbank für die Speicherung der Log Daten verwendet werden. Bitte stell sicher, dass MySQL über die Variable HTTPDNS_SERVER_%_MYSQL eingeschaltet ist!
'my_log'
Bis zu 64 Zeichen aus 0-9, a-z, A-Z, $ und _
HTTPDNS_SERVER_%_LOGLEVEL
'5'
Unabhängig davon, wie die Informationen gespeichert werden, wird mit dieser Variable die Detailliertheit des Server Logs festgelegt. Die untenstehende Tabelle beschreibt die einzelnen Log Levels. '1'
0-9 oder leer

Log Levels

Log Level
Bemerkung
Fehler
Warnung
Info
Alles
0
Logging ausgeschaltet
Nein
Nein
Nein
Nein
1

Ja
Nein Nein Nein
3

Ja Nein Nein Nein
5
Grundeinstellung
Ja Ja Nein Nein
7

Ja Ja Ja Nein
9

Ja Ja Ja Ja

Lizenz und Unterstützung

Für das gesamte Paket und die zugehörige Dokumentation gilt:

copyright © 2006-2008 Tiger
Diese Paket ist lizensiert durch Free Software Foundation, Inc., General Public License Version 2, June 1991

Die GPL2 legt die ausschließliche rechtliche Grundlage für die Veröffentlichung dieses Paketes fest. Darüber hinaus anerkenne ich keinerlei nationale oder internationale, implizierte oder explizite Rechte. Wenn diese Regelung oder die GPL2 in Deinem Land den aktuellen Gesetzen widerspricht untersage ich die Nutzung des Paketes in Deinem Land.

Ich bitte zu verstehen, dass ich End User Support weder anbieten kann, noch will. Kurzum: Mails an meine Adresse mit "Bei mir funktioniert das Paket nicht. Was mache ich falsch?" bleiben (leider) unbeantwortet. Bitte nutze für Fragen zum Paket oder zu dessen Installation die Newsgroup für OPT-Pakete auf www.fli4l.de.

Wenn Du dagegen einen Fehler im Programm findest oder das Paket verbessern und weiter entwickeln möchtest, biete ich gerne Unterstützung an. Meine aktuelle Mail Adresse findest Du in der OPT-Datenbank auf www.fli4l.de direkt bei der Beschreibung zu diesem Paket (auf "Tiger" klicken).

Besuche auch die httpDNS homepage unter: www.tiger.adm24.eu

Spenden

Wenn Du meine Arbeit an diesem Paket finanziell durch eine kleine Spende anerkennen möchtest, dann richte diese bitte direkt an den

World Wide Fund for Nature (WWF) Deutschland
Artenschutz Projekt "Amur Tiger"
http://www.wwf.de/aktive-hilfe/spenden/amurtiger05/

World Wide Fund for Nature (WWF) Österreich
Artenschutz Projekt "Sibirischer Tiger"
http://www.wwf.at/Projekte/artenschutz/tiger/index.html

Der WWF leistet international ganz hervorragende Arbeit zur Arterhaltung von Großkatzen. Und die Tiger brauchen das Geld nöTIGER als ich. Zum WWF sei gesagt, dass seinen administrativen Funktionen von großen internationalen Konzernen (allen voran Exxon/Esso) gesponsert werden (Wahrscheinlich zur Gewissensberuhigung). Von Privatpersonen gespendetes Geld kommt dagegen direkt den Projekten zu gute.