나는 이것에 익숙하지 않고 다른 유사한 질문을 많이 살펴 보았지만 답을 찾을 수 없었습니다.
SoYouStart에는 두 개의 서버가 있고 한 서버에는 HAProxy VM이 있습니다. 두 서버 모두 Strongswan VPN 터널로 연결되어 있습니다. 포트 80, 443 및 기타 포트에서 HAProxy를 수신하는 장애 조치 IP도 있습니다.
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
호스트 서버에서는 이 경로를 사용하여 HAProxy VM에서 장애 조치 IP를 사용할 수 있도록 합니다.
ip route add FAILOVER_IP/32 via 192.168.100.2 dev vmbr1
모든 것이 작동하지만 이제 서버 2의 모든 VM에 대해 VPN 터널을 통해 이 장애 조치 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