多网卡网络分流降低跨境访问网络延迟的实操教程
为什么需要多网卡网络分流
当你的服务器同时服务国内和海外用户时,单条线路很难兼顾两边。
比如默认走国际线路,国内用户访问就慢;
走国内线路,海外用户又卡。
多网卡网络分流的思路很简单:给服务器安装两张或更多网卡,每张连接不同的线路,再通过策略路由让国内流量走国内出口、海外流量走海外出口,从而降低整体延迟。
准备工作:硬件与网络信息
开始配置前,请确认以下三件事:
- 服务器至少有两张已激活的网卡,并已连接不同运营商或不同网关。例如 eth0 连接电信线路(网关 192.168.1.1),eth1 连接国际专线(网关 10.0.0.1)。
- 每张网卡已配置好 IP 地址。可通过
ip addr查看。 - 系统已安装 iproute2 工具包(主流 Linux 发行版默认自带)。如果缺少,用
apt install iproute2(Debian/Ubuntu)或yum install iproute(CentOS/RHEL)安装。
记录好以下参数:
- 国内网卡名、IP、网关
- 海外网卡名、IP、网关
- 你想分流的目标 IP 段(例如国内 IP 库或海外 IP 库)
配置策略路由:核心步骤
策略路由让系统根据源地址或目标地址选择不同的路由表,而非仅依赖默认路由。
1. 创建自定义路由表
编辑文件 /etc/iproute2/rt_tables,在末尾添加两个表标识:
echo "200 china" >> /etc/iproute2/rt_tables
echo "201 oversea" >> /etc/iproute2/rt_tables
这里 200 和 201 是表编号(可自定义),china 和 oversea 是表名。
2. 为每个表添加默认路由
假设 eth0 对应的网关是 192.168.1.1(国内),eth1 对应 10.0.0.1(海外),执行:
ip route add default via 192.168.1.1 dev eth0 table china
ip route add default via 10.0.0.1 dev eth1 table oversea
3. 添加策略规则
规则决定何时使用哪个表。
常见两种方法:
- 按源 IP 分流:如果服务器本身有多个 IP(如两张网卡绑定了不同 IP),可以让特定源 IP 走特定表。
ip rule add from 192.168.1.100 table china
ip rule add from 10.0.0.100 table oversea
- 按目标地址分流:可以下载国内 IP 段列表,然后批量添加规则。例如让国内 IP 段走 china 表,其他走 oversea 表。一个简单例子(非完整列表):
ip rule add to 114.114.114.114 table china
ip rule add to 8.8.8.8 table oversea
实用提示:如果只是简单区分国内外,可以先用少量测试 IP 验证,再使用脚本批量添加。
4. 查看并测试当前规则
ip rule show
ip route show table china
ip route show table oversea
避坑指南:常见错误与解决方案
- 防火墙拦截:检查 iptables 或 nftables 是否放行了相关网卡的流量。建议先在
iptables -L中确认 FORWARD 链策略。 - 规则未持久化:上述命令重启后会失效。可将命令写入
/etc/rc.local并赋予执行权限,或创建 systemd 服务。推荐使用/etc/rc.local简单可靠。 - 路由表冲突:确保默认路由没有被重复添加。使用
ip route查看主路由表,避免网卡之间形成环路。 - 物理链路问题:用
ping -I eth0 114.114.114.114和ping -I eth1 8.8.8.8分别测试每条线路的连通性。
效果验证:延迟对比
配置完成后,使用以下方法验证:
- 测试国内目标:
ping -I eth0 223.5.5.5记录延迟。 - 测试海外目标:
ping -I eth1 8.8.8.8记录延迟。 - 用 traceroute 确认路径:
traceroute -i eth0 223.5.5.5和traceroute -i eth1 8.8.8.8看是否走了预期出口。 - 实际应用测试:通过 curl 访问不同地区的网站,对比配置前后的响应时间。
如果发现国内 IP 走了海外出口,检查策略规则的优先级(数字越小越优先),并确认目标地址所在的路由表是否正确。
常见问题(FAQ)
Q:配置后重启就失效,怎么办?
A:将配置命令逐条添加到 /etc/rc.local(确保该文件有执行权限),或者编写 systemd 服务。
Q:如何删除某条规则?
A:用 ip rule del 命令,例如 ip rule del from 192.168.1.100 table china。
Q:必须使用两张物理网卡吗?
A:不一定,也可以使用 VLAN 子接口或虚拟网卡,但对新手来说物理网卡是最直观稳定的选择。
如果你准备优化跨境访问延迟,建议先按本文步骤在测试环境完成分流配置,确认无误后再应用到生产服务器。
多网卡网络分流不仅能降低延迟,还能提升线路冗余,一举两得。