Ubuntu 多網卡路由配置筆記(內網 + 外網同時通)(SSH斷線版)文章瀏覽閱讀386次,點贊4次,收藏5次。本文介紹了Ubuntu 如何配置雙網卡設備的路由規則,使默認流量走外網(192.168.2.0/24)的同時保留內網(192.168.1.0/24)訪問能力。通過強制覆蓋路由命令(ip router replace)分別設置內網和外網路由,并提供了Ubuntu 24.04下通過rc.local實現開機自啟的配置方法。文章包含路由測試指令和兩種開機啟動方案(推薦rc.local方式),強調該方案能保障SSH連接不中斷,且靈活易管理。所有操作均基于作者使用隨身WiFi(LTE無線路由器)作為外網的場景。https://blog.csdn.net/qq_35086097/article/details/148685880
此文章前提
場景說明
設備有兩個網卡:
-
eh0
:連接 內網(192.168.1.0/24); -
MAC001001001
:連接 外網(192.168.2.0/24,例如隨身WiFi);
目標
-
默認流量走外網;
-
保留內網訪問(如通過 192.168.1.1 訪問路由器);
-
SSH 不中斷(即使你通過內網登錄);
-
重啟后自動恢復配置。
查看當前路由
ip route show
正確的路由配置(SSH 不斷線)
1. 設置內網路由(直連,不能用 via)
sudo ip route replace 192.168.1.0/24 dev eh0 proto kernel scope link src $(ip -4 addr show dev eh0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
自動獲取當前 IP,避免硬編碼,確保不影響 SSH。
2. 設置默認路由走外網
sudo ip route replace default via 192.168.2.1 dev MAC001001001 metric 100
3. 查看/設置優先級?
查看優先級命令:
ip route show
?不斷開SSH 設置優先級?
sudo ip route replace 192.168.1.0/24 dev eh0 proto kernel scope link src 192.168.1.188
sudo ip route replace default via 192.168.1.1 dev eh0 metric 200
sudo ip route replace default via 192.168.2.1 dev Mac00101010101 metric 100
驗證路由狀態
ip route show | grep -E '192\.168\.1\.0|default'
示例輸出:
default via 192.168.2.1 dev MAC001001001 metric 100
# 你的IP==192.168.1.188
192.168.1.0/24 dev eh0 proto kernel scope link src 192.168.1.188
測試網絡連通性
ping -c4 192.168.1.1 ? ? ? ? ? # 測試內網
ping -c4 8.8.8.8 ? ? ? ? ? ? ? # 測試外網
curl http://www.baidu.com ? ? ?# 測試 DNS + HTTP
🔁 設置開機自動生效(Ubuntu 24.04)
Ubuntu 24.04 默認禁用 rc.local,需要手動啟用。
1. 創建 /etc/rc.local
sudo nano /etc/rc.local
寫入:
#!/bin/bash
?
IP=$(ip -4 addr show dev eh0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
ip route replace 192.168.1.0/24 dev eh0 proto kernel scope link src $IP
ip route replace default via 192.168.2.1 dev MAC001001001 metric 100
exit 0
2. 設置權限
sudo chmod +x /etc/rc.local
3. 創建 Systemd 服務
sudo nano /etc/systemd/system/rc-local.service
內容如下:
[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
?
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
?
[Install]
WantedBy=multi-user.target
4. 啟用并啟動服務
sudo systemctl enable rc-local
sudo systemctl start rc-local
sudo systemctl status rc-local
不推薦方式:Netplan / NetworkManager
-
多默認網關配置復雜,易沖突;
-
推薦使用 rc.local 靈活管理路由。
總結表
功能 | 命令示例或描述 |
---|---|
默認走外網 | default via 192.168.2.1 dev MAC001001001 metric 100 |
保留內網訪問 | 192.168.1.0/24 dev eh0 proto kernel scope link src 當前IP(自動獲取) |
防止 SSH 斷線 | 不使用 via 設置內網段 |
開機自動恢復 | 使用 /etc/rc.local + systemd 啟動 |
🧩 附加建議
如果上一篇你已經設置了,導致了SSH連接不上,用下面的腳本嘗試恢復
sudo ip route replace 192.168.1.0/24 dev en0 proto kernel scope link src 192.168.1.188
如果你擔心誤操作路由導致 SSH 斷線,可以使用自動恢復腳本:
自動恢復網絡路由配置的安全腳本說明https://blog.csdn.net/qq_35086097/article/details/148761528
全文都是自己的親測,可用!!!
設備:LTE無線路由器、一臺服務器,系統為Ubuntu(24.04)、一個無線網卡
情況:我自己手機開熱點啥的完全可以實現自動連接,但是隨身wifi不行 (LTE無線路由器),可能自己配置DHCP之類的吧。配置之后就可以上網了
以上只是配置路由表,如果發現連上了但是上不了外網? 請用
ip route show
檢查是否是路由表的優先級(metric )是否有問題!!!!
一定是內網的metric 要比外網的metric 要大 (優先級越大 越靠后,沒有就是0)
sudo ip route replace 192.168.1.0/24 dev eh0 proto kernel scope link src 192.168.1.188
sudo ip route replace default via 192.168.1.1 dev eh0 metric 200
sudo ip route replace default via 192.168.2.1 dev Mac00101010101 metric 100
----