Wie deaktiviere ich die Autokonfiguration unter IPv6 unter Linux?

22

Wie kann ich die automatische Konfiguration von IPv6 unter Linux dauerhaft deaktivieren? Wenn ich versuche, eine Adresse manuell von einer Schnittstelle zu löschen, geschieht Folgendes:

ip -6 addr del 2001:0db8:85a3:0000:0000:8a2e:0370:7334/64 dev eth1

Es wird einige Sekunden später wieder angezeigt. Ich möchte, dass es dauerhaft gelöscht wird, ohne jedoch IPv6 insgesamt zu deaktivieren.

Grumbel
quelle

Antworten:

21

Die automatische Konfiguration kann für eth1 vorübergehend deaktiviert werden mit:

sudo sysctl -w net.ipv6.conf.eth1.autoconf=0
sudo sysctl -w net.ipv6.conf.eth1.accept_ra=0

oder für alle Schnittstellen mit:

sudo sysctl -w net.ipv6.conf.all.autoconf=0
sudo sysctl -w net.ipv6.conf.all.accept_ra=0

Das erneute Aktivieren funktioniert, indem im Aufruf 1 anstelle von 0 verwendet wird.

Die dauerhafte Deaktivierung kann mit einem Eintrag in erfolgen /etc/sysctl.conf. Unter Debian Etch (wahrscheinlich auch unter neueren accept_raVersionen fe80..) wird das System ohne Einstellung von automatisch unter Verwendung der lokalen Link-Adresse ( ) konfiguriert.

Wie Gart unten erwähnt, wird die automatische Adresskonfiguration und Routererkennung deaktiviert werden , wenn der Host selbst ein Router ist und accept_ranicht 2, das heißt

net.ipv6.conf.<iface|all|default>.forwarding=1

und

net.ipv6.conf.<iface|all|default>.accept_ra=0 oder net.ipv6.conf.<iface|all|default>.accept_ra=1.

Wo ifaceist deine Schnittstelle?

Grumbel
quelle
3
Außerdem werden die automatische Adresskonfiguration und die Routererkennung deaktiviert, wenn der Host selbst ein Router ist, dh festgelegt net.ipv6.conf.all.forwarding=1ist.
Gart
4

net.ipv6.conf.all.accept_ra = 0 oben sollte nicht durchgeführt werden, da RAs für die Anzeige von On-Link und Off-Link für das Präfix (gemäß RFC5942) sowie für die automatisierte Konfiguration einer Reihe von anderen erforderlich sind Parameter wie MTU, Zeitüberschreitungen bei der Nachbarermittlung usw.

Wenn Sie die Autokonfiguration deaktivieren möchten, setzen Sie entweder das Autokonfigurationssystem wie oben beschrieben auf Aus oder schalten Sie das A (Autokonfigurationsbit) in der Prefix Information Option (PIO) in der RA aus.

Mark S
quelle
3
sudo sysctl -w net.ipv6.conf.all.autoconf=0

Bei Debian Wheezy hat das nicht funktioniert. Nach der Prüfung von /etc/sysctl.conf musste ich verwenden

sudo sysctl -w net.ipv6.conf.default.autoconf=0
Nick B.
quelle
3

Die sysctlLösung funktionierte bei uns unter Ubuntu 18.04 Bionic nicht. Wir haben es gelöst durch:

Bearbeiten /etc/netplan/01-netcfg.yaml, konfigurieren:

network:
  ...
  ethernets:
    eth0:
      ...
      dhcp6: no
      accept-ra: no

Möglicherweise müssen Sie stattdessen Ihren Schnittstellennamen verwenden eth0. Nachdem Sie die Datei gespeichert haben, führen Sie Folgendes aus:

netplan apply oder reboot

Wenn Sie bereits eine IPv6-IP von der automatischen Konfiguration erhalten haben und diese ohne Neustart entfernen möchten, können Sie Folgendes ausführen:

ip -6 addr del 1111:2222:1:0:aaaa:bbbb:cccc:dddd/64 dev eth0 

Natürlich müssen Sie die IP und das Gerät in diesem Befehl ersetzen.

Jeroen Vermeulen - MageHost
quelle
das hat mich gerade dazu gebracht, mir seit ein paar Monaten den Kopf zu kratzen: D
anthonysomerset
2
Normalerweise scratche ich einfach bei Google, bis ich es finde.
Jeroen Vermeulen - MageHost
1
Das hat funktioniert, als ich es ausprobiert habe, aber das Problem, Accept-Ra auszuschalten, ist ziemlich gefährlich, wie von Mark S erwähnt - es scheint zu funktionieren, aber später stellen Sie möglicherweise fest, dass Pakete fehlen, weil sie einen Fragmentierungspunkt oder einen Failover-Router erreichen wird genutzt. Auch es bricht Pings. Der Grund, warum ich dies versuchte, war, meinen SPF-Datensatz in ausgehenden E-Mails zuverlässig abzugleichen, aber dann wurde mir klar, dass ich stattdessen eine Netzmaske in dem Datensatz hätte verwenden sollen, da in IPv6 ein Adressbereich effektiv zu einem Computer gehört, nicht zu einer einzelnen Adresse .
Phil McKerracher
2

Das Problem mit Ubuntu 18 und ipv6 ist, dass systemd-networkd die Kernel-Parameter steuert. Obwohl man ipv6 mit sysctl deaktivieren kann, ist networkd mehr als glücklich, wenn die Konfiguration nichts anderes vorgibt.

Meine Lösung zum Deaktivieren von ipv6 besteht darin, link-local in netplan auf einen leeren Skalar zu konfigurieren (vorausgesetzt, Sie haben keine link-local ipv4-IPs).

network:
     version: 2
     renderer: networkd
     ethernets:
     eth0:
        ..
        link-local: [ ]

Die Konfiguration kompiliert die Konfiguration für networkd, die in /run/systemd/network/10-netplan-eth0.network veröffentlicht wird und networkd davon überzeugt, ipv6 nicht für eth0 zu installieren

Wenn Sie ipv6 auch im Loopback deaktivieren möchten, können Sie dies ganz einfach erreichen, indem Sie den Kernel-Parameter net.ipv6.conf.all.disable_ipv6 auf 1 setzen. Networkd scheint das Loopback nicht zu steuern.

sysctl -w net.ipv6.conf.all.disable_ipv6=1
Daniel
quelle
Ihre sehr saubere Lösung gefällt mir sehr gut. Da wir keine verbindungslokalen Adressen verwenden, ist das Hinzufügen des leeren Skalars die perfekte Lösung. Danach mussten wir den Server neu starten, da netplan apply die bereits zugewiesenen IPv6-Adressen auf unseren beiden Ethernet-Schnittstellen beibehielt. Aber nach dem Neustart funktioniert alles so, wie Sie es gesagt haben. Ich glaube nicht, dass es einen Grund gibt, IPv6 auf der Loopback-Schnittstelle zu deaktivieren, deshalb habe ich nur den sysctl-Teil übersprungen. Vielen Dank!
Zoltan