Skript bei Änderung des IPv6-Präfixes ausführen

785
MBober

Wie kann ich ein Skript oder ein Programm ausführen, wenn sich mein (weltweit routbares) IPv6-Präfix ändert?

Wenn dies (derzeit) nicht einfach ist, wäre ein Zeiger auf die entsprechenden Systemaufrufe von Posix für mich völlig in Ordnung. Ich könnte dann selbst ein C programmieren. Im Moment bin ich bei diesem Thema etwas verloren.

Hintergrund: Mein ISP (Verbrauchervertrag) gibt mir nur ein weltweit routbares IPv6-Präfix mit einer Lebensdauer von etwa einem Tag. Dafür gibt es einige gute Gründe (Netzwerkverlagerung möglich machen), aber mein ISP (anders als mein alter) ordnet mir mein altes Präfix nach Ablauf seiner Lebensdauer nicht einfach neu zu, sondern gibt mir einen völlig neuen. Ich möchte jetzt einige externe DNS mit meinem neuen Präfix aktualisieren, wenn dies geschieht.

3
Wie konfigurieren Sie derzeit IPv6? Vielleicht gibt es dort einen nützlichen Haken. a CVn vor 9 Jahren 0

2 Antworten auf die Frage

2
Andrew Domaszek

Sie könnten nach SLAAC- oder DHCP6-Paketen an Ihrem MAC suchen, z. B. iptables bestimmte Bytes von SLAAC oder DHCP6 in syslog protokollieren lassen und einen Log-Watcher ausführen. Es gibt keinen posix-Aufruf, um die lokale Adresse direkt abzurufen, obwohl es Problemumgehungen gibt . Bei Linux sollten Sie mit diesem Netlink-Code auf eine Aktualisierungsnachricht des Kernels warten und alle erforderlichen Schritte ausführen.

Das Schnüffeln von Paketen würde Root-Rechte erfordern, richtig? Ich denke nicht, dass dies notwendig sein sollte. Der Netlink-Code sieht vielversprechend aus. Ich werde es versuchen. Vielen Dank. MBober vor 9 Jahren 0
Ja tut es. In meinem Beispiel wird iptables im Kernel ausgeführt (privilegiert), syslog sollte jedoch weltweit lesbar sein. Ich kann nicht garantieren, dass für einen bestimmten Netlink-Code kein CAP_NET_ADMIN erforderlich ist, da ich es nicht ausprobiert habe. Dies sollte jedoch vernünftigerweise nicht der Fall sein. Andrew Domaszek vor 9 Jahren 0
@MBober Nein, für das Paket-Sniffing sind keine Root-Berechtigungen erforderlich. Es * benötigt * jedoch die `CAP_NET_ADMIN`-Funktion, die Sie von Root-Berechtigungen erhalten. [Fähigkeiten (7)] (http://man7.org/linux/man-pages/man7/capabilities.7.html). a CVn vor 9 Jahren 1
0
Wolfgang Tremmel

hier ist meine Lösung .... einfach, aber funktioniert ... setze dies oder ähnliches in /etc/cron.hourly:

#!/bin/bash #   ADDRSTORE=/var/local/lib/dyndns/myoldipv6address  MYV6=`ip -6 address show scope global -deprecated | grep inet6 | cut -d/ -f1 | sed -e 's/ *inet6 //'`  MYOLDV6=`cat $ADDRSTORE`  if [ $MYV6 != $MYOLDV6 ]; then # do change-action here echo $MYV6 >$ADDRSTORE fi