我正在尝试关闭所有接口(我有 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 $()
......