Ubuntu 17.10:重新启用 IPv6

Ubuntu 17.10:重新启用 IPv6

使用此脚本成功禁用 IPv6 后:

echo  'net.ipv6.conf.all.disable_ipv6 = 1'  >> /etc/sysctl.conf
echo  'net.ipv6.conf.default.disable_ipv6 = 1'  >> /etc/sysctl.conf
echo  'net.ipv6.conf.lo.disable_ipv6 = 1'  >> /etc/sysctl.conf
sysctl -p

我尝试使用此脚本重新启用:

sed  -i "/net.ipv6.conf.all.disable_ipv6/d" /etc/sysctl.conf
sed  -i "/net.ipv6.conf.default.disable_ipv6/d" /etc/sysctl.conf
sed  -i "/net.ipv6.conf.lo.disable_ipv6/d" /etc/sysctl.conf
sysctl -p

我已经验证启用脚本从 sysctl.conf 文件中删除了禁用行。

在每种情况下,我都会用以下命令检查结果:

cat /proc/sys/net/ipv6/conf/all/disable_ipv6

其中“1”表示禁用,“0”表示未禁用。

重新启用部分不起作用。

在每种情况下,sysctl -p 命令都会重新加载 /etc/sysctl.conf 文件。但是,重新加载似乎只是将其拉入其缓冲区,而不是完全覆盖它,这样就不会删除禁用属性。

这个分析正确吗?

如果是这样,我没有看到清除 sysctl.conf 缓存的选项。有吗?或者有针对此要求的策略吗?

答案1

中的条目/etc/sysctl.conf以及其中包含的任何文件指定在启动时或运行 时将应用哪些 sysctl 设置sudo sysctl -p。但此文件中缺少条目意味着这样的 sysctl(其中有数千个)不会改变无论其当前持有什么价值。

您从此文件中删除了禁用 IPv6 的 sysctl 条目,但似乎您实际上并未更改 sysctl 设置本身。运行sudo sysctl -p不会更改它们,因为它们不在 中/etc/sysctl.conf

为了将这些条目改回其默认值,您可以重新启动系统,或使用sysctl明确设置它们。例如:

sudo sysctl net.ipv6.conf.all.disable_ipv6=0
sudo sysctl net.ipv6.conf.default.disable_ipv6=0
sudo sysctl net.ipv6.conf.lo.disable_ipv6=0

相关内容