Sysctl IPv6 Autoconfig für alle Schnittstellen deaktivieren funktioniert nicht

Sysctl IPv6 Autoconfig für alle Schnittstellen deaktivieren funktioniert nicht

Ich versuche, die IPv6-Autokonfiguration für alle meine Schnittstellen (ich habe 4) zu deaktivieren. Ich möchte

net.ipv6.conf.all.autoconf = 0

In meiner Sysctl-Konfiguration (unter /etc/sysct.d) werden die Einstellungen jedoch für keine Schnittstelle übernommen, für die net.ipv6.conf.all.autoconfParameter funktioniert es jedoch, also führe ich den folgenden Befehl aus: `

sysctl -a | grep "net\.ipv6\.conf" | grep "autoconf"

net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.eth0.autoconf = 1
net.ipv6.conf.eth1.autoconf = 1
net.ipv6.conf.eth2.autoconf = 1
net.ipv6.conf.eth3.autoconf = 1

Dann habe ich es mit der On-the-Fly-Einstellung versucht mit

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

Aber beides funktioniert nicht. Kennen Sie einen Workaround dafür? Der Grund, warum ich es nicht einzeln ( net.ipv6.conf.eth3.autoconf = 0manuell) machen wollte, ist, dass ich manchmal auch mehrere Schnittstellen habe (diese sind einfach nicht immer verbunden).

Antwort1

Kurz zusammengefasst

for sInterface in /proc/sys/net/ipv6/conf/*; do sysctl --write $(echo $sInterface.autoconf=0 | sed "s#/#.#g" | sed "s/.proc.sys.//g"); done

Sollte es tun.

Die Langfassung:

  • sysctländert tatsächlich den Dateiinhalt in/proc/sys
  • net.ipv6.conf.all.autoconfbefindet sich somit physisch in/proc/sys/net/ipv6/conf/all/autoconf
  • also iterieren wir über/proc/sys/net/ipv6/conf/
  • Wir ändern alles /in .die Verwendung seddes #Trennzeichens
  • entfernen wir .proc.sys.wieder aus dem String, indem wir sedden Standardtrennzeichen verwenden /.
  • Wir ergänzen .autoconf=0die Schnittstelle
  • und bewerben Sie sich mitsysctl --write $()

Notiz:Wenn Sie nicht so laufen, wie rootSie sollten, tun Sie sudo sysctl --write $()stattdessen Folgendes ...

verwandte Informationen