Sysctl IPv6 がすべてのインターフェースの自動構成を無効にすると機能しない

Sysctl IPv6 がすべてのインターフェースの自動構成を無効にすると機能しない

私はすべてのインターフェース(4つあります)のIPv6自動設定をオフにしようとしています。

net.ipv6.conf.all.autoconf = 0

私のsysctl設定(以下/etc/sysct.d)では、設定はどのインターフェースにも適用されませんが、net.ipv6.conf.all.autoconfパラメータについては機能するため、次のコマンドを実行します:`

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

それから、オンザフライ設定を試してみました

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

しかし、どちらも機能していません。これに対する回避策をご存知ですか? 1 つずつ (net.ipv6.conf.eth3.autoconf = 0手動で) 実行したくない理由は、インターフェイスが複数ある場合もあるためです (これらは常に接続されているわけではありません)

答え1

要約

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

それをすべきです。

長いバージョン:

  • sysctl実際にファイルの内容を変更する/proc/sys
  • net.ipv6.conf.all.autoconfしたがって、物理的には/proc/sys/net/ipv6/conf/all/autoconf
  • そこで繰り返して/proc/sys/net/ipv6/conf/
  • 区切り文字を使用してすべて/を に 変更します.sed#
  • 標準の区切り文字を使用して、.proc.sys.文字列から再度削除します。sed/
  • .autoconf=0インターフェースに追加する
  • そして応募するsysctl --write $()

注記:root実行されていない場合は、sudo sysctl --write $()代わりに...

関連情報