Ubuntu双网卡配置LAN访问与代理上网的路由问题求助
Ubuntu双网卡配置LAN访问与代理上网的路由问题求助
嘿,我看你折腾双网卡路由已经走了好几个步骤了,最后卡在LAN机器没法SSH到服务器的问题上,这其实是典型的反向路由不匹配导致的,我给你梳理一套完整的解决方案,应该能彻底解决问题:
首先先明确咱们的核心需求:
- ens3(LAN网卡):负责和192.168.100.0/24网段通信,允许LAN内机器访问服务器
- ens8(上网网卡):负责所有互联网流量,包括apt更新/安装
一、先修复当前的路由混乱问题
首先咱们先把现有的混乱路由清理掉,重新设置基础路由:
- 删除两条默认路由:
sudo ip route del default via 10.100.0.1 dev ens8 sudo ip route del default via 192.168.100.1 dev ens3
- 只给ens8设置默认路由(优先级更高,负责所有互联网流量):
sudo ip route add default via 10.100.0.1 dev ens8 metric 100
- 给ens3设置仅针对LAN网段的路由(不需要默认路由,避免冲突):
sudo ip route add 192.168.100.0/24 dev ens3 proto kernel scope link src 192.168.100.10
(注意:你之前的路由里ens3的src写成了192.168.0.10,应该是笔误,要改成192.168.100.10)
二、解决反向路由问题(这是LAN机器没法SSH的关键!)
现在服务器能ping通LAN和互联网,但LAN机器发过来的SSH请求,服务器处理后会走默认路由从ens8返回,导致LAN机器收不到响应。咱们需要加策略路由,让来自LAN网段的流量强制走ens3回程:
- 新建一个专门的路由表(比如叫lan_table):
echo "100 lan_table" | sudo tee -a /etc/iproute2/rt_tables
- 给这个路由表添加LAN相关的路由规则:
sudo ip route add 192.168.100.0/24 dev ens3 src 192.168.100.10 table lan_table sudo ip route add default via 192.168.100.1 dev ens3 table lan_table
- 添加规则,让来自LAN网段的流量使用这个专用路由表:
sudo ip rule add from 192.168.100.0/24 table lan_table sudo ip rule add to 192.168.100.0/24 table lan_table
三、把配置保存下来,避免重启失效
Ubuntu现在默认用netplan管理网络,咱们把配置写到netplan文件里,重启后自动生效:
- 编辑netplan配置文件(文件名可能不同,用
ls /etc/netplan查看):
sudo nano /etc/netplan/00-installer-config.yaml
- 替换成以下内容(注意根据你的实际网卡名和IP调整):
network: ethernets: ens3: addresses: [192.168.100.10/24] routes: - to: 192.168.100.0/24 via: 192.168.100.1 table: 100 - to: 0.0.0.0/0 via: 192.168.100.1 table: 100 routing-policy: - from: 192.168.100.0/24 table: 100 - to: 192.168.100.0/24 table: 100 ens8: addresses: [10.100.0.10/24] routes: - to: 0.0.0.0/0 via: 10.100.0.1 metric: 100 version: 2
- 应用配置:
sudo netplan apply
四、验证配置是否生效
执行以下命令检查:
- 查看主路由表:
ip route show - 查看LAN专用路由表:
ip route show table lan_table - 查看路由规则:
ip rule show
然后测试所有场景:
- 服务器ping互联网(比如
ping google.com),确保能上网 - 服务器ping LAN内的机器,确保能通
- 从LAN内的机器SSH到服务器的192.168.100.10,确保能连接
备注:内容来源于stack exchange,提问作者chenoi
相关产品推荐
相关产品推荐

