此文章前提
场景说明
设备有两个网卡:
-
eh0
:连接 内网(192.168.1.0/24); -
MAC001001001
:连接 外网(192.168.2.0/24,例如随身WiFi);
目标
-
默认流量走外网;
-
保留内网访问(如通过 192.168.1.1 访问路由器);
-
SSH 不中断(即使你通过内网登录);
-
重启后自动恢复配置。
查看当前路由
bash
ip route show
正确的路由配置(SSH 不断线)
1. 设置内网路由(直连,不能用 via)
bash
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. 设置默认路由走外网
bash
sudo ip route replace default via 192.168.2.1 dev MAC001001001 metric 100
3. 查看/设置优先级
查看优先级命令:
bash
ip route show
不断开SSH 设置优先级
bash
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
验证路由状态
bash
ip route show | grep -E '192\.168\.1\.0|default'
示例输出:
bash
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
测试网络连通性
bash
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
bash
sudo nano /etc/rc.local
写入:
bash
#!/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. 设置权限
bash
sudo chmod +x /etc/rc.local
3. 创建 Systemd 服务
bash
sudo nano /etc/systemd/system/rc-local.service
内容如下:
bash
[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. 启用并启动服务
bash
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连接不上,用下面的脚本尝试恢复
bash
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之类的吧。配置之后就可以上网了
以上只是配置路由表,如果发现连上了但是上不了外网 请用
bash
ip route show
检查是否是路由表的优先级(metric )是否有问题!!!!
一定是内网的metric 要比外网的metric 要大 (优先级越大 越靠后,没有就是0)
bash
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