====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}}