BGP多线主机内网穿透对决:FRP vs WireGuard vs ZeroTier,谁才是跨国低延迟之王?

一、背景与目标

大多数内网穿透教程只教你在单线VPS上跑个FRP或Ngrok,但真实场景下,跨国、跨运营商时丢包率能飙到15%。我手头有3台轻云互联的BGP多线主机(电信/联通/移动三线BGP),正好拿来压测三种主流穿透方案:FRP(传统端口转发)、WireGuard(内核级VPN套接字)、ZeroTier(P2P+SD-WAN)。目标:找出在BGP多线环境下,延迟、吞吐、以及断线重连的极限。

二、测试环境与裸指标

轻云互联 BGP多线主机(华东B区):4核8G,CentOS 7.9,内核5.10
客户端1:北京联通家用宽带(NAT4)
客户端2:深圳移动(对称NAT)
服务端:所有方案均部署在同一台BGP主机,监听15000端口(FRP/WireGuard/ZeroTier控制面均独立端口)

先看穿越前的延迟基准:

# 客户端1直连BGP主机IP(BGP自动优选路由)
ping -c 50 10.0.0.1   # 平均延迟38ms,丢包0%
# 客户端2直连
ping -c 50 10.0.0.1   # 平均延迟55ms,丢包0.8%(移动线路偶尔绕路)

三、方案部署与关键配置

1. FRP(v0.52.0)

# frps.ini (服务端)
[common]
bind_port = 7000
vhost_http_port = 8080
token = myBgpToken
tls_enable = false  # 压测关闭加密,减少开销

# frpc.ini (客户端1)
[common]
server_addr = 10.0.0.1
server_port = 7000
token = myBgpToken

[ssh]
type = tcp
local_ip = 192.168.1.100
local_port = 22
remote_port = 6001

启动后测试:ssh -oPort=6001 user@10.0.0.1 立刻连接。压测工具用 iperf3 -c 10.0.0.1 -p 6001

2. WireGuard(最新稳定版)

# wg0.conf (服务端)
[Interface]
PrivateKey = serverPriv
Address = 10.1.0.1/24
ListenPort = 51820
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
PublicKey = client1Pub
AllowedIPs = 10.1.0.2/32
Endpoint = client1_public_ip:51820
PersistentKeepalive = 25

注意:BGP多线主机有多个IP?实际必须绑定到主IP,否则Peer会找错路由。客户端用 AllowedIPs = 10.1.0.0/24 让所有流量走隧道。压测时客户端直连服务端隧道IP iperf3 -c 10.1.0.1

3. ZeroTier(1.10.6)

# 服务端加入网络,授权客户端ID
zerotier-cli join myNetworkID
zerotier-cli set myNetworkID allowManaged=1
# 客户端类似,注意启用“流量规则”确保BGP主机作为根节点(ifconfig标签)

需在ZeroTier Central中设置 managed route 让客户端到服务端走ZeroTier网络,但缺省会自动创建moon,这里保持标准配置。

四、压测数据与排错实录

每个方案分别运行5次,每次60秒,取中位数。

方案TCP吞吐(客户端1)UDP抖动(ms)断线重连时间(人工拔网线)备注
FRP45 Mbps(瓶颈在TCP转发12%15秒(重新建立TCP连接)BGP多线优势不明显,因为FRP单链路只走一个出口
WireGuard880 Mbps2.3%0.5秒(内核自动切换端点)BGP多线主机上行带宽打满,路由表自动切换电信端口
ZeroTier210 Mbps8.7%8秒(重新协商P2P)依赖中继时BGP主机性能无关紧要,但BGP链路让中继延迟低

关键排错现场:WireGuard的BGP路由绑定

测试中发现客户端1经过WireGuard隧道到BGP主机时,回程包常经过移动线路,导致延迟突增。排查命令:

# 在BGP主机的服务端抓包
tcpdump -i eth0 -p icmp -n
# 发现ping包从电信接口进,但响应包被路由表指向了默认网关(移动)
# 修复:添加策略路由
echo "200 bgp" >> /etc/iproute2/rt_tables
ip rule add from 10.1.0.1 table bgp
ip route add default dev eth0 table bgp  # eth0是电信主接口
# 之后延迟稳定在38ms

这充分说明BGP多线主机必须配合策略路由才能让特定流量绑定最优路径。轻云互联的BGP主机默认策略就做了这点,但WireGuard隧道流量需要手动调整。

五、结论与选择建议

WireGuard 在BGP多线主机上表现出碾压级优势:内核级性能,吞吐接近线速;断线重连快到用户无感知;而且通过策略路由可以绑定最优ISP链路。FRP只适合简单端口暴露,吞吐受限且无故障切换能力。ZeroTier在复杂NAT下依赖中继,BGP多线主机的低延迟确实有帮助,但P2P穿透成功率仍是瓶颈。

如果你的业务需要跨国组网或远程办公,直接上WireGuard + 策略路由,配合一台BGP多线主机,延迟和带宽都能接近物理专线。