Linux 启用内核 IP 转发

在 Debian 和 Ubuntu 等常用的 Linux 发行版本中,IP 转发 (ip_forward) 默认被禁用。因此,当我们想要将设备用于网关 / 路由器 / VPN 服务器时,就需要手动 IP 转发。


检查当前状态

在开始前,我们可以先检查当前 IP 转发是否开启。

执行以下指令,若返回 0 则表示未开启,返回 1 则表示已开启。

1
2
3
4
5
# IPv4
cat /proc/sys/net/ipv4/ip_forward

# IPv6
cat /proc/sys/net/ipv6/conf/all/forwarding

临时调整

若仅需要临时调整 IP 转发的状态,我们可以使用 sysctl -w 指令。重启后将恢复原状。

1
2
3
4
5
# IPv4
sysctl -w net.ipv4.ip_forward = 1

# IPv6
sysctl -w net.ipv6.conf.all.forwarding = 1

永久调整

若需要将调整固定,我们可以编辑 /etc/sysctl.conf 文件,在末尾加入如下内容:

1
2
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1

然后执行如下指令,使配置即刻生效:

1
sysctl -p