我将 Ubuntu 20.04 配置为安装了 nftables 和 frr(配置了 ospf)的路由器。我在不同的网络中配置了两个接口(ens33 和 ens34),转发在 /etc/sysctl.conf 中配置,net.ipv4.ip_forward=1 以及 /etc/systemd/network/ens33.network
[Match]
Name=ens33
[Network]
IPForward=1
/etc/systemd/network/ens34.network
[Match]
Name=ens34
[Network]
IPForward=1
网络计划文件:
# This is the network config written by 'subiquity'
network:
version: 2
renderer: networkd
ethernets:
ens33:
mtu: 1300
addresses:
- 10.10.2.1/24
gateway4: 10.10.2.254
nameservers:
addresses:
- 10.10.3.1
search:
- management.int
ens34:
mtu: 1300
addresses:
- 10.10.20.254/24
nameservers: {}
bridges:
br0:
mtu: 1300
addresses:
- 10.10.3.22/32
nameservers: {}
命令“systemctl -p”后一切正常,但重启后ip转发被禁用(输出:sysctl net.ipv4.ip_forward为:net.ipv4.ip_forward=0)
在
netplan
生成配置时,它将为每个接口写入一个文件,/run/systemd/network/
格式为:10-netplan-{interface}.network
. 之后,systemd-networkd
将应用配置。systemd-networkd
将在其中找到配置文件/run/...
和您的配置文件,/etc/...
并将按词法顺序对它们进行处理。来自www.freedesktop.org/.../systemd.network.html:
所以现在您可以看到该
IPForward
选项将永远不会被应用。现在您需要将故障排除集中在 sysctl.conf
来自www.freedesktop.org/.../sysctl.d.html:
编辑:
可能有应用程序将覆盖
sysctl.conf
例如
ufw
防火墙配置,其中/etc/ufw/sysctl.conf
可能有行,例如net/ipv4/ip_forward=0
优先于/etc/sysctl.conf
. 虽然它不是默认配置,但必须手动配置。创建
/etc/sysctl.d/99-forward.conf
文件并重新启动操作系统。