我设置net.ipv4.ip_forward = 1
并/etc/sysctl.conf
运行,这导致它在 的输出中sysctl -p
设置为预期的值,但在昨晚和现在之间的某个时间,某些东西将其设置回。有什么想法可以做到这一点吗?我搜索了又搜索,但没有看到任何东西。1
sysctl -a
0
/var/log/cron
forward
sysctl
答案1
某些 CentOS 版本会在网络服务重新启动时再次设置(net.ipv4.ip_forward
例如)。0
service restart networking
更准确地说,它被设置为零停止脚本部分/etc/init.d/network
:
stop)
[ "$EUID" != "0" ] && exit 4
# Don't shut the network down if root is on NFS or a network
# block device.
# [...]
action $"Shutting down loopback interface: " ./ifdown ifcfg-lo
sysctl -w net.ipv4.ip_forward=0 > /dev/null 2>&1
您可以编辑该脚本并删除或更改该行。
看红帽 Bugzilla 错误 552653了解更多信息。
答案2
有一个错误会导致sysctl
在网络正确初始化之前加载值。这会导致网络设置/etc/sysctl.conf
被忽略。解决这个问题的办法可能是procps
重新启动到/etc/local.rc
,这样就会重复初始化。
有问题的错误:https://bugs.launchpad.net/ubuntu/+source/procps/+bug/50093
答案3
我设置了日志记录以每分钟记录此设置的值,以便我可以检查/var/log/cron
并查看可能的原因。看起来恢复对应于 APF(高级策略防火墙)运行的 cron 作业。
这是我的迷你日志记录脚本,以防对任何人有帮助:
echo `date`" - "`sysctl -a | grep net.ipv4.ip_forward` >> /var/log/ip_forward_setting.log