====Dynamisches DNS====
Szenario: Man möchte von daheim auf einen Schulserver ((dieser kann natürlich auch ein [[reverse_proxy|Gateway-Server]] sein, der Anfragen an weiter hinten liegende interne Webserver weiterleitet.)) zugreifen. Die Schule hat nur einen einfachen Internetzugang, dessen IP-Adressen sich dynamisch (i.d.R. täglich) ändern. Um ihn erreichen zu können sorgt man dafür, dass die neuen Adressen an einen geeigneten Dienst (früher: dyndns.com, jetzt eher andere Anbieter wie z.B. spDYN.de) gemeldet werden. Dann kann man den Schulserver unter der beispielhaften Adresse serviceabcschule.my-firewall.org erreichen, da dieser DNS-Name immer mit den aktuellen Adressen aufgelöst wird. Siehe dazu auch [[https://de.wikipedia.org/wiki/Dynamisches_DNS]].
===Tipp===
Will man das Kollegium oder gar die Eltern- und Schülerschaft auf den Server lassen, so sollte man den DNS-Namen des DynDNS-Dienstes nicht veröffentlichen, sondern einen zusätzlichen DNS-Eintrag bei der Schuldomäne vornehmen, z.B. service.abc-schule.edu. Dieser Eintrag muss vom Typ CNAME mit dem Ziel serviceabcschule.my-firewall.org sein.
Vorteil: Man kann jederzeit den DynDNS-Dienst wechseln, ohne dass man eine andere URL veröffentlichen muss. Nur der CNAME-Eintrag muss geändert werden, was Zeit hat, bis der neue Dienst zuverlässig läuft.
===Aktualisierung===
==Router macht's==
Reine IPv4-Adressen lässt man eher vom Router aktualisieren.
==OPNsense macht's==
In der WebGUI kann man mehrere unter Services->Dynamic DNS aus verschiedenen Dyn-DNS-Diensten auswählen oder eine Custom-URL eingeben. \\
Vorteil: OPNsense überwacht selbst seine IP-Adressen.
Tipp: Wenn man der automatischen Erkennung nicht traut, so kann man zusätzlich einen crontab-Eintrag unter System->Settings->Cron anlegen, der z.B. um 5 Uhr morgens (also nach der typischen Zeit, in der eine Fritzbox sich neu einwählt) eine Aktualisierung durchführt.
==Linux-Server macht's==
Es gibt viele Anleitungen für die Aktualisierung durch Rechner bei dynamisch vergebenen IP-Adressen. Selten findet man aber eine, die sich mit dem Problem beschäftigt, dass man sowohl IPv4-, als auch IPv6-Adressen zuweisen möchte.
Bei meiner letzten Recherche im Jahr 2019 fand ich nur wenige kostenlose Dienste, die das anbieten. Ergebnis sind u.a. die beiden folgenden Skripte, die unter Linux **auf dem Server in der DMZ** laufen (wenn curl installiert ist). Sie werden bei mir alle 5 Minuten aufgerufen und überprüfen die aktuellen IP-Adressen und melden diese nur bei Adressänderung an den Dienst. Vielleicht reicht auch eine Überprüfung morgens um 6 Uhr.
==Funktionsfähige Datei für SPdyn==
Hier die besser funktionierende mit dem Anbieter spDYN.de
#!/bin/sh
## Konfiguration SPdyn
tokenv4='nmxx-yyyy-zzcj'
tokenv6='jhvv-wwww-uuah'
hostname='serviceabcschule.my-firewall.org'
## Und los:
aktipv6=`ip addr | grep "inet6 2" | awk '{print $2}' | awk -v FS='/' '{print $1}'| head -n1`
content=1234
content=$(cat /tmp/dynv6.state)
#echo ${aktipv6} vs ${content}
if [ "${aktipv6}" != "${content}" ];then
aktipv4=`/usr/bin/curl "http://checkip4.spdyn.de"`
echo `date` "setzen: IPv4: ${aktipv4} IPv6: ${aktipv6}"
/usr/bin/curl "https://${hostname}:${tokenv6}@update.spdyn.de/nic/update?hostname=${hostname}&myip=$aktipv6"
echo ${aktipv6} > /tmp/dynv6.state
#/usr/bin/curl "https://${hostname}:${tokenv4}@update.spdyn.de/nic/update?hostname=${hostname}&myip=$aktipv4"
/usr/bin/curl --ipv4 "https://${hostname}:${tokenv4}@update.spdyn.de/nic/update?hostname=${hostname}&myip=192.168.0.1"
service apache2 restart
else
echo `date` "-> Keine Aenderung in der IP-Adresse"
fi
==Funktionsfähige Datei für DynV6==
Der Dienst dynv6.de ist/war? eher ein Hobbyprojekt. Mit folgendem einfacheren Skript ließ es sich erfolgreich nutzen:
#!/bin/sh
## Konfiguration:
token='PMPxxxxxxxxxyyyyyyyyyyyyzzzzzzzzzL'
hostname='unsergatewayserver.dynv6.net'
## Und los:
aktstate=`ip addr | grep inet6 | md5sum | awk '{print $1}'`
content=1234
content=$(cat /tmp/dynv6.state)
#echo $aktstate vs $content
if [ "$aktstate" != "$content" ];then
date
/usr/bin/curl "https://ipv4.dynv6.com/api/update?token=${token};hostname=${hostname};ipv4=auto"
/usr/bin/curl "https://ipv6.dynv6.com/api/update?token=${token};hostname=${hostname};ipv6=auto"
echo $aktstate > /tmp/dynv6.state
#else
# date
# echo Keine Aenderung in der IP-Adresse
fi
{{tag>HowTo Dyn-DNS IPv4 IPv6}}