如何使用 NetworkManager 和 systemd 在 KDE 桌面系統中設置持久靜態路由?
我有兩個網卡。在 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
: 如果它說狀態eth1
isunmanaged
,則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 伺服器在不應該提供預設網關資訊時不提供預設網關資訊工作。