通过GRE隧道建立多地集群
1. 规划IP地址
为每对隧道分配独立的/30子网(避免冲突):
A ↔ B隧道:
10.0.0.0/30
- A端IP:
10.0.0.1
- B端IP:
10.0.0.2
- A端IP:
A ↔ C隧道:
10.0.1.0/30
- A端IP:
10.0.1.1
- C端IP:
10.0.1.2
- A端IP:
B ↔ C隧道:
10.0.2.0/30
- B端IP:
10.0.2.1
- C端IP:
10.0.2.2
- B端IP:
2. 配置GRE隧道
服务器A配置
# 创建A到B的隧道
ip tunnel add gre-ab mode gre local A公网IP remote B公网IP
ip addr add 10.0.0.1/30 dev gre-ab
ip link set gre-ab up
# 创建A到C的隧道
ip tunnel add gre-ac mode gre local A公网IP remote C公网IP
ip addr add 10.0.1.1/30 dev gre-ac
ip link set gre-ac up
服务器B配置
# 创建B到A的隧道
ip tunnel add gre-ba mode gre local B公网IP remote A公网IP
ip addr add 10.0.0.2/30 dev gre-ba
ip link set gre-ba up
# 创建B到C的隧道
ip tunnel add gre-bc mode gre local B公网IP remote C公网IP
ip addr add 10.0.2.1/30 dev gre-bc
ip link set gre-bc up
服务器C配置
# 创建C到A的隧道
ip tunnel add gre-ca mode gre local C公网IP remote A公网IP
ip addr add 10.0.1.2/30 dev gre-ca
ip link set gre-ca up
# 创建C到B的隧道
ip tunnel add gre-cb mode gre local C公网IP remote B公网IP
ip addr add 10.0.2.2/30 dev gre-cb
ip link set gre-cb up
3. 路由配置(可选)
若需通过隧道路由其他网络,添加静态路由。例如,在A上添加路由到B和C的私有网络:
# 假设B的私有网络为192.168.1.0/24,C的为192.168.2.0/24
ip route add 192.168.1.0/24 via 10.0.0.2 dev gre-ab
ip route add 192.168.2.0/24 via 10.0.1.2 dev gre-ac
4. 防火墙设置
允许GRE协议(IP协议号47)和ICMP:
# 使用iptables(所有服务器执行)
iptables -A INPUT -p gre -j ACCEPT
iptables -A OUTPUT -p gre -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT
5. 测试连通性
在A上测试:
ping 10.0.0.2 # 应收到B的回复 ping 10.0.1.2 # 应收到C的回复
在B上测试:
ping 10.0.0.1 # A ping 10.0.2.2 # C
在C上测试:
ping 10.0.1.1 # A ping 10.0.2.1 # B
6. 持久化配置(可选)
将配置写入网络配置文件(如/etc/network/interfaces
或systemd-networkd),确保重启后生效。
注意事项
- MTU调整:GRE头部增加24字节,建议设置隧道接口MTU为1476(
ip link set dev gre-ab mtu 1476
)。 - NAT穿透:若服务器位于NAT后,需确保GRE流量被正确转发(可能需配置NAT规则)。
- 密钥验证:为增强安全,可使用GRE的
key
参数(需双方一致)。
2 评论
1t2jqz
JtM EHUYGbT hrg Szt slojbgb rXw ShLWocex