我有一个带有 Debian Bookworm 的树莓派。我正在尝试阻止数据包转发。我知道我可以这样设置,sudo sysctl -w net.ipv4.ip_forward=0
但这在重新启动后不会持续存在。
我还尝试添加net.ipv4.ip_forward = 0
到文件的底部/etc/sysctl.conf
,重新启动后数据包转发处于活动状态。我还在目录中添加了一个包含该行的文件(99-forward.conf)/etc/sysctl.d/
,重新启动后,数据包转发仍然处于活动状态。
更多信息:
- 我正在检查 ip 转发是否
sysctl -n net.ipv4.ip_forward
与另一部手机连接到该接口(这是一个接入点,我知道如果 ip 转发处于非活动状态,则无法访问互联网) - 如果我运行
sudo sysctl -w net.ipv4.ip_forward=0
它可以在当前启动中运行 - Linux内核:Linux 6.1.0-rpi7-rpi-v8 aarch64
- 我安装了 NetworkManager(这有帮助吗?)
ls -al /etc/sysctl.d
输出
total 20
drwxr-xr-x 2 root root 4096 Feb 29 17:04 .
drwxr-xr-x 91 root root 4096 Feb 29 17:11 ..
-rw-r--r-- 1 root root 92 May 10 2023 98-rpi.conf
-rw-r--r-- 1 root root 55 Feb 29 17:01 99-forward.conf
lrwxrwxrwx 1 root root 14 Nov 10 00:25 99-sysctl.conf -> ../sysctl.conf
-rw-r--r-- 1 root root 798 Dec 19 2022 README.sysctl
答案1
这是在 Stéphane Chazelas 的帮助下发现的。感谢您的帮助。
该问题与 NetworkManager 有关。我有一个接入点,其 ipv4 方法设置为共享。这导致 net.ipv4.ip_forward 设置为 1。
我仍然希望将我的接入点设置为共享,因此我找到了解决方法。我已将以下内容添加到文件中/etc/NetworkManager/dispatcher.d/99-disable-ip-forward
并使其可执行 ( sudo chmod +x /etc/NetworkManager/dispatcher.d/99-disable-ip-forward
)。
#!/bin/sh
INTERFACE=$1
ACTION=$2
if [ "$INTERFACE" = "ap0" ] && [ "$ACTION" = "up" ]; then
sudo sysctl -w net.ipv4.ip_forward=0
sudo sysctl -w net.ipv6.conf.all.forwarding=0
fi
当网络事件发生时,NetworkManager 运行脚本,/etc/NetworkManager/dispatcher.d/
因此它会自动将 net.ipv4.ip_forward 设置为 0。