Sysctl IPv6 停用所有不工作的介面的自動配置

Sysctl IPv6 停用所有不工作的介面的自動配置

我正在嘗試關閉所有介面的 IPv6 自動配置(我有 4 個)。我想用

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

但兩者都不起作用。您知道有什麼解決方法嗎?我不想一一進行(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 $()那樣跑步...

相關內容