소스 기반 DNAT 전달

소스 기반 DNAT 전달

두 개의 서로 다른 Google Cloud VPN 게이트웨이 GW_IP_1GW_IP_2두 개의 NAT 포스트 라우터를 사용하여 R1두 개의 IPSec 터널을 설정하고 싶습니다 R2. 이 같은:

GW_IP_1 ---\                                    /--- R1
            |-- my_main_router_NAT_firewall ---|
GW_IP_2 ---/                                    \--- R2

문제: 게이트웨이(and)의 소스 IP 주소를 기반으로 특정 라우터(and) 로 UDP포트를 전달합니다 500.R1R2GW_IP_1GW_IP_2

이상한 상황이 발생했습니다. 터널이 작동하고 패킷이 올바르게 일치하고 전달되었지만 패킷이 작동하지 않았습니다.두 번째 라우터 R2의 경우일치하는 항목이 없습니다. 어딘가에서 사라진 것 같습니다.

기본 NATting 라우터에서 DNAT 규칙을 만들었습니다.

-t nat -A PREROUTING -p udp -s GW_IP_1 --dport 500 -j DNAT --to R1:500
-t nat -A PREROUTING -p udp -s GW_IP_2 --dport 500 -j DNAT --to R2:500

나는 tcpdump계속 달리고 있습니다. 패킷이 수신되고 터널이 열립니다.R1R2R1그러나 R2는 500개의 패킷을 보지 못했습니다.. 그런 다음 두 패킷 모두 tcpdump에서 main_router패킷을 실행하여 예상 GW_IP_1대로 GW_IP_2도착했습니다 .

나는 며칠 동안 라우터(Ubiquiti ER-X) 등과 씨름했습니다. 이것이 펌웨어 버그이거나 이 유형의 라우터에 특정한 문제라고 생각했습니다. 그러나 처음부터 두 개의 인터페이스, 전달 및 모든 규칙을 사용하여 간단한 Linux 라우터를 설정했으며 결과는 동일했습니다. 하나의 터널은 작동했지만(패킷은 올바르게 전달됨) 두 번째 라우터는 작동하지 않았습니다. 패킷 없음 수신됩니다.

iptables따라서 이것은 아마도 /kernel에 대한 좀 더 기본적인 것일 것입니다. 누군가 이것을 설명할 수 있나요?

관련 정보