
在过去几个月中,我负责优化一个部署于中国大陆与海外之间的跨境应用系统,用户频繁反馈延迟抖动大、丢包严重。链路瓶颈集中在公网BGP波动以及GFW干扰上,尤其是涉及WebSocket长连接或数据库同步场景时问题更加突出。为了稳定跨境通信,我们最终选择以香港中转节点为核心,构建一套GRE over IPsec双通道隧道方案,实现稳定、安全、可调度的中港↔海外线路。
以下是我基于真实部署经验,总结出的技术路径。
一、方案概览
我们采用香港裸金属服务器为中枢节点,在其上部署双通道GRE over IPsec隧道:
- 隧道A:大陆主节点 ↔ 香港节点(IPsec + GRE)
- 隧道B:香港节点 ↔ 海外节点(IPsec + GRE)
核心目标:将中国大陆出口的流量稳定封装至香港,再由香港出国际,实现链路可控、绕开非预期跳数波动。
如下是逻辑拓扑结构:
[中国大陆主机] ←→ [香港服务器] ←→ [海外服务器]
| | |
IPsec+GRE 双IPsec隧道 IPsec+GRE
二、准备工作
1. 服务器要求
- 中国大陆节点:需有公网IP(或出口NAT IP),部署strongSwan + GRE内核支持。
- 香港节点:高带宽低延迟公网出口,支持多网卡策略路由,部署strongSwan + iptables + GRE。
- 海外节点:选用东京、新加坡、洛杉矶等低时延区域,部署IPsec+GRE。
2. 端口放行
三节点需开放如下端口:
| 协议 | 端口 | 用途 |
|---|---|---|
| UDP | 500 | IKE |
| UDP | 4500 | NAT-T |
| ESP | Protocol 50 | 加密通道 |
三、GRE over IPsec配置实操
以下以中国大陆 ↔ 香港之间的一条隧道为例。
1. IPsec配置(基于strongSwan)
大陆节点 /etc/ipsec.conf
conn hk-tunnel
auto=start
left=%defaultroute
leftid=CN_PUBLIC_IP
right=HK_PUBLIC_IP
type=tunnel
keyexchange=ikev2
authby=psk
ike=aes256-sha1-modp1024
esp=aes256-sha1
mark=100
leftsubnet=0.0.0.0/0
rightsubnet=0.0.0.0/0
密钥文件 /etc/ipsec.secrets
CN_PUBLIC_IP HK_PUBLIC_IP : PSK "strongpassword"
2. GRE隧道配置
大陆节点 GRE接口配置
ip tunnel add gre-cn-hk mode gre local CN_PUBLIC_IP remote HK_PUBLIC_IP ttl 255
ip link set gre-cn-hk up
ip addr add 10.0.0.1/30 dev gre-cn-hk
香港节点 GRE接口配置
ip tunnel add gre-hk-cn mode gre local HK_PUBLIC_IP remote CN_PUBLIC_IP ttl 255
ip link set gre-hk-cn up
ip addr add 10.0.0.2/30 dev gre-hk-cn
3. IPsec 与 GRE 协同
GRE属于非加密通道,所有数据必须通过IPsec加密传输。我们通过如下方式限制GRE流量只走IPsec:
- 给GRE绑定的流量打上特定fwmark
- 在iptables中标记与转发规则
示例(大陆端):
iptables -t mangle -A OUTPUT -p gre -d HK_PUBLIC_IP -j MARK --set-mark 100
ip rule add fwmark 100 table 100
ip route add HK_PUBLIC_IP/32 dev eth0 table 100
四、双通道配置与策略切换
在部署基础隧道后,我额外配置了一套备用链路(如 CN ↔ HK → US 与 CN ↔ HK → JP):
- 使用 keepalived + ip route 进行主备切换
- 利用 ping -I greX 检测GRE通道连通性
- 失败后自动切换 GRE 路由表
示例路由切换策略脚本简要:
if ! ping -I gre-cn-hk 10.0.0.2 -c 3; then
ip route replace default via 10.0.1.2 dev gre-cn-hk2
else
ip route replace default via 10.0.0.2 dev gre-cn-hk
fi
五、性能与链路质量验证
配置完成后,我使用如下工具进行链路验证:
- iperf3: 验证带宽稳定性(比公网BGP提升约1.8~3倍)
- mtr: 验证跳数与中继路径(中转香港后不再出现绕美或绕韩)
- tcpdump: 抓包确认ESP封装+GRE解包准确无误
六、典型问题排查
| 问题 | 原因 | 解决方案 |
|---|---|---|
| GRE隧道无法通 | IPsec未启动或端口被阻断 | 检查ESP端口、使用ip xfrm验证SA状态 |
| 数据走了公网未加密 | fwmark或策略路由未生效 | 检查ip rule list和iptables mangle标记 |
| MTU异常断流 | GRE封装+IPsec超过常规MTU | 建议统一MTU为1400以下,并配置MSS clamping |
通过部署GRE over IPsec双通道方案,以香港为稳定中转,我们成功构建了具备高安全性、高可用性、链路可控的跨境通信体系,尤其适用于以下场景:
- API调用需稳定低延迟响应
- 数据库跨境同步对丢包敏感
- WebSocket或QUIC通信要求保持链路连续性
这套方案的核心不在于复杂的技术栈,而在于对链路方向、封装逻辑与安全策略的精准控制。尤其是在当前大陆↔国际流量频繁绕路与限速的背景下,通过香港节点部署GRE over IPsec,是性价比极高的中转优化选项。











