Sysctl IPv6 为所有不工作的接口禁用自动配置

Att*_*Kis 8 server ipv6 networking

我正在尝试为我的所有接口关闭 IPv6 自动配置(我有 4 个)。我想用

net.ipv6.conf.all.autoconf = 0
Run Code Online (Sandbox Code Playgroud)

在我的 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
Run Code Online (Sandbox Code Playgroud)

然后我尝试使用动态设置

sysctl -w net.ipv6.conf.all.autoconf=0
Run Code Online (Sandbox Code Playgroud)

但它的工作。你知道任何解决方法吗?不想一一做的原因(net.ipv6.conf.eth3.autoconf = 0手动),因为有时候我的接口也比较多(只是不是一直连接)

Fab*_*bby 4

长话短说

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

应该这样做。

长版本:

  • 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 $()......