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

但两者都不起作用。你知道有什么解决方法吗?我不想一个接一个地(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 $()......

相关内容