net.ipv4.ip_forward 不是持久的,即使在 /etc/sysctl.conf 中也是如此

net.ipv4.ip_forward 不是持久的,即使在 /etc/sysctl.conf 中也是如此

目前我正在设置一台新的 Debian 11 Bullseye 机器作为 Wireguard 网关。一切如常,简单。不幸的是,我在 IPV4 数据包转发方面遇到了严重问题。众所周知,我必须取消文件#net.ipv4.ip_forward中的注释/etc/sysctl.conf才能启用数据包转发。不幸的是,即使取消注释,该设置在重新启动后也不会自动应用。每次重新启动后,我都必须使用“sysctl -p”手动处理 sysctl 文件。这是怎么回事? sysctl.conf.d 中也没有进一步的 sysctl.conf 可以覆盖此设置。我也尝试过新的 Debian 11 系统,也有同样的问题。

root@wireguard:~# /sbin/sysctl --system
* Applying /etc/sysctl.d/1-sysctl.conf ...
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
* Applying /usr/lib/sysctl.d/50-pid-max.conf ...
kernel.pid_max = 4194304
* Applying /usr/lib/sysctl.d/protect-links.conf ...
fs.protected_fifos = 1
fs.protected_hardlinks = 1
fs.protected_regular = 2
fs.protected_symlinks = 1
* Applying /etc/sysctl.conf ...
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1

重启后:

root@wireguard:~# cat /proc/sys/net/ipv4/ip_forward
0
root@wireguard:~# cat /proc/sys/net/ipv6/conf/all/forwarding
1

我希望有人能帮助我,看起来,它只是部分应用,我不知道它是否与 IPv6 设置有关。除了 sysctl.conf 和 Wireguard 安装之外的所有内容都设置为默认值。

答案1

/etc/sysctl.d/99-ipv.conf使用以下行创建一个:

net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1

然后运行:

sudo systemctl restart  procps
sudo sysctl -p

相关内容