Der Router in meinem Netzwerk verteilt ein von meinem ISP zugewiesenes IPv6-Präfix. Dieses Präfix ist dynamisch, aber "ziemlich klebrig".
Ich möchte, dass meine Computer das in den RAs angekündigte Präfix automatisch abrufen, es jedoch mit einem benutzerdefinierten lokalen Teil kombinieren, anstatt eines zufällig oder basierend auf der MAC-Adresse zu generieren. Gibt es eine einfache Möglichkeit, das zu tun?
Antworten:
Es gibt zwei Möglichkeiten, dies zu tun. Einer ist der einfache Weg und einer ist der harte Weg.
Die einfache Möglichkeit besteht darin, einen DHCPv6-Server in Ihrem Netzwerk auszuführen und jedem Gerät selbst Hostadressen zuzuweisen. Oder lassen Sie den Server den Host-Teil auswählen. Die DHCPv6-Server, die ich gesehen habe, behalten denselben Host-Teil bei, auch wenn sich das Präfix ändert.
Der schwierige Weg besteht darin
ip token
, tokenisierte Schnittstellenkennungen festzulegen. Dies wird beschrieben als:Der Grund dafür ist, dass Linux zwar diese Funktionalität enthält, aber keine mir bekannte Linux-Distribution Unterstützung dafür bietet, eine solche Konfiguration dauerhaft zu machen und sie beim Booten anzuwenden, wie dies bei manuellen oder DHCP-konfigurierten Adressen der Fall ist. Es wird also wahrscheinlich nicht sehr gut für Sie funktionieren, bis eine Verteilung dies tut.Beachten Sie, dass es jetzt möglich ist, IPv6-Token in NetworkManager und systemd-networkd zu konfigurieren. Neuere Antworten enthalten spezifische Konfigurationsanweisungen.Wenn Ihr ISP gelegentlich Ihr Präfix ändert, sollten Sie die Verwendung eindeutiger lokaler Adressen in Ihrem Netzwerk in Betracht ziehen. Auf diese Weise haben alle Ihre Geräte immer eine Adresse, die sich nie ändert und mit der sie miteinander kommunizieren können. Einige IPv6-unterstützende Heim- / SOHO-Router (wie OpenWrt) bieten die Option, ULA im gesamten Heimnetzwerk zu aktivieren. Wenn sich zu Hause mehrere Router befinden, sollte dies auf dem Router aktiviert sein, der eine Verbindung zum ISP herstellt.
quelle
Michael hat eine sehr gute Zusammenfassung gemacht und Plugwashs jüngster Tipp war der beste, den ich finden konnte, nachdem ich mehrere Stunden nach einer CentOS 7 / RHEL-Lösung (auch systemd und network manager) gesucht hatte. Nachdem ich mich an nmcli gewöhnt hatte (ich benutzte hauptsächlich noch ifcfg und ip), konnte ich es erfolgreich anwenden.
Laut https://developer.gnome.org/NetworkManager/stable/settings-ipv6.html NetworkManager unterstützt IPv6-Token-Schnittstellen-IDs jedoch direkt als Eigenschaft (ab Version 1.4 August 2016 http://news.softpedia.com/). news / networkmanager-1-4-fügt-Unterstützung-für-das-Einstellen von ipv6-tokenized-interface-identifiers-507601.shtml hinzu ).
Sie müssen also die IPv6-Einstellungen des Netzwerkmanagers nicht zum Ignorieren festlegen, sondern sollten die Einstellungen auf festlegen
Das wird
IPV6_TOKEN=::2
in / etc / sysconfig / network-scripts / ifcfg-eth0 schreiben, um einen Neustart zu überleben. Um dies sofort anzuwenden, starten Sie die Schnittstelle neuquelle
Vielen Dank an Michael für die Bestätigung, dass Linux die Funktion unterstützt, und für den Hinweis auf den Befehl auf niedriger Ebene. Diese Antwort beschreibt, wie es in der Praxis auf einem Debian-Stretch-Desktop (mit systemd und network-manager) funktioniert.
Bearbeiten Sie zuerst die Verbindung im Netzwerkmanager und stellen Sie die IPv6-Einstellungen so ein, dass sie ignoriert werden.
Erstellen Sie nun eine Datei /etc/NetworkManager/dispatcher.d/pre-up.d/iptoken. Die Datei sollte im Besitz von root, Berechtigungen 755 und mit dem folgenden Inhalt sein.
Ersetzen Sie eth0 durch das gewünschte Gerät und :: 2 durch das gewünschte Suffix.
quelle
Unter Linux können Sie verwenden
systemd-network
.Erstellen Sie einfach eine
.network
Datei unter/etc/systemd/network/somename.network
:Anstatt
e*
alle Schnittstellen ab zu vergleichene
, können Sie den vollständigen Schnittstellennamen eingeben. Dies aktiviert DHCP {v4, v6} und wird::1
als Suffix verwendet. Sie können eine beliebige IPv6-Adresse auswählen, die ersten 64 Bit müssen jedoch auf Null gesetzt werden.Danach aktivieren und starten Sie die
systemd-networkd.service
.quelle