Dieses Dokument beschreibt noip2, die zweite Generation des Clients für den dynamischen DNS Service von no-ip.com NEU: Dieser Code kann erstellt werden und läuft unter Solaris/Intel sowie BSD. Editier wenn notwendig den Makefile für Solaris und verschiedene BSD Varianten. Für BSD Benutzer, die ein TUN Device benutzen müssen, existiert unten eine weiterführende Beschreibung. Schreibt mir jede Änderungen, die zum korrekten Betrieb von noip2 auf anderen Betriebssystemen als Linux notwendig sind. Mac OS-X ist eine BSD-Variante. Bitte ließ diese Datei bevor noip2 benutzt wird. ########################################################################### WIE EINE AUSFÜHRBARE DATEI FÜR DEIN SYSTEM ERSTELLT WIRD Das Kommando make erstellt ein lauffähiges Binary des noip2 Client für dein System. Wenn bei dir kein 'make' installiert ist und du hast eine i686 Linux Maschine mit libc6, existiert ein Binary im Binary-Verzeichnis, das noip2-Linux heißt. Kopier diese Datei in das Installations-Verzeichnis 'cp binaries/noip2-Linux noip2' Das Kommando make install (muß als root ausgeführt werden) installiert dann die erforderlichen Dateien an die notwendigen Stellen. Während der Installation werden notwendige Eingaben erfragt und eine Konfigurationsdatei wird erstellt. Siehe weiter unten, wenn du keine root-Rechte hast oder nicht in /usr/local/* schreiben kannst ########################################################################### WIE DER CLIENT BEDIENT WIRD, WENN MAN DEN REST DIESES TEXTES NICHT LESEN WILL Usual operation? /usr/local/bin/noip2 -C configure a client /usr/local/bin/noip2 run a client /usr/local/bin/noip2 -S display info about running clients /usr/local/bin/noip2 -D pid toggle the debug state for client pid /usr/local/bin/noip2 -K pid terminate client pid Wenn mehr als ein Internetzugang besteht? /usr/local/bin/noip2 -M -c file start additional instances ########################################################################### WIE DEN CLIENT STARTEN Die noip2 Datei kann gestartet werden durch die Eingabe von /usr/local/bin/noip2 Wenn du einen automatischen Start beim Booten durchführen möchtest, dann hinterlege ein Script in das Startverzeichnis (/etc/init.d/rcX.d or /sbin/init.d/rcX.d or ???). ####################################################### #! /bin/sh # . /etc/rc.d/init.d/functions # uncomment/modify for your killproc case "$1" in start) echo "Starting noip2." /usr/local/bin/noip2 ;; stop) echo -n "Shutting down noip2." killproc -TERM /usr/local/bin/noip2 ;; *) echo "Usage: $0 {start|stop}" exit 1 esac exit 0 ####################################################### Wobei das 'X' in rcX.d den Wert angibt um das folgende Kommando auszuführen grep initdefault /etc/inittab | awk -F: '{print $2}' (Runlevel Einträge zum Autostart?) Killproc kann bei ftp://ftp.suse.com/pub/projects/init herunter geladen werden. Alternativ kann die Zeile . /etc/rc.d/init.d/functions # uncomment/modify for your killproc aus dem Script oben auskommentiert werden. Verwendest du eine aktuelle RedHat Version, kannst du ein vorhandenes Startscript verwenden. Dies ist zu bekommen aus dem Paket redhat.noip.sh. Es ist möglich, daß einige Modifikationen für dein System erforderlich sind. Für Debian Distributionen ist ebenfalls ein Startscript verfügbar namens debian.noip2.sh. Es ist von einem Anwender geschrieben worden, und man munkelt, daß es manchmal seinen Dienst versagt. Noch jemand anderer hat für Mac OS-X eine Prozedur geschrieben namens mac.osx.startup. Mac Benutzer sollten es lesen. Hier ist noch ein Script, das alle laufenden Instanzen von noip2 beendet. #!/bin/sh for i in `noip2 -S 2>&1 | grep Process | awk '{print $2}' | tr -d ','` do noip2 -K $i done Diese vier Zeilen können die Aufrufe 'killproc' und 'stop_daemon' in anderen Scripten ersetzen. Läuft noip2 hinter einer Firewall, mußt du Port 8245 (TCP) in beide Richtungen öffnen. ####################################################################### WICHTIG !! Bitte setze die Berechtigungen bei den ausführbaren Dateien korrekt. Wenn du noip2 nach einer der oben aufgeführten Methoden starten willst, setze die Berechtigungen chmod 700 /usr/local/bin/noip2 chown root:root /usr/local/bin/noip2 Wenn du noip2 manuell von einem Benutzeraccount startest, rufe vorher chmod 700 wie oben beschrieben auf, setze jedoch mit chown die Benutzergruppe deines Benutzeraccounts. Weiterhinmuß der Pfad geändert werden, wenn die ausführbare Datei nicht im Verzeichnis /usr/local/bin liegt. ########################################################################### GESPEICHERTER ZUSTAND noip2 speichert die letzte bei no-ip.com bekannte IP Adresse beim Beenden. Diese Adresse wird ausgelesen, wenn noip2 das nächste Mal gestartet wird. Deshalb muß die Konfigurationsdatei Schreibberechtigung besitzen. Andernfalls geschieht nichts, wenn dies nicht eingerichtet ist, die Adresse 0.0.0.0 bleibt unverändert. Wenn noip2 als root gestartet wird, wird dies geändert in den Benuzer 'nobody' und Gruppe 'nobody'. Deshalb muß die Konfigurationsdatei auch für den Benutzer und die Gruppe 'nobody' beschreibbar sein. ########################################################################### BENUTZEN EINES TUN DEVICE UNTER BSD Aktuelle BSD Systeme benutzen getifaddrs(), um an allen Schnittstellen zu lauschen. Setze die 'bsd_wth_getifaddrs' Definition im Makefile, wenn Du eine Version von BSD benutzt, die getifaddrs() unterstützt und ignoriere den Rest des Absatzes. Mac OS- Benutzer sollten eine BSD Version haben, die getifaddrs() unterstützt. Andernfalls, BSD Definition setzen. Die 'bsd'Einstellungen listen nicht die TUN Devices in BSD auf. Sie können auch nicht über das Menü aufgerufen werden. Wenn du TUN Devices nutzen möchtest, ändere die Zeile ${BINDIR}/${TGT} -C -Y -c /tmp/no-ip2.conf zu ${BINDIR}/${TGT} -C -Y -c /tmp/no-ip2.conf -I 'your tun device' im Makefile und erstelle die ausführbare Datei neu. ########################################################################### KOMMANDOZEILEN ARGUMENTE ZUM AUFRUFEN DES CLIENTS Der Client wird zum Hintergrundprozeß und läuft als Demon. Das bedeutet, wenn noip2 mit dem multiple-use flag (-M) mehrmals aufgerufen wird, laufen mehrere Instanzen des Demon. Wenn du möchtest, daß der Client nur einmal gestartet wirde und sich dann wieder beendet, verwende den Parameter '-i IPaddress'. Der Client verhält sich stabil und bleibt aktiv, auch bei sporadischen Einwählen. Er verbraucht wenig Ressourcen. Der Client wird von der Konfigurationsdatei 'no-ip2.conf' überwacht, die sich üblicherweise im Verzeichnis /usr/local/etc/ befindet. Sie kann sich jedoch auch woanders befinden, wenn der Parameter '-c new_location' im Startkommando angegeben wird. Die Konfigurationsdatei wird mit dem Parameter '-C' generiert. Einige neue Argumente für die Kommandozeile legen Vorgabewerte in der Konfigurationsdatei fest. Das sind -F, -Y and -U. Der Intervall der Überprüfung einer neuen IP Adresse wird durch den Parameter '-U nn' gesteuert. Die Nummer (nn) ist in Minuten angegeben. Das Minimum ist 1, wenn der Client auf einer Firewall-Maschine läuft und 5 wenn er hinter einem Router/Firewall läuft. Ein üblicher Wert für Clients hinter einer Firewall ist 30. (-: One day is 1440, one week is 10080, one month is 40320, 41760, 43200 or 44640. One hour is left as an exercise for the reader :-) The configuration builder code will allow selection among the hosts/groups registered at no-ip.com for the selected user. The '-Y' parameter will cause all the hosts/groups to be selected for update. Einige host-Rechner haben mehrere Internetverbindungen. Hier klappt die automatische NAT-Erkennung häufig nicht. Sie wird durch den Parameter '-F' unterdrückt. (NAT = Network-Address-Translation (Masquerading)). Der Client kann mit dem Parameter '-i IPaddress' aufgerufen werden, der das Setzen auf die bei no-ip.com bekannte Adresse erzwingt. Der Client läuft dann einmal und wird beendet. Der Parameter '-I' wird verwendet zum Überschreiben Schnittstellennamen in der Konfigurationsdatei oder zum Erzwingen des ausgelesenen Schnittstellennamen beim Erstellen der Konfigurationsdatei. Setze dies als letzten Ausweg ein. Der Parameter '-S' wird verwendet zum Anzeigen der Status jeder laufenden Instanz von noip2. Ist keine Instanz gestartet, werden nur die Daten der Konfigurationsdatei angezeigt. Der Parameter '-K process_ID' wird zum Beenden eines noip2 Prozesses verwendet. Die Prozess_ID erhält man über den Aufruf noip2 -S. Der '-M' Parameter läßt den Start mehrerer Instanzen von noip2 client zu. Dafür muß jede Instanz eine eigene Konfigurationsdatei haben. Bis zu 4 Instanzen können gleichzeitig laufen. Alle Fehlermeldungen und Informationen werden im syslog gespeichert. Jedesmal wenn eine erfolgreiche IP Adressenaktualisierung stattgefunden hat bei no-ip.com, gibt es einen Eintrag in syslog. syslog ist üblicherweise in /var/log/messages zu finden. If the client has been built with debugging enabled, the usual state, the '-d' parameter will activate the debug output. This will produce a trace of the running program and should help if you are having problems getting the connection to no-ip.com established. All errors, messages and I/O in both directions will be displayed on the stderr instead of syslog. The additional '-D pid' parameter will toggle the debug state of a running noip2 process. This will not change where the output of the process is appearing; if it was going to the syslog, it will still be going to the syslog. Ein letzter Parameter ist -h. Er zeigt die unten angezeigte Hilfe. USAGE: noip2 [ -C [ -F][ -Y][ -U #min]][ -c file] [ -d][ -D pid][ -i addr][ -S][ -M][ -h] Version Linux-2.x.x Options: -C create configuration data -F force NAT off -Y select all hosts/groups -U minutes set update interval -c config_file use alternate data path -d increase debug verbosity -D processID toggle debug flag for PID -i IPaddress use supplied address -I interface use supplied interface -S show configuration data -M permit multiple instances -K processID terminate instance PID -h help (this text) ########################################################################### KONFIGURATION DES CLIENTS Das Kommando noip2 -C legt eine Konfigurationsdatei im Verzeichnis /usr/local/etc mit dem Namen 'no-ip2.conf' an. Wenn du keine root-Rechte hast und/oder nicht in das Verzeichnis /usr/local/* schreiben kannst, mußt du für jeden Aufruf des Clients den Parameter '-c config_file_name' mit übergeben, inklusive Erstellen der Konfigurationsdatei. Somit sollte die ausführbare Datei dort liegen, wo du Schreibbrechte hast. Ändere dafür die Zeile PREFIX= im Makefile auf den neuen Pfad und starte make install noch einmal, um dieses Problem zu vermeiden. Du mußt die Konfigurationsdatei jedesmal neu anlegen, wenn sich der Benutzername oder das Paßwort ändert. Ebenso wenn host-Rechner und/oder Gruppen bei www.no-ip.com hinzufügst, änderst oder löschst. Jeder Aufruf von noip2 mit '-C' überschreibt die Konfigurationsdatei. Weitere Optionen hierfür sind '-F' '-Y' -U' Du wirst gefragt ob du ein Programm oder Script laufen lassen möchtest nachdem die IP Adresse bei no-ip.com erfolgreich aktualisiert wurde. Wählst du Script aus, sollte es mit #!/bin/sh oder einer Shell-Bezeichnung deiner Wahl beginnen. Ohne dies wird ein 'Exec format error' angezeigt. Die erfolgreich aktualisierte IP Adresse muß dann als erstes Argument dem Programm oder Script übergeben werden. Der host-Rechnername oder Gruppenname wird als zweites Argument übergeben. Einige Maschinen haben verschiedene Netzwerkverbindungen. In diesem Fall ist die Netzwerkkarte anzugeben, die die Verbindung nach außen herstellt. Dafür kann der Parameter -I genommen werden, der die noch nicht bekannte Schnittstelle benennt. Typischerweise ist das eine der pppX Schnittstellen, die erst zu sehen sind, wenn sie aktiv sind. Es wird der Benutzername/eMailadresse als Anmekldekennung von no-ip.com angefragt, sowie das Paßwort. Die Konfigurationsdaten beinhalten keine für den Benutzer notwendigen Einträge!! WICHTIG !! Bitte setze die Berechtigungen für die Konfigurationsdaten korrekt. chmod 600 /usr/local/etc/no-ip2.conf. chown root:root /usr/local/etc/no-ip2.conf. Wenn du noip2 ohne root-Rechte manuell von einem Benutzer-Account startest, rufe chmod wie oben beschrieben auf, nimm jedoch die Gruppenrechte mit chown für die no-ip.conf Datei von der Benutzergruppe deines Accounts. Achte darauf, daß das Verzeichnis von allen lesbar ist. Das Programm gibt nach dem Auslesen der Konfigurationsdaten die root-Rechte ab. ########################################################################### Ich würde es gern sehen, wenn diese Liesmich.erst Datei noch in andere als die bereits verfügbaren Sprachen übersetzt würde. Wenn Du diese Datei aus dem Englischen in eine andere Sprache übersetzen kannst, schicke mir bitte die übersetzte Datei. Schon mal herzlichen Dank. ########################################################################### Fehler bitte melden an johna@onevista.com Schreib mir eine eMail wenn du Hilfe brauchst (in Englisch). Aber bedenke, ich habe einen rigorosen Spam-Filter. Wenn dein Mailserver dort geblockt ist, schicke die Mail über den no-ip Support. Bitte keine eMail in HTML, da niemand sie zugestellt bekommt. Du kannst einen trace file zur Fehlersuche erstellen Und so gehts: Type: script noip2.out Type: 'your noip command line with the -d parameter added' Type: exit Examine the file noip2.out. Schick' ihn mir, wenn du damit nicht klar kommst. johna@onevista.com January 2004 Übersetzung ohne Gewähr! peter@jadasch.de 14.01.2007