配置Linux内外网分流需仅设一个外网默认网关,内网流量通过静态或策略路由明确指定出口;双网卡中仅eth0配GATEWAY,eth1不配;内网段如10.0.0.0/8须用ip route或配置文件添加直连路由;验证时应仅有一条default路由且分测通断;进阶可用策略路由按源IP分流。
配置 Linux 本地路由表实现内外网分流,关键不是堆叠多条默认路由,而是让“外网走外网、内网走内网”各司其职。核心是:只设一个默认网关(给外网),内网流量通过静态路由或策略路由明确指定出口,避免冲突。
外网网卡(如 eth0):配置 IP、子网掩码、默认网关 和 DNS。这是唯一能访问互联网的出口。
内网网卡(如 eth1):仅配置 IP 和子网掩码,不填 gateway 字段。若误配内网网关,系统会生成第二条默认路由,导致外网失联。
示例(CentOS):
/etc/sysconfig/network-scripts/ifcfg-eth0
GATEWAY=192.168.1.1
/etc/sysconfig/network-scripts/ifcfg-eth1
# 不写 GATEWAY 行
内网网段(如 10.0.0.0/8)不能靠默认网关转发,需显式告诉系统“该走哪张网卡”:
ip route add 10.0.0.0/8 dev eth1
routes 条目,或通过 systemd-networkd 的 [Route] 段定义执行 ip route show,应看到:
default via 192.168.1.1 dev eth0(外网出口)10.0.0.0/8 dev eth1 scope link(内网直连)default 路由再分别测试:
ping -I eth0 8.8.8.8(确认外网通)ping -I eth1 10.0.0.1(确认内网通)trusted 区域,或放行对应端口当需要更精细控制(如某服务固定走内网、某用户走专线),就需策略路由:
ip route add 10.0.0.0/8 dev eth1 table intranetip route add default via 10.0.0.1 table intranet
ip rule add from 192.168.10.100/32 table intranet
注意:策略路由需提前启用 IP 转发并关闭反向路径过滤(net.ipv4.ip_forward = 1,rp_filter = 0)。