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

其中100和200是路由表ID,china和global是自定义名字,可以按实际线路名称修改。

向路由表添加默认路由

假设国内网卡(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 100和200可根据需要调整。

如果需要按目标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/interfaces或netplan的post-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

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

避坑指南

  • 防火墙影响: 如果iptables或firewalld开启了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
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意