为什么 sysctl.d 文件中的选项不是永久的?我需要经常运行“sudo sysctl -p”

为什么 sysctl.d 文件中的选项不是永久的?我需要经常运行“sudo sysctl -p”

按照一些教程在我的笔记本电脑(Ubuntu 16.04)中禁用 IPv6,我需要写入/etc/sysctl.d/99-sysctl.conf以下几行:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

我运行sudo sysctl -p后发现 ipv6 已禁用。很好。

过了一段时间,或者我重新启动网络管理器或重启电脑,我发现是否配置我的 ipv6 地址回来了,我得sudo sysctl -p再次运行。

所以我不明白为什么我的配置不明确,运行时某些东西会忽略我的内核参数

答案1

有报告称,此问题影响 Ubuntu 16.04 及以上版本,https://bugs.launchpad.net/ubuntu/+source/procps/+bug/50093其中应用 sysctl.conf 变量的 procps.sh 运行过早,并且某些设置尚未应用。

禁用 ipv6 的另一种方法是使用内核启动参数,如https://askubuntu.com/a/337736/283721

sudo nano /etc/default/grub

找到包含“GRUB_CMDLINE_LINUX_DEFAULT”的行:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

将“ipv6.disable=1”添加到启动选项,然后保存您的 grub 文件:

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 quiet splash"

ctrl+o保存,按ctrl+x退出 nano。最后,更新 grub:

sudo update-grub

并重新启动以加载更改。

相关内容