如何通过 VPN 隧道重定向公网 IP

如何通过 VPN 隧道重定向公网 IP

我对此很陌生,我已经查看过许多其他类似的问题,但我找不到答案。

我在 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

相关内容