Ich bin wahrscheinlich nicht der Erste, der dies tut, aber ich musste den dynamischen DNS-Dienst von NO-IP verwenden, damit ich Geräte und Computer problemlos für den Zugriff auf Ressourcen in meinem LAN konfigurieren konnte, wenn ich unterwegs bin. Für diejenigen, die mit NO-IP weniger vertraut sind: Es handelt sich um einen kostenlosen dynamischen DNS-Dienst. Die meisten Heim- und Kleinbüroverbindungen zum Internet verfügen über eine dynamische IP, was bedeutet, dass sich die IP-Adressen fast jedes Mal ändern, wenn die Verbindung vom Router hergestellt wird. Normalerweise erfordert ein Domänenname eine statische IP-Adresse, um zu funktionieren. Dynamisches DNS ermöglicht es einem Domänennamen (z. B. subdomain.example.com), eine dynamische IP zu verwenden, indem NO-IP mit einer neuen IP-Adresse aktualisiert wird, wenn sich die IP-Adresse ändert. NO-IP ordnet diese IP dann dem Domänennamen zu, sodass Dienste für die Domäne und nicht für die IP, die sich ändert, eingerichtet werden können. Dies erleichtert die Konfiguration.
Viele Router verfügen über einen integrierten NO-IP-Client, aber mein Router unterstützt NO-IP nicht, und aus irgendeinem Grund konnte ich den Client, den NO-IP für einen Linux-Host empfohlen hat, nie zum Laufen bringen. Ich habe die Quelle heruntergeladen und gemäß den Anweisungen kompiliert. Es schien zu laufen, aber meine IP-Adresse wurde nie aktualisiert. Es gab weder eine Ausgabe an die Konsole noch an eine Protokolldatei, um das Problem zu diagnostizieren, das ich finden konnte, also beschloss ich, mein eigenes zu schreiben, was mit einem Bash-Skript und ein paar einfachen Dienstprogrammen wirklich gar nicht so schwer war auf meiner Linux-Box. Hier ist meine Anleitung und Dokumentation zum Einrichten. Ich betreibe einen Ubuntu-Server, also verwende ich apt und nano, aber das sollte auf allem funktionieren, was auf POSIX basiert, wie Mac OS X, BSD, jeder Linux-Variante – sogar dem Raspberry Pi.
Das Skript kann als einzelne Instanz mit Befehlszeilenparametern, als Daemon, mit Crontabs (einem Dienstprogramm zum Ausführen von Programmen nach einem Zeitplan) oder als Linux-Dienst ausgeführt werden.
Dieses Skript hat eine Abhängigkeit, nämlich wget. Dies ist normalerweise auf den meisten Linux- und BSD-Distributionen standardmäßig installiert. Wenn nicht, verwenden Sie zur Installation den Paketmanager.
sudo apt-get install wget
-oder-
sudo yum install wget
no-ip.sh -u=username -p=password -h=host.sample.com -d=true -l=/path/to/logfile.log
Parameter:
-u, --username
Benutzername zur Anmeldung bei no-ip.com.
-p, --password
Passwort zur Anmeldung bei no-ip.com.
-h, --hostname
Der zu aktualisierende Domänenname.
-d, --detectip
Weist das Skript an, Ihre externe IP-Adresse zu erkennen. Dies hat Vorrang vor -i.
-i, --ip
Legt die zu aktualisierende IP-Adresse manuell fest. Wenn weder -d noch -i angegeben sind, verwendet no-ip die erkannte IP-Adresse.
-n, --interval
Wenn das Skript als Daemon/Dienst ausgeführt wird (siehe Installation), wird no-ip alle n Minuten aktualisiert.
-l, --logfile
Legt den Pfad zu einer Protokolldatei fest. Diese Datei muss beschreibbar sein.
-c, --config
Legt den Pfad zu einer Konfigurationsdatei fest. Diese Datei muss lesbar sein. Konfigurationsdateiparameter haben Vorrang vor Befehlszeilenparametern.
no-ip.sh
Führt das Skript mit den Einstellungen in der Konfigurationsdatei am Standardspeicherort /etc/no-ip/no-ip.conf aus
no-ip.sh -u=username -p=password -h=host.sample.com -d=true -l=/path/to/logfile.log
Führt ein einmaliges Update durch, erkennt den UP und protokolliert die Ergebnisse
no-ip.sh -c=/home/username/no-ip.conf
Führen Sie das Skript mit den Einstellungen in der Konfigurationsdatei aus.
no-ip.sh /dev/null 2>&1 &
Führt das Skript als Daemon mit den Einstellungen in der Konfigurationsdatei im Standardspeicherort /etc/no-ip/no-ip.conf aus.
Die Konfigurationsdatei verwendet eine einfache Syntax zum Definieren von Parametern. Jeder Befehlszeilenparameter (außer --config) kann auch in der Konfigurationsdatei angegeben werden. Für die Parameter der Konfigurationsdatei gelten die gleichen Regeln wie für die Parameter der Caomand-Zeile (d. h. „detectip“ überschreibt „ip“, wenn beide angegeben sind).
Beispiel:
user=username
password=password
hostname=hostname.example.com
logfile=/var/log/no-ip.log
interval=10
detectip=true
Laden Sie vor der Installation des Skripts die Dateien herunter und extrahieren Sie sie auf Ihren lokalen Computer. Bei den Anweisungen wird davon ausgegangen, dass Sie sich im Ordner „no-ip-master“ befinden.
cd ~
wget https://github.com/theonemule/no-ip/archive/master.zip
unzip master.zip
cd no-ip-master
Methode 1: Crontabs
Mit Crontabs können Sie einen Zeitplan für die Ausführung des Skripts festlegen und das Skript auch als der Benutzer ausführen, für den die Crontab konfiguriert ist. Stellen Sie sicher, dass der Benutzer über Ausführungsberechtigungen für das Skript, Leseberechtigungen für die Konfigurationsdatei und Schreibberechtigungen für die Protokolldatei verfügt. Crontabs führt das Skript nach einem Zeitplan aus, sodass kein Intervall angegeben werden muss.
So führen Sie das Skript als Root aus.
1.) Erstellen Sie einen Ordner in etc.
sudo mkdir /etc/no-ip
2.) Erstellen Sie eine Konfigurationsdatei.
sudo touch /etc/no-ip/no-ip.conf
3.) Stellen Sie die Parameter mit Ihrem bevorzugten Editor ein. Ich verwende Nano. Weitere Informationen finden Sie oben im Abschnitt „Konfigurationsdatei“.
sudo nano /etc/no-ip/no-ip.conf
user=username
password=password
hostname=hostname.example.com
logfile=/var/log/no-ip.log
detectip=true
4.) Kopieren Sie no-ip.sh nach /usr/sbin
sudo cp no-ip.sh /usr/sbin/no-ip.sh
5.) Machen Sie das Skript ausführbar
sudo chmod +x /usr/sbin/no-ip.sh
6.) Melden Sie sich als Root an
sudo -i
7.) Bearbeiten Sie die Crontab von Root
crontab -e
8.) Fügen Sie den Eintrag unten hinzu. */10 weist Crontab an, das Skript jedes Mal auszuführen, wenn die aktuelle Zeit durch 10 teilbar ist, oder alle 10 Minuten, und die Crontab zu speichern.
*/10 * * * * /usr/sbin/no-ip.sh
Methode 2: Linux-Dienst (geschrieben für Debian-basierte Distributionen. Dies kann bei anderen Distributionen variieren)
Stellen Sie sicher, dass Root über Ausführungsberechtigungen für das Skript, Leseberechtigungen für die Konfigurationsdatei und Schreibberechtigungen für die Protokolldatei verfügt.
1.) Erstellen Sie einen Ordner in /etc.
sudo mkdir /etc/no-ip
2.) Erstellen Sie eine Konfigurationsdatei.
sudo touch /etc/no-ip/no-ip.conf
3.) Stellen Sie die Parameter mit Ihrem bevorzugten Editor ein. Ich verwende Nano. Weitere Informationen finden Sie oben im Abschnitt „Konfigurationsdatei“.
sudo nano /etc/no-ip/no-ip.conf
user=username
password=password
hostname=hostname.example.com
logfile=/var/log/no-ip.log
interval=10
detectip=true
4.) Kopieren Sie no-ip.sh nach /usr/sbin
sudo cp no-ip.sh /usr/sbin/no-ip.sh
5.) Machen Sie das Skript ausführbar
sudo chmod +x /usr/sbin/no-ip.sh
6.) No-ip-service nach init.d kopieren
sudo cp no-ip-service /etc/init.d/no-ip-service
7.) No-IP-Service ausführbar machen
sudo chmod +x /etc/init.d/no-ip-service
8.) Starten Sie den Dienst
sudo service no-ip-service start
9.) Fügen Sie den Dienst hinzu, um ihn beim Booten zu starten.
update-rc.d no-ip-service defaults