我尝试在 ubuntu 20.04 LTS 服务器上创建一个简单的路由器,因此首先我检查/etc/sysctl.conf
了/proc/sys/net/ipv4/ip_forward
:
$cat /etc/sysctl.conf | grep ip_forward
#net.ipv4.ip_forward=1
$cat /proc/sys/net/ipv4/ip_forward
1
根据这个输出,我假设服务器已经启用了 IP 转发,但 IP 转发不起作用。之后,我取消注释该行#net.ipv4.ip_forward=1
并运行sudo sysctl -p
,但它仍然不起作用。
$cat /etc/sysctl.conf | grep ip_forward
net.ipv4.ip_forward=1
$ sudo sysctl -p
net.ipv4.ip_forward = 1
重启后终于可以正常工作了,但我不明白为什么运行sysctl -p
没有启用 IP 转发。我还发现它可以在运行时禁用echo 0 > /proc/sys/net/ipv4/ip_forward
(并在运行后启用echo 1 > /proc/sys/net/ipv4/ip_forward
)。
当然,当我改为 并重新启动时,IP 转发已被禁用net.ipv4.ip_forward
。但是,即使我改为后运行或运行,0
也无法启用它。echo 1 > /proc/sys/net/ipv4/ip_forward
sysctl -p
net.ipv4.ip_forward
1
我真的需要重新启动才能启用吗net.ipv4.ip_forward=1
?
答案1
如果你这样做,sysctl -p
它将重新加载/etc/sysctl.conf
,但需要在完成后完成
sudo -i
按 Enter 键,输入您的密码,然后在提示符下发出命令#
。不要只用 来执行此操作sudo
。