Ubuntu 多网卡安全路由配置(SSH 不断线版)

发布于:2025-06-20 ⋅ 阅读:(18) ⋅ 点赞:(0)

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

----


网站公告

今日签到

点亮在社区的每一天
去签到