Routing

如何使用 NetworkManager 和 systemd 在 KDE 桌面系統中設置持久靜態路由?

  • October 15, 2018

我有兩個網卡。在 NetworkManager > IPv4 > Routes 中,我檢查了兩個介面的“忽略自動獲取的路由”。然後我使用了這兩個命令:

$ 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。

eth1首先,從您添加的位置刪除預設網關設置。如果您不確定,請執行nmcli device status: 如果它說狀態eth1is unmanaged,則eth1根本不受 NetworkManager 控制。

預設網關不是每個網路介面的強製配置項:您應該只為一個介面配置它,如果 a) 該介面連接到一個實際包含到 Internet 的工作路由器/網關的網段,並且 b) 您實際上想使用該介面進行 Internet 連接。

如果你想使用一個介面只訪問它直接連接的網段,你可以並且應該完全省略該介面的預設網關設置。

如果在介面所連接的網段中有路由器/網關,但您只需要/希望通過它連接到特定網段(或網段),則應添加更具體的路由條目(/entries)來指定這些細分市場是什麼。

如果您已經配置eth1了 NetworkManager,請首先執行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 伺服器在不應該提供預設網關資訊時不提供預設網關資訊工作。

引用自:https://unix.stackexchange.com/questions/475494