目前我正在设置一台新的 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