Durch Aktivieren von Privacy Extension
( net.ipv6.conf.eth0.use_tempaddr=2
in /etc/sysctl.conf
) IPv6
erhalte ich für einen festgelegten Zeitraum eine neue IP-Adresse. Gibt es eine Möglichkeit, bei Bedarf eine neue IPv6-Adresse zu erhalten, d. h. bei Bedarf eine neue IPv6-Adresse zu aktualisieren?
Antwort1
Die „aktive“ temporäre Adresse hat EigenschaftenvorübergehendUnddynamischaber nichtveraltet. Wenn es veraltet ist (d. h. wenn esbevorzugte_lftDer Kernel fügt der Schnittstelle eine neue temporäre Adresse hinzu, wenn der Wert auf 0 fällt.
Die aktuelle temporäre Adresse der Schnittstelle ist Teil der hier angezeigten Ergebnisse:
ip -6 address show temporary dynamic
aber nicht Teil der älteren Adressen, die noch gültig, aber veraltet sind und wie folgt angezeigt werden:
ip -6 address show temporary deprecated
Sie müssen nur die preferred_lft
Eigenschaft auf nahezu Null senken, um die Erstellung der neuen temporären Adresse auszulösen. Ausprobieren hat ergeben, dass dies nicht funktioniert, wenn der Wert preferred_lft
unter 3 eingestellt ist: Der Countdown erreicht 0, bevor die Erstellung ausgelöst wird, und dann funktioniert es nicht mehr (man kann den Wert aber preferred_lft
später noch einmal auf >= 3 einstellen, um den Auslöser zu erhalten). Ich weiß nicht, ob es für diese Besonderheit irgendeinen Regler gibt. 5 Sekunden scheinen ein sicherer Wert zu sein, was bedeutet, dass die neue Adresse etwa 2 oder 3 Sekunden später erscheint.
Nehmen wir an, der aktuell gefundene Wert ist 2001:db8::1/64 auf der Schnittstelleeth0:
ip address change 2001:db8::1/64 dev eth0 preferred_lft 5
Beachten Sie, dass durch Manipulation diedynamischDies wäre auf natürliche Weise nicht geschehen und könnte möglicherweise früher als erwartet zur späteren Erstellung zusätzlicher temporärer Adressen führen.
Mit ip
der JSON-Ausgabe von undjq
einige Skriptfunktionen sind möglich, hier ist, was ich mir ausgedacht habe, um die Befehle auszugeben, die bereit sind, an eine Shell weitergeleitet zu werden, um alle in Frage kommenden temporären Adressen auf einmal zu ändern (normalerweise erfordert dies ein Multi-Homed-System, um mehr als eine Adresse zu erhalten, aber eine Manipulation hieran könnte später möglicherweise auch mehrere erstellen). Es überprüft, ob dievorübergehendUnddynamischAdresse ist nichtveraltetum es als Kandidaten zu betrachten:
ip -6 -p -j address show temporary dynamic | jq -j '.[] |
. as $i |
.addr_info[] as $a |
if $a.local == null // $a.deprecated == true then
empty
else
"ip -6 address change ",
$a.local, "/", $a.prefixlen,
" dev ", $i.ifname,
" preferred_lft 5\n"
end'
was wieder ausgeben würde:
ip -6 address change 2001:db8::1/64 dev eth0 preferred_lft 5
Sie könnten auch eine Reduzierung in Betracht ziehen, valid_lft
damit die jetzt veraltete Adresse schneller vollständig verschwindet.