多网卡分流跨境网络降低访问延迟方案:多网卡分流实战
多网卡分流实战:轻松降低跨境网络访问延迟
如果你的服务器同时接了电信和联通两条线路,
或者同时有国内和国际BGP出口,
但跨境访问延迟还是很高,
很可能是因为所有流量都走了默认网关。多网卡分流可以通过策略路由,
让指定目的地的流量走专用出口,
有效降低延迟。
为什么要用多网卡分流?
跨境网络延迟的根源在于国际出口带宽拥塞和路由跳数多。
普通单网卡服务器只能设置一个默认网关,所有流量都挤同一条路。
而多网卡分流能根据目标IP段(比如香港、美国、欧洲)选择不同的物理线路,让数据走最优路径。
例如,访问美国AWS的流量走国际BGP线路,访问国内CDN的流量走电信直连。
准备条件
- 一台已安装CentOS 7+或Ubuntu 20.04+的服务器。
- 至少两块物理网卡(或单网卡多个IP绑定不同网关)。
- 每块网卡已正确配置IP、子网掩码和网关(联系机房或运营商获取)。
- 已通过SSH登录服务器。
配置策略路由(Linux系统)
这里以两块网卡为例:
eth0:IP 192.168.1.100,网关 192.168.1.1(电信线路)eth1:IP 10.0.0.100,网关 10.0.0.1(国际BGP线路)
1. 编辑路由表配置文件
创建两个自定义路由表(比如表100和200),并添加默认路由:
# 为电信线路创建路由表(表100)
ip route add default via 192.168.1.1 dev eth0 table 100
ip route add 192.168.1.0/24 dev eth0 table 100
# 为国际BGP线路创建路由表(表200)
ip route add default via 10.0.0.1 dev eth1 table 200
ip route add 10.0.0.0/24 dev eth1 table 200
2. 添加策略路由规则
让发往目标IP段(例如香港的IP段1.0.0.0/8)走表200:
ip rule add from all to 1.0.0.0/8 lookup 200 priority 1000
# 其他所有流量继续使用主路由表(默认表),即走电信出口
3. 使配置永久生效
编辑/etc/iproute2/rt_tables,添加表名称:
100 ct_table
200 bgp_table
然后将上述ip route和ip rule命令写入开机启动脚本(如/etc/rc.local),或者使用ifup-local等工具。
注意:ip rule的优先级数字越小优先匹配,请确保不与其他规则冲突。
验证效果与常见问题
测试命令
# 用ping测试目标IP,确认延迟是否降低
ping -c 5 8.8.8.8
查看当前路由策略
ip rule show
ip route show table all
常见问题解答
Q:配置后所有流量都不通了?
A:检查默认路由是否被覆盖。至少保留一个默认网关(主表),并确保策略路由的to条件正确。如果误删主路由,可以用ip route add default via 原网关恢复。
Q:如何知道目标IP该走哪条线路?
A:先用traceroute或mtr测试不同出口的延迟,根据实际表现编写策略。也可以购买IP段数据库自动匹配。
Q:Windows服务器怎么配?
A:Windows可以使用route add -p命令添加永久路由,并结合netsh设置策略。由于篇幅,本文以Linux为例,Windows原理类似。
避坑指南
- 千万不要将不同网卡的网关设置成同一个子网,否则会导致路由冲突。
- 添加策略后,记得测试从本机发出的所有流量是否正常,包括回向流量。
- 如果使用云服务器(如阿里云、腾讯云),部分云厂商不允许修改路由表,请确认是否支持虚拟路由策略。
- 临时路由重启后消失,务必写入持久化配置。
总结
多网卡分流是低成本降低跨境延迟的有效手段,核心在于使用策略路由将不同目标IP的流量分离到不同物理线路。
按照本文步骤,你可以在半小时内完成配置,获得更稳定的跨境网络体验。
如果遇到某条线路本身不稳定,可以随时调整路由规则实现热切换。