|
|
лет назад: 8 | |
|---|---|---|
| README.md | лет назад: 8 | |
| script.sh | лет назад: 8 |
Das alles funktioniert nur dann, wenn das hier beschriebene im selben Netz / auf dem selben Host passiert, dessen IP aktualisiert werden soll
Unser Nameserver delta.memory-leak.de muß Master der Zone sein
Wie finde ich das raus?
zone "$zonenname" {
type master;
file "$zonendatei";
};
Wichtig ist in der zweiten Zeile master
Die Zonendatei muß im Ordner /etc/bind/dynamic-zones liegen
.jnlEin für die Zonen-Datei eingetragener Schlüssel, mit dem das Update signiert wird
Mit dem Tool ddns-confgen (in Debian im Paket bind9 enthalten), den erforderlichen Schlüssel generieren:
ddns-confgen -z $ZONE
$ZONE ist die gewünschte Zone, in meinem Fall war das memory-leak.de
root@delta:/etc/bind# ddns-confgen -z memory-leak.dre
# To activate this key, place the following in named.conf, and
# in a separate keyfile on the system or systems from which nsupdate
# will be run:
key "ddns-key.memory-leak.dre" {
algorithm hmac-sha256;
secret "hMZ4fVbpllxEJ93AoTa+PjYeUIXx2FHXLgBTz/fWXlA=";
};
# Then, in the "zone" definition statement for "memory-leak.dre",
# place an "update-policy" statement like this one, adjusted as
# needed for your preferred permissions:
update-policy {
grant ddns-key.memory-leak.dre zonesub ANY;
};
Dem Ergebnis und den Anweisungen schließt man sich nahezu vollständig an.
In die Datei ddns-key.$zone kopiert man den ersten Abschnitt:
root@delta:/etc/bind# cat ddns-key.memory-leak.dre
# To activate this key, place the following in named.conf, and
# in a separate keyfile on the system or systems from which nsupdate
# will be run:
key "ddns-key.memory-leak.dre" {
algorithm hmac-sha256;
secret "hMZ4fVbpllxEJ93AoTa+PjYeUIXx2FHXLgBTz/fWXlA=";
};
Danach integriert man den Schlüssel im System:
root@delta:/etc/bind# cat named.conf.local
...
include "/etc/bind/ddns-key.memory-leak.dre";
Und zu guter Letzt wird der Schlüssel noch für die jeweilige Zone mit seinen Berechtigungen integriert.
Dazu editiert man die Datei named.conf.public-zones:
root@delta:/etc/bind# head -n 8 named.conf.public-zones
zone "memory-leak.de" {
type master;
file "/etc/bind/dynamic-zones/db.memory-leak.dre";
// dynamic-zones necessary, because binds named needs to be allowed to write journal files to this directory
// journal files must be created in the directory of the original zone file. BIND BUG?
update-policy { grant ddns-key.memory-leak.dre name murnau.memory-leak.de ANY; };
};
Die letzte Zeile vor der schließenden Klammer sagt im Prinzip folgendes aus:
Mit dem Schlüssel, der als ddns-key.memory-leak.dre in die Konfiguration eingebunden wurde, darf ich für die Zonendatei db.memory-leak.dre Veränderungen am Eintrag vornehmen, der auf den Namen murnau.memory-leak.de passt. Für eine genauere Beschreibung der Policy-Einträge kann man sich http://www.zytrax.com/books/dns/ch7/xfer.html#update-policy anschauen. Für eine genauere Einschränkung könnte ich in meinem Fall noch ANY durch A ersetzen, weil ich nur A Records bearbeiten möchte.
Um den Schlüssel, den wir erzeugt haben, jetzt auch für Aktualisierungen noch nutzen zu können, kopiert man sich den Abschnitt mit dem Schlüssel selbst noch in eine Datei key.txt:
key "ddns-key.memory-leak.dre" {
algorithm hmac-sha256;
secret "hMZ4fVbpllxEJ93AoTa+PjYeUIXx2FHXLgBTz/fWXlA=";
};
Diese Datei hat man auf dem System, von dem die Aktualisierungen kommen.
Damit sind alle Vorarbeiten abgeschlossen.
Im Prinzip erfolgt die Nutzung mit dem im Repository hinterlegten Skript script.sh.
Dazu setzt man folgende Parameter im Skript:
delta.memory-leak.dekey.txtmurnau.memory-leak.de.Die Logik des Skritpes ist geklaut von https://www.thomaschristlieb.de/eigener-dyndns-dienst-mit-fritzbox-und-hetzner/, alle Credits für das Skript gehören also nicht mir.
Das Skript erledigt dann folgendes:
Es gibt also einen sehr wichtigen Aspekt: das Skript MUSS von dem NAT-Netz ausgeführt werden, dessen Eintrag aktualisiert werden soll. Es muß nicht zwingend der Router sein, sondern es kann auch ein beliebiges Linux / Unix hinter dem Router sein, solange
$NS erreichbar istresolver1.opendns.com erreichbar ist