/etc/sysctl.conf 设置在重启后不会持续存在

/etc/sysctl.conf 设置在重启后不会持续存在

版本:Ubuntu 16.04.4 LTS 32 位

我无法在重启后保留 /etc/sysctl.conf 中的设置。

以下是我尝试实现的设置(逐字取自 sysctl.conf):

kernel.core_uses_pid=1
kernel.dmesg_restrict=1
kernel.kptr_restrict=2
kernel.sysrq=0
net.ipv4.conf.all.log_martians=1
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.default.log_martians=1
net.ipv4.tcp_syncookies=1
fs.suid_dumpable=0

我已经检查了 /etc/init/procps.conf(其中基本上不包含任何内容)和 /etc/init/procps-instance.conf(其中包含适当的命令)但一无所获。

如果我使用 sysctl -p,则设置会被正确加载,但在发出该命令之前和重新启动之后,命令未正确设置。

前任:

username@servername:/etc$ sudo sysctl -a | grep sysrq
kernel.sysrq = 136
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
sysctl: reading key "net.ipv6.conf.enp2s0f0.stable_secret"
sysctl: reading key "net.ipv6.conf.enp2s0f1.stable_secret"
sysctl: reading key "net.ipv6.conf.lo.stable_secret"
username@servername:/etc$ sudo sysctl -p
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
kernel.core_uses_pid = 1
kernel.dmesg_restrict = 1
kernel.kptr_restrict = 2
kernel.sysrq = 0
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.log_martians = 1
net.ipv4.tcp_syncookies = 1
fs.suid_dumpable = 0
username@servername:/etc$ sudo sysctl -a | grep sysrq
kernel.sysrq = 0
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
sysctl: reading key "net.ipv6.conf.enp2s0f0.stable_secret"
sysctl: reading key "net.ipv6.conf.enp2s0f1.stable_secret"
sysctl: reading key "net.ipv6.conf.lo.stable_secret"

我还检查了 pm-utils,它已安装,但 power.d 中除了 95hdparm-apm 之外没有任何设置文件。正如我之前的声明所示,laptop-power 不存在于 power.d 中,这个问题无关紧要——请在标记为重复之前阅读整个帖子。

还有一点我想补充一下,在 /etc/sysctl.d 中,有几个文件带有 10 前缀,但指向 sysctl.conf 的 99 前缀链接已就位,因此它应该最后运行,并且设置仍然应该正确。我被难住了。

尝试按照建议将 sysctl reload 命令添加到 crontabhttps://bugs.launchpad.net/ubuntu/+source/procps/+bug/50093

@reboot sleep 60 && sysctl --system

还是没有骰子。

我错过了什么?

答案1

我无法找到明确的根本原因,但我可以通过执行以下操作来解决我的问题:

  • 从 /etc/sysctl.conf 中删除自定义 net.* 参数并将其放置在 /etc/ufw/sysctl.conf 中

无论我对配置文件做了什么,kernel.sysrq 的问题仍然存在,因此我使用了以下解决方法:

  • 为 kernel.sysrq 创建以下 cron 作业:

    @reboot sleep 5 && /sbin/sysctl --system

相关内容