我对此很陌生,我已经查看过许多其他类似的问题,但我找不到答案。
我在 SoYouStart 有两台服务器,其中一台服务器上有一台 HAProxy VM。两台服务器都通过 Strongswan VPN 隧道连接。我还有一个故障转移 IP,它在 HAProxy 的端口 80、443 和其他几个端口上进行监听。
HAProxy VM1 网络配置:
iface eth0 inet static
address 192.168.100.2
netmask 255.255.255.224
network 192.168.100.0
broadcast 192.168.100.31
gateway 192.168.100.30
post-up ip addr add FAILOVER_IP dev $IFACE
pre-down ip addr del FAILOVER_IP dev $IFACE
在主机服务器上,我使用此路由使故障转移 IP 在我的 HAProxy VM 上可用。
ip route add FAILOVER_IP/32 via 192.168.100.2 dev vmbr1
一切正常,但现在我想通过我的 VPN 隧道将服务器 2 上所有虚拟机的流量重定向到此故障转移 IP。
我尝试过这些规则,但是没有作用。
服务器2:
iptables -t nat -A PREROUTING -i eth0 -d FAILOVER_IP -m connmark
--mark 0xE010E798 -j DNAT --to-destination 192.168.100.2
服务器 1:
iptables -t nat -A POSTROUTING -i eth0 -d 192.168.100.2/32
--match connmark --mark 0xE010E798 -j SNAT --to-source FAILOVER_IP
有人能帮我找出我做错的地方吗?我的目标是在服务器 2 上拥有第二个 HAProxy 实例,并将内部流量重定向到活动的 HAProxy 实例。
谢谢。
答案1
找到答案了。首先,我不知道标记仅适用于本地计算机。第二个错误是我在服务器 1 上使用了 SNAT,它更改了发送方地址,但我需要再次更改目标地址,并且必须更改接口。我的工作规则是
服务器 2
iptables -t nat -A PREROUTING -i vmbr1 -p tcp -d FAILOVER_IP
-j DNAT --to-destination 192.168.100.2
服务器 1
iptables -t nat -A PREROUTING -p tcp -d 192.168.100.2
-j DNAT --to-destination FAILOVER_IP