如何使用 NetworkManager 和 systemd 在 KDE 桌面系统中设置持久静态路由?

如何使用 NetworkManager 和 systemd 在 KDE 桌面系统中设置持久静态路由?

我有两个网卡。在 NetworkManager > IPv4 > 路由中,我选中了两个接口的“忽略自动获取的路由”。然后我使用了这两个命令:

$ sudo ip route add default via 192.168.1.1 metric 100 dev eth0
$ sudo ip route delete default via 192.168.2.1 dev eth1

结果就是我想要的路由表:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0
192.168.2.0     0.0.0.0         255.255.255.0   U     101    0        0 eth1

现在我该如何让它持久?

如果重要的话,eth0 的配置是自动的(通过 DHCP),eth1 的配置是静态的。另外,我正在运行 Arch Linux / KDE。

答案1

eth1首先,从您添加的位置删除默认网关设置。如果您不确定,请运行: 如果它显示isnmcli device status的状态,则根本不受 NetworkManager 控制。eth1unmanagedeth1

默认网关不是必选配置项每一个网络接口:只有在以下情况下才应为接口配置它:a) 该接口连接到实际包含 Internet 工作路由器/网关的网段,并且 b) 您确实希望使用该接口进行 Internet 连接。

如果您想使用接口仅访问其直接连接的网段,您可以而且应该完全省略该接口的默认网关设置。

如果接口所连接的网段中有路由器/网关,但您只想通过它连接到特定网段(或多个网段),则应该添加更具体的路由条目(/entries)来指定这些部分是什么。

如果您已配置eth1NetworkManager,请首先运行nmcli connection show以识别网络名称网络连接NetworkManager 当前正在使用eth1.运行nmcli connection show <connection-name>以查看该连接的所有设置。

然后使用例如sudo nmcli connection modify <connection-name> ipv4.gateway ""从该连接的静态连接设置中永久删除虚假网关。

然后取消选中“忽略自动获取的路由” eth0,并禁用并重新启用 的连接eth0。如果您的 DHCP 工作正常,您现在应该通过 接收默认网关eth0,并且由于eth1当前没有默认网关,NetworkManager + 您的 DHCP 客户端现在应该自动接受来自 DHCP 信息的默认网关设置eth0

如果您的 DHCP 服务器为您提供了 IP 地址,但没有默认网关信息eth0,您应该尝试修复 DHCP 服务器。如果您不能这样做,您可以通过 NetworkManager 或通过 DHCP 客户端的配置文件添加缺少的网关信息来解决此问题 - 但是 DHCP 服务器在不提供默认网关信息的情况下却没有提供默认网关信息工作。

相关内容