linux多网卡指定默认出网网卡本质是确保路由表中仅有一条default路由且指向目标网卡网关:先删除错误默认路由,再用ip route add default via x.x.x.x dev ethx添加正确条目;centos需在外网网卡ifcfg文件中配置gateway并确保内网网卡不设网关,ubuntu netplan则仅在外网接口下配置gateway4;重复或冲突的默认路由会导致外网间歇性中断。

Linux 多网卡环境下指定默认出网网卡,本质是控制默认路由(default route)指向哪个网卡的网关。系统不会“记住”某张网卡为“默认”,而是依据路由表中 default 或 0.0.0.0/0 条目决定所有未匹配其他路由的流量从哪走。
关键就一条:只允许一个默认网关,且必须绑定到你希望作为出口的那张网卡上。
? 正确配置默认出网网卡的步骤
外网网卡(如 eth0)配默认网关,内网网卡(如 eth1)不配网关
这是最基础、最安全的做法。若两张网卡都配置了GATEWAY=(CentOS)或gateway4:(Ubuntu Netplan),系统会写入两条默认路由,但仅 metric 最小的一条生效——容易误判或随启动顺序变化,导致外网不通或内网被劫持。-
确认当前默认路由归属
运行:ip route show default # 或 route -n | grep '^0.0.0.0'
输出类似:
default via 192.168.2.1 dev eth0 proto static metric 100
表示当前默认出口是
eth0,网关为192.168.2.1。 -
手动修正默认路由(临时)
若默认路由错指到内网卡(如 eth1),先删后加:ip route del default ip route add default via 192.168.2.1 dev eth0
注意:
dev eth0必须与网关所在网段直连(即192.168.2.1确实是eth0所在子网的网关)。
PyCharm 2026.2.0.1 Linux版下载PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
? 让配置永久生效(按发行版)
-
CentOS/RHEL 7+(NetworkManager 或 ifcfg)
编辑外网网卡配置文件(如/etc/sysconfig/network-scripts/ifcfg-eth0):BOOTPROTO=static IPADDR=192.168.2.100 NETMASK=255.255.255.0 GATEWAY=192.168.2.1 # ✅ 只在这里写 DNS1=8.8.8.8 ONBOOT=yes
内网网卡(如
/etc/sysconfig/network-scripts/ifcfg-eth1)不写 GATEWAY 行,仅配 IP 和掩码:BOOTPROTO=static IPADDR=192.168.1.100 NETMASK=255.255.255.0 ONBOOT=yes
-
Ubuntu/Debian(Netplan)
编辑/etc/netplan/*.yaml,确保只有外网接口含gateway4:network: version: 2 ethernets: eth0: addresses: [192.168.2.100/24] gateway4: 192.168.2.1 # ✅ 唯一 gateway4 nameservers: addresses: [8.8.8.8] eth1: addresses: [192.168.1.100/24] # ❌ 不写 gateway4应用:
sudo netplan apply
⚠️ 常见错误与规避
两张网卡都设了 gateway → 默认路由冲突
系统可能保留 metric 更低的那条,但重启后顺序不定,外网时通时断。内网网卡误配网关 → 内网流量绕行外网网关
比如192.168.1.0/24流量本该直连,却发给192.168.2.1,结果丢包或被拒绝。没删旧默认路由就加新 → 出现重复 default 条目
用ip route show default检查是否唯一;重复时用ip route del default清理。-
防火墙拦截回程路径
即使路由正确,若firewalld或iptables默认策略为DROP,且内网网卡不在trusted区域,ping内网可能通但ssh不通。补救:firewall-cmd --zone=trusted --add-interface=eth1 --permanent firewall-cmd --reload
? 需要双默认出口?用策略路由
如果业务要求:
- 访问 A 网段走 eth0,访问 B 网段走 eth1,且两者都需上公网(比如不同 ISP)
→ 就不能只靠单 default 路由,得用 策略路由(Policy-Based Routing): - 创建独立路由表(如
table 100对应 eth0,table 101对应 eth1) - 用
ip rule按源地址或目标地址分流 - 这属于进阶场景,日常内外网分离无需启用。
不复杂但容易忽略。










