net.ipv4.ip_forward=0 重启后不持久

net.ipv4.ip_forward=0 重启后不持久

我有一个带有 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。

相关内容