如何使IP转发永久化?

Hoj*_*eri 46 routing

我知道我可以通过回显1来启用 IP 转发/proc/sys/net/ipv4/ip_forward,但是我怎样才能使它永久化?

顺便说一下,我想要另一种方法而不是启动脚本,有吗?

Eri*_*lho 71

编辑 /etc/sysctl.conf 并搜索以下行:

# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1
Run Code Online (Sandbox Code Playgroud)

取消注释net.ipv4.ip_forward=1

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
Run Code Online (Sandbox Code Playgroud)

或者在一行命令中:

sudo sysctl -w net.ipv4.ip_forward=1
Run Code Online (Sandbox Code Playgroud)

  • `sudo sysctl -w net.ipv4.ip_forward=1` 并没有使它永久......@至少在我测试过的树莓派上...... (9认同)
  • `-w` 立即启用该设置。但它并不能使它持久! (2认同)

Mei*_*jes 22

永久设置使用 /etc/sysctl.conf

如果我们想让这个配置永久化,最好的方法是使用文件/etc/sysctl.conf,我们可以在其中添加一行包含net.ipv4.ip_forward = 1

/etc/sysctl.conf:
net.ipv4.ip_forward = 1
Run Code Online (Sandbox Code Playgroud)

如果您已经有一个net.ipv4.ip_forward值为 0的条目,您可以将其更改为 1。

要启用所做的更改,sysctl.conf您需要运行以下命令:

sudo sysctl -p /etc/sysctl.conf
Run Code Online (Sandbox Code Playgroud)

在基于 RedHat 的系统上,这也会在重新启动网络服务时启用:

service network restart
Run Code Online (Sandbox Code Playgroud)

在 Debian/Ubuntu 系统上,这也可以通过重新启动 procps 服务来完成:

sudo /etc/init.d/procps restart
Run Code Online (Sandbox Code Playgroud)

来源:如何在 Linux 中启用 IP 转发


小智 5

如果您需要在脚本中启用它,您可以使用下面的命令来启用

sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
sysctl -p
Run Code Online (Sandbox Code Playgroud)

或禁用:

sed -i 's/net.ipv4.ip_forward=1/net.ipv4.ip_forward=0/' /etc/sysctl.conf
sysctl -p
Run Code Online (Sandbox Code Playgroud)