Linux多网卡分流跨境网络流量,从零开始配置

为什么需要多网卡分流跨境流量

当你用一台Linux服务器同时服务国内和海外用户时,单线路上网速度慢、丢包高是常见痛点。Linux多网卡分流跨境网络流量可以让国内请求走国内网卡、国外请求走国际网卡,显著提升两侧体验。
本文面向零基础读者,手把手教你配置策略路由实现智能分流。

准备工作

  • 一台Linux服务器(CentOS 7/8、Ubuntu 18.04+均可),已安装双网卡并接入两条不同运营商线路
  • 两张网卡的IP地址、网关信息(例如:eth0:10.0.0.2/24,网关10.0.0.1;eth1:192.168.1.2/24,网关192.168.1.1)
  • 拥有root权限(或sudo)
  • 一条测试用的国内外目标IP(例如国内:114.114.114.114,国外:8.8.8.8)

查看当前网络配置

登录服务器后先确认网卡和现有路由:

ip addr show
ip route show table main

新建自定义路由表

Linux默认有一个main路由表,我们需要为每条线路单独创建一张路由表,并在其中添加默认路由。

echo "100 china" >> /etc/iproute2/rt_tables
echo "200 global" >> /etc/iproute2/rt_tables

其中100200是路由表ID,chinaglobal是自定义名字,可以按实际线路名称修改。

向路由表添加默认路由

假设国内网卡(eth0)网关为10.0.0.1,国际网卡(eth1)网关为192.168.1.1,执行:

ip route add default via 10.0.0.1 dev eth0 table china
ip route add default via 192.168.1.1 dev eth1 table global

同时向main表保留基本直连路由(通常已存在):

ip route add 10.0.0.0/24 dev eth0 table china
ip route add 192.168.1.0/24 dev eth1 table global

配置策略路由规则

策略路由通过ip rule让数据包根据条件匹配不同的路由表。
最常用的方式是按目的IP归属国家分流,但手工维护IP库太复杂。
更简单的方式是按源IP或标记分流。

按源IP分流(推荐): 给国内访问的客户端分配固定内网IP段,让这部分流量走国内路由表。

# 假设10.0.0.0/24走国内,其他走国际
ip rule add from 10.0.0.0/24 table china priority 100
ip rule add from 192.168.1.0/24 table global priority 200

优先级数字越小越优先。priority 100200可根据需要调整。

如果需要按目标IP分流,需要借助iptables标记数据包,再配合ip rule fwmark
这里不作深入,适合有经验用户。

使配置永久生效

上述命令重启后会丢失。
在CentOS/RHEL中,可将命令追加到/etc/rc.d/rc.local并赋予执行权限:

echo 'ip route add default via 10.0.0.1 dev eth0 table china' >> /etc/rc.d/rc.local
echo 'ip route add default via 192.168.1.1 dev eth1 table global' >> /etc/rc.d/rc.local
echo 'ip rule add from 10.0.0.0/24 table china priority 100' >> /etc/rc.d/rc.local
echo 'ip rule add from 192.168.1.0/24 table global priority 200' >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local

Ubuntu用户建议将命令写入/etc/network/interfacesnetplanpost-up脚本中。

验证分流效果

检查路由表是否加载成功:

ip route show table china
ip route show table global

查看IP规则:

ip rule list

应有类似输出:

0: from all lookup local
100: from 10.0.0.0/24 lookup china
200: from 192.168.1.0/24 lookup global
32766: from all lookup main
32767: from all lookup default

测试: 在服务器上模拟不同源的连接,看路由走向。

# 指定源IP ping(需有对应IP的网卡)
ping -I 10.0.0.2 8.8.8.8
ping -I 192.168.1.2 8.8.8.8

使用traceroutetcpdump可更详细验证走的是哪个网关。

避坑指南

  • 防火墙影响: 如果iptablesfirewalld开启了rp_filter反向路径过滤,可能导致从非对称路径返回的包被丢弃。建议将rp_filter设为2(宽松模式):
  sysctl -w net.ipv4.conf.all.rp_filter=2
  • DNS解析问题: 如果DNS请求走的网卡对不上目标线路,会出现国内能解析但国外慢的情况。建议配置DNS按接口或使用本地缓存DNS。
  • 优先级冲突: 确保规则优先级唯一,多条规则匹配时优先级高的生效。
  • 重启丢失: 除非写入自启动脚本,否则每次重启后需重新执行。

常见问题

Q:为什么规则配置后,流量还是走默认路由?
A:检查ip rule的优先级,确保自定义规则优先级高于32766(main表)。同时确认源IP或条件匹配正确。

Q:单网卡能否分流?
A:技术上可通过多IP绑不同网关,但效果不如双物理网卡稳定。本文基于双网卡场景。

Q:有图形面板管理吗?
A:宝塔面板等暂不支持直接配置策略路由,仍需命令行操作。

总结

本文从零开始介绍了Linux多网卡分流跨境网络流量的核心步骤:查看网卡、新建路由表、添加默认路由、配置策略规则、设置开机自启。
每一步都给出了可直接运行的命令和排查手段。
建议你根据自己的线路IP和客户类型调整源IP段规则,测试后效果立竿见影。
遇到问题时优先检查rp_filter和规则优先级,再回看本文避坑部分。

分享到:
上一篇
宝塔面板卸载清理残留文件教程指南
下一篇
住宅主机虚拟机搭建测试站点:零基础手把手教程
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意