Die neueste Veröffentlichung ist immer bei Github at erhältlich
https://github.com/troglobit/inadyn/releases
Tipp: Das HTML UNIX -Handbuch finden Sie unter https://man.troglobit.com, z. B. Inadyn.Conf (5)
Inadyn oder In-a-Dyn ist ein kleiner und einfacher dynamischer DNS, DDNS, Client mit HTTPS-Unterstützung. In vielen GNU/Linux -Verteilungen, die in den Regalroutern und Internet -Gateways verwendet werden, werden häufig verfügbar, um die Aufgabe zu automatisieren, Ihren Internetnamen mit Ihrer öffentlichen IP -Adresse synchronisiert zu halten. Es kann auch in Installationen mit redundanten (Backup-) Verbindungen zum Internet verwendet werden.
Die meisten Menschen wissen nicht, dass sie einen Pool von Internetadressen mit anderen Nutzern desselben Internetdienstanbieters (ISP) teilen. Protokolle wie DHCP, PPPOE oder PPPOA werden verwendet, um Ihnen eine Adresse und eine Möglichkeit zu geben, sich mit dem Internet zu verbinden, aber normalerweise keine Möglichkeit für andere, sich mit Ihnen zu verbinden. Wenn Sie einen Internetserver auf einer solchen Verbindung ausführen möchten, riskieren Sie, Ihre IP -Adresse jedes Mal zu verlieren, wenn Sie wieder verbinden, oder wie im Fall von DHCP, auch wenn der Mietvertrag neu verhandelt wird.
Durch die Verwendung eines DDNS -Clients wie inadyn können Sie einen Internetnamen bei einem DDNS -Anbieter wie Freedns registrieren. Der DDNS -Client aktualisiert Ihren DNS -Datensatz regelmäßig und/oder bei Bedarf, wenn sich Ihre IP -Adresse ändert. INADYN kann mehrere Host-Datensätze mit derselben IP-Adresse verwalten, eine Kombination aus einem Skript verwenden, die Adresse von einer internetbezogenen Schnittstelle oder standardmäßig zum IP-Adresse Änderungsdetektor des DDNS-Anbieters verwenden.
__
¹ öffentliche IP -Adresse ist die Standardeinstellung, private Adressen können auch verwendet werden.
Einige dieser Dienste sind für den nichtkommerziellen Gebrauch kostenlos, andere eine geringe Gebühr, aber auch mehr Domänen zur Auswahl.
Die folgenden Tier-1-Anbieter haben "Plugins" dedizierte, obwohl viele das ursprüngliche Dyndns-Plugin teilen. Im Folgenden finden Sie eine Liste bekannter DDNS -Anbieter, die vom Plugin bestellt wurden, das sie unterstützt:
Für die vollständige Liste finden Sie in inadyn -L , um die maschinellfreundliche JSON -Ausgabe zu erhalten. Verwenden Sie inadyn -L -j .
DDNS -Anbieter, die nicht nativ unterstützt werden, können mit dem benutzerdefinierten oder generischen DDNS -Plugin aktiviert werden. Weiter unten finden Sie Konfigurationsbeispiele.
In-a-Dyn standardmäßig mit HTTPS, aber nicht alle Anbieter unterstützen dies. Versuchen Sie daher, SSL für das Update ( ssl = false ) oder die Checkip-Phase ( checkip-ssl = false ) im provider zu deaktivieren, falls Sie auf Probleme stoßen.
HTTPS ist standardmäßig aktiviert, da es Ihre Anmeldeinformationen vor Schnüffeln schützt und das Risiko verringert, dass jemand Ihr Konto entführt.
IN-A-Dyn unterstützt die Aktualisierung mehrerer DDNS-Server, mehrere Konten selbst bei verschiedenen DDNS-Anbietern. Das folgende Beispiel /etc/inadyn.conf zeigt, wie dies erledigt werden kann. Um Ihre Konfiguration zu überprüfen, ohne den Daemon zu starten, verwenden Sie:
inadyn --check-config
Dies sucht nach der Standard .conf -Datei, um jede Datei zu überprüfen, verwenden Sie:
inadyn --check-config -f /path/to/file.conf
# In-A-Dyn v2.0 configuration file format
period = 300
user-agent = Mozilla/5.0
# The FreeDNS username must be in lower case
# The password (max 16 chars) is case sensitive
provider freedns {
username = lower-case-username
password = case-sensitive-pwd
hostname = some.example.com
}
# We override checkip server with the In-a-dyn built-in 'default',
# http://ifconfig.me/ip, for details on this, see below.
provider freemyip {
password = YOUR_TOKEN
hostname = YOUR_DOMAIN.freemyip.com
checkip-server = default
}
provider dyn {
ssl = false
username = charlie
password = snoopy
hostname = { peanuts, woodstock }
user-agent = Mozilla/4.0
}
provider duckdns.org {
username = YOUR_TOKEN
password = noPasswordForDuckdns
hostname = YOUR_DOMAIN.duckdns.org
}
# With multiple usernames at the same provider, index with :#
provider no-ip.com:1 {
username = ian
password = secret
hostname = flemming.no-ip.com
user-agent = inadyn/2.2
}
# With multiple usernames at the same provider, index with :#
provider no-ip.com:2 {
username = james
password = bond
hostname = spectre.no-ip.com
checkip-ssl = false
checkip-server = ifconfig.me
checkip-path = /ip
}
# With multiple usernames at the same provider, index with :#
provider no-ip.com:3 {
username = spaceman
password = bowie
hostname = spaceman.no-ip.com
checkip-command = "/sbin/ifconfig eth0 | grep 'inet6 addr'"
}
# Google Domains - notice use of '@' to update root entry
provider domains.google.com:1 {
hostname = @.mydomain.com
username = your_username
password = your_password
}
# Wildcard subdomains - notice the quotes (required!)
provider domains.google.com:2 {
hostname = "*.mydomain.com"
username = your_username
password = your_password
}
# Note: hostname == update-key from Advanced tab in the Web UI
provider tunnelbroker.net {
username = futurekid
password = dreoadsad/+dsad21321 # update-key-in-advanced-tab
hostname = 1234534245321 # tunnel-id
}
# dynv6.com update using a custom checkip-command, which works
# if you have access to an Internet-connected interface. Make
# sure to verify the command works on your system first
allow-ipv6 = true # required option for IPv6 atm.
provider dynv6.com {
username = your_token
password = not_used
hostname = { host1.dynv6.net, host2.dynv6.net }
checkip-command = "/sbin/ip -6 addr | grep inet6 | awk -F '[ t]+|/' '{print $3}' | grep -v ^::1 | grep -v ^fe80"
}
provider cloudxns.net {
username = your_api_key
password = your_secret_key
hostname = yourhost.example.com
}
provider dnspod.cn {
username = your_api_id
password = your_api_token
hostname = yourhost.example.com
}
# Create a unique custom API token with the following permissions:
# -> Zone.Zone - Read, Zone.DNS - Edit.
provider cloudflare.com {
username = zone.name
password = api_token_important_read_comment
hostname = hostname.zone.name
ttl = 1 # optional, value of 1 is 'automatic'.
proxied = false # optional.
}
provider goip.de {
username = user.name
password = user.password
hostname = hostname.zone.name
}
Beachten Sie, wie die Konfiguration drei verschiedene Benutzer des No-IP-Anbieters enthält-dies wird erreicht, indem A :ID zum Anbieternamen angehängt wird.
Wir definieren auch ein benutzerdefiniertes Cache -Verzeichnis. Standardmäßig verwendet /var/cache . In unserem Fall /mnt ist ein systemspezifischer persistierender Speicher zum Zwischenspeichern Ihrer IP -Adresse, wie er jedem Anbieter gemeldet wird. INADYN Verwenden Sie dies, um sicherzustellen, dass Sie für übermäßige Updates nicht aus Ihrem Konto gesperrt sind. Dies kann passieren, wenn Ihr Geräte -Internet -Gateway in einer Neustartschleife oder ähnliches stecken bleibt.
Damit der Caching-Mechanismus zu 100% narrensicher ist --startup-delay=SEC Um inadyn zu sagen, dass es in Ordnung ist, vor dem SEC -Zeitübergang fortzufahren, verwenden Sie SIGUSR2 .
Das letzte definierte System ist der von Hurricane Electric bereitgestellte IPv6 https://tunnelbroker.net. Hier wird hostname auf die Tunnel -ID eingestellt, und das Passwort muss der Aktualisierungsschlüssel auf der Registerkarte Erweiterter Konfiguration sein.
HINWEIS: Der
checkip-commandfür Dynv6 oben ist nur eine Möglichkeit, dies zu tun. Hier ist eine weitere Variante aus ihrem eigenen Skript:ip -6 addr list scope global $device | grep -v " fd" | sed -n 's/.*inet6 ([0-9a-f:]+).*/1/p' | head -n 1
Manchmal kann der Standard- checkip-server für einen DDNS-Anbieter nur langsam reagieren, auch wenn es sich um eine Auszeit handelt. In-a-Dyn-Unterstützung, die den Standard des Anbieters mit einem benutzerdefinierten oder benutzerdefinierten Befehl überschreibt. Der einfachste Weg, um es zu ändern, besteht darin checkip-server = default in Ihrer Provider-Konfiguration festzulegen und IN-A-Dyn auszulösen, um die Standardeinstellung http://ifconfig.me/ip zu verwenden, die auch die Standardeinstellung für jede benutzerdefinierte DDNS-Konfiguration ist. Weitere Informationen finden Sie auf den Mannseiten oder im folgenden Abschnitt.
Einige Anbieter benötigen die Verwendung eines bestimmten Browsers zum Senden von Updates. Dies kann mit der Einstellung der user-agent = STRING bearbeitet werden, wie oben gezeigt. Es ist sowohl auf globaler als auch auf providerer Ebene erhältlich.
HINWEIS: Stellen Sie in einem Multi-User Server-Setup sicher, dass Ihr .conf bis 600 (nur von Ihnen/root) vor anderen Benutzern schützt, um Ihre DDNS-Server-Anmeldeinformationen zu lesen.
Zusätzlich zu den Standard -DDNS -Anbietern, die von Inadyn unterstützt werden, können benutzerdefinierte DDNS -Anbieter in der Konfigurationsdatei definiert werden. Verwenden Sie den in den obigen Beispielen verwendeten custom {} in anstelle des provider {} .
IN-A-DYN Verwenden Sie die HTTP-Basisauthentifizierung (Base64 Coded), um Benutzername und Kennwort zum Server zu vermitteln. Wenn Sie keinen Benutzernamen und/oder ein Passwort haben, können Sie diese Felder auslassen. Die grundlegende Authentifizierung wird weiterhin in der Kommunikation mit dem Server verwendet, jedoch mit leerem Benutzernamen und Passwort.
Ein benutzerdefinierter DDNS -Anbieter kann so eingerichtet werden:
custom example {
username = myuser
password = mypass
checkip-server = checkip.example.com
checkip-path = /
ddns-server = update.example.com
ddns-path = "/update?hostname="
hostname = myhostname.example.net
}
Die folgenden Variablen können in die Konfiguration eingesetzt werden:
%u - username
%p - password, if HTTP basic auth is not used
%h - hostname
%i - IP address
Für https://www.namecheap.com kann es wie folgt aussehen. Beachten Sie, wie sich die Hostname -Syntax von oben unterscheidet:
custom namecheap {
username = YOURDOMAIN.TLD
password = mypass
ddns-server = dynamicdns.park-your-domain.com
ddns-path = "/update?domain=%u&password=%p&host=%h&ip=%i"
hostname = { "@", "www", "test" }
ddns-response = "<ErrCount>0</ErrCount>"
}
Hier werden drei Hostnamen aktualisiert, eine HTTP -Aktualisierungsanforderung für jeden aufgelisteten Hostnamen. Einige Anbieter unterstützen, wie Freedns, die Einrichtung von CNAME -Datensätzen (Aliase), um die Anzahl der Datensätze zu verringern, die Sie zum Aktualisieren benötigen. Freedns standardmäßig mit dem Verknüpfen mehrerer Datensätze mit demselben Update, was möglicherweise sehr verwirrend ist, wenn Sie möchten, dass jeder DNS -Datensatz von einer eindeutigen IP -Adresse aktualisiert wird. Überprüfen Sie Ihre Einstellungen im DDNS -Anbieter !
Das generische Plugin kann auch mit Anbietern verwendet werden, für die die neue IP -Adresse des Kunden in der Aktualisierungsanforderung erforderlich ist. Hier ist ein Beispiel dafür, wie dies getan werden kann, wenn wir so tun, als würde http://dyn.com nicht von Inadyn unterstützt. Der ddns-path unterscheidet sich zwischen Anbietern und ist etwas, das Sie herausfinden müssen. Auf den Support -Seiten werden dies manchmal unter einem API -Abschnitt oder ähnlichem aufgeführt.
# This emulates dyndns.org
custom dyn {
username = DYNUSERNAME
password = DYNPASSWORD
ddns-server = members.dyndns.org
ddns-path = "/nic/update?hostname=%h.dyndns.org&myip=%i"
hostname = { YOURHOST, alias }
}
Hier werden hier ein vollständig benutzerdefinierter ddns-path mit Formatspezifikatoren verwendet. Weitere Informationen finden Sie auf der Seite " inadyn.conf(5) .
Ein weiteres Beispiel:
# Custom configuration for dnsmadeeasy
custom dyn {
username = DNSMADEEASYUSERNAME
password = DNSMADEEASYPASSWORDFORTHISHOST
ddns-server = cp.dnsmadeeasy.com
ddns-path = "/servlet/updateip?username=%u&password=%p&id=DNSMADEEASYHOSTID&ip=%i"
hostname = HOST
}
Wenn Sie das generische Plugin verwenden, sollten Sie zunächst die Antwort vom DDNS -Anbieter überprüfen. Standardmäßig sucht Inadyn nach einem 200 HTTP -Antwort OK -Code und den Zeichenfolgen "good" , "OK" , "true" , "success" oder "updated" in der HTTP -Antwortkörper. Wenn der DDNS-Anbieter etwas anderes zurückgibt, können Sie eine Liste möglicher ddns-response = { Arrr, kilroy } oder nur einen einzelnen ddns-response = Cool hinzufügen-wenn Ihr Anbieter eine Antwort angibt, verwenden Sie ddns-response = "" .
Wenn Ihr DDNS-Anbieter Ihnen keinen checkip-server zur Verfügung stellt, können Sie andere Dienste wie http://ifconfig.me/ip verwenden. Dies ist der Standard, wenn Sie keine für Ihre benutzerdefinierte Anbieterkonfiguration angeben:
checkip-server = ifconfig.me
checkip-path = /ip
checkip-ssl = false
oder sogar ein Skript oder Befehl verwenden:
checkip-command = /sbin/ifconfig eth0 | grep 'inet addr'
Diese beiden Einstellungen können auch in Standardabschnitten provider{} verwendet werden.
Hinweis: hostname ist erforderlich, auch wenn im ddns-path alles codiert ist! Der angegebene Hostname ist an den für Aktualisierungen verwendeten ddns-path beigefügt, es sei denn, Sie verwenden die append-myip -Einstellung. In diesem Fall wird Ihre IP-Adresse stattdessen angehängt. Bei Verwendung von append-myip müssen Sie Ihren DNS-Hostnamen wahrscheinlich stattdessen im ddns-path codieren, wie es im letzten Beispiel der obigen Beispiel ist.
Ein häufiges Problem ist der Einstieg, was verständlich ist, da IN-A-Dyn viele verwirrende Optionen hat.
Nachdem Sie Ihren /etc/inadyn.conf gespeichert haben, versuchen Sie zunächst mit vollständigen Debug -Protokollen im Vordergrund:
inadyn -l debug --foreground --force
Jede Missverständnis oder schlechte Serverantworten sollten viel einfacher zu erkennen sein. Denken Sie daran, Ihre Protokolle aus beliebigen Passwörtern und Domäneninformationen zu zensieren, wenn Sie einen Fehlerbericht einreichen oder eine Frage im Forum/IRC stellen!
Versuchen Sie, den Cache zu beseitigen:
sudo systemctl stop inadyn.servicesudo rm -rf /var/cache/inadyn/*sudo systemctl restart inadyn.service Das Projekt hielt lange Zeit eine eigene .deb -Verpackung und eine grundlegende APT -Infrastruktur bei. Das zunehmende Niveau der Merkmale in IN-A-Dyn und damit der Abhängigkeiten sowie die Anforderungen an die Unterstützung von mehr Architekturen und unterschiedlichen Verteilungen wurden die vorgefertigten .deb Unterstützung ab 22.9.1 abgebrochen.
Das Debian -Projekt verfügt nun über einen aktiven Betreuer für Inadyn, der die stromaufwärts für Ubuntu und andere ist. Bitte melden Sie Probleme und Anfragen an Ihre jeweilige Verteilung:
Hinweis: Die Verpackungsdateien des Projekts wurden im Git -Repository in eine separate Debian -Filiale verschoben. Es wird nicht aktiv aktualisiert oder für Veröffentlichungen unterstützt. Um es zu verwenden, lesen Sie die Filiale und bearbeiten Sie
debian/changelog), um neue.deb-Dateien für Ihr System zu erstellen.
Hier automatisch erstellte Bilder, die hier verfügbar sind:
Eine Dockerfile wird bereitgestellt, um das Erstellen und Betrieb inadyn zu vereinfachen.
docker build -t inadyn:latest .
docker run --rm -v "$PWD/inadyn.conf:/etc/inadyn.conf" inadyn:latest
Wenn Sie nicht als Hintergrund-Daemon in-a-dyn ausführen möchten, können Sie einen Cronjob einrichten:
inadyn.conf -Dateicrontab -e hinzu * * * * * docker run --rm -v " path/to/inadyn.conf:/etc/inadyn.conf " -v " path/to/cache:/var/cache/inadyn " troglobit/inadyn:latest -1 --cache-dir=/var/cache/inadyn > /dev/null 2>&1Geben Sie ein, um die neueste stabile Version auf MacOS auszuführen:
brew install inadyn
Um die neueste Version aus der Master -Filiale auszuführen, installieren Sie stattdessen den Git -Tap:
brew install --HEAD troglobit/inadyn/inadyn
Beide von diesen wird alle Abhängigkeiten installieren.
Sie können auch in-a-dyn auf macOS mit MacPorts installieren:
sudo port install inadyn
Weitere Informationen finden Sie auf der Seite von In-A-Dyns Ports.
Laden Sie zuerst die neueste offizielle In-a-Dyn-Veröffentlichung von GitHub herunter:
In-a-Dyn verlangt einige Bibliotheken, um zu bauen. Das Build-System sucht nach ihnen in ihren erforderlichen Versionen unter Verwendung des pkg-config Tools:
Sie sind bei den meisten Unix-Verteilungen als vorgefertigte Pakete erhältlich. Stellen Sie sicher, dass Sie das Paket für -dev oder -devel der Verteilungspakete beim Erstellen von Inadyn installieren. Auf Debian/Ubuntu (Derivate):
$ sudo apt install gnutls-dev libconfuse-dev
Um aufzubauen, benötigen Sie auch einen C-Compiler, das pkg-config Tool, und machen Sie:
$ sudo apt install build-essential pkg-config
Stellen Sie beim Erstellen mit HTTPS (SSL/TLS) sicher, dass das ca-certificates Zertifikationspaket in Ihrem System auch installiert wird. Andernfalls kann INADYN die HTTPS-Zertifikate des DDNS-Anbieters nicht validieren.
Das GNU -Konfigurations- und Build -Systemgebrauch /usr/local als Standard -Installationspräfix. In vielen Fällen ist dies nützlich, aber dies bedeutet, dass die Konfigurationsdateien und Cache -Dateien das gleiche Präfix verwenden. Die meisten Benutzer erwarten diese Dateien in /etc/ und /var/run/ und konfigurieren haben einige nützliche Optionen, die empfohlen werden: Verwenden:
$ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
$ make -j5
$ sudo make install-strip
Möglicherweise möchten Sie die Option --prefix=/usr entfernen.
Standardmäßig versucht Inadyn, mit Gnutls für HTTPS -Unterstützung zu bauen. GNUTLS ist die empfohlene SSL -Bibliothek für UNIX -Verteilungen, die OpenSSL/Libressl als Systembibliothek nicht bereitstellen. Wenn OpenSSL oder Libressl jedoch als Systembibliothek verfügbar ist, beispielsweise in vielen eingebetteten Systemen:
./configure --enable-openssl
Um die Unterstützung von Inadyn HTTPS vollständig zu deaktivieren (nicht empfohlen!):
./configure --disable-ssl
Weitere Informationen zur OpenSSL- und GNU GPL -Lizenzprobleme finden Sie unter:
Einige Leute möchten statisch erstellen, um dies mit autoconf zu tun, fügen Sie nach dem Konfigurationsskript die folgenden LDFLAGS= hinzu. Möglicherweise müssen Sie auch LIBS=... hinzufügen, die von Ihrem speziellen System abhängen:
./configure LDFLAGS="-static" ...
Auf einigen Systemen ist der Standard-Konfigurationsinstallationspfad, /usr/local , deaktiviert und nicht von Tools wie ldconfig und pkg-config durchsucht. Wenn Konfiguration die libConfuse -Bibliotheken oder die .pc -Dateien nicht ermittelt, erstellen Sie die Datei /etc/ld.so.conf.d/local.conf mit diesem Inhalt:
/usr/local/lib
Aktualisieren Sie den Linker -Cache:
sudo ldconfig -v |egrep libconfuse
und führen Sie das Inadyn -Konfigurationsskript wie folgt aus:
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure
Für die Systemd-Integration müssen Sie pkg-config installieren, wodurch das Inadyn-Build-System die systemd-Pfade ermittelt wird. Wenn Sie einfach installiert werden, rufen Sie systemctl auf, um inadyn zu aktivieren und zu beginnen:
$ sudo systemctl enable inadyn.service
$ sudo systemctl start inadyn.service
Überprüfen Sie, ob es ordnungsgemäß gestartet wird, indem es das Systemprotokoll inspiziert oder:
$ sudo systemctl status inadyn.service
Um den Service zu stoppen:
$ sudo systemctl stop inadyn.service
Wenn Sie in einen Router eingebaut sind, werden einige Funktionen normalerweise nicht verwendet und können deaktiviert werden, um Platz zu sparen. Die Konfigurationsoption --enable-reduced baut eine solch reduzierte Funktionalität Binärer auf. Derzeit deaktiviert dies ausführliche Protokollnachrichten und Fehlerzeichenfolgen und beseitigt die Überprüfung der Konfigurationsdatei und einige Rückwärtskompatibilität.
Wenn Sie dazu beitragen möchten oder einfach nur die neuesten, aber unveröffentlichten Funktionen ausprobieren möchten, müssen Sie ein paar Dinge über das GNU -Build -System wissen:
configure.ac und ein pro-direktory Makefile.am sind Schlüsseldateienconfigure und Makefile.in werden von autogen.sh generiert. Sie werden nicht in Git gespeichert, sondern automatisch für die Release -Tarballs generiertMakefile wird durch configure von Skript generiert Aus Git bauen; Klonen Sie das Repository und führen Sie das autogen.sh -Skript aus. Dies erfordert, dass die GNU Tools automake , autoconf und libtool in Ihrem System installiert werden. Freigegebene Tarballs benötigen diese Werkzeuge nicht.
$ sudo apt install git automake autoconf
Anschließend können Sie das Repository klonen und das configure erstellen, das nicht Teil des Git -Repo ist:
git clone https://github.com/troglobit/inadyn.git
cd inadyn/
./autogen.sh
./configure && make
Das Erstellen von Git erfordert zumindest die zuvor genannten Bibliotheksabhängigkeiten. Git -Quellen sind ein bewegendes Ziel und werden nicht für Produktionssysteme empfohlen, es sei denn, Sie wissen, was Sie tun!
Dies ist die Fortsetzung von Narcis Iliseis ursprünglichem Inadyn. Jetzt von Joachim Wiberg gepflegt. Bitte stellen Sie Fehlerberichte vor oder senden Sie Pull -Anfragen für Fehlerbehebungen und vorgeschlagene Erweiterungen bei GitHub.
Ein persönliches Dankeschön! geht an Robert Högberg, der einen kleinen D-Link DIR-645-Router gesponsert hat, damit ich wieder auf die Interwebs steigen konnte :-)