안녕하세요.
오늘은 거의 쓰이지는 않지만 알아두면 좋은 아키텍쳐에 대해 확인해보겠습니다.

위 그림만 보시면 무슨 이런 아키텍쳐가 있나 하실 수도 있습니다.
저 또한 처음보고 왜 굳이 이렇게 통신을 하지? 그냥 외부용 VNET과 내부용 VNET 끼리 Peering만 맺으면 끝나는 일을 굳이 AWS를 거쳐서 통신할 필요가 있나 싶었는데요.
하지만 보안팀에서는 내부용 VNET과 외부용 VNET은 절대 망을 공유하면 안되는 조건이 있었어서 위 그림과 같은 아키텍쳐가 탄생되었습니다.
설명을 간단히 드리자면 외부용 VNET의 VM에서 EC2로 인터넷을 통해 통신을 하면 EC2에서 DNAT / SNAT를 하여 내부 VM에 전달되는 아키텍쳐입니다.
처음에는 EC2에서 DNAT만 진행해주고 Azure의 Local Network Gateway에서 외부 VM 퍼블릭 IP 대역만 추가해주면 될 줄 알았습니다.
다만 그렇게 하면 아래 그림과 같이 내부 VM에서 패킷을 전달 받지 못하게 되었는데요.
퍼블릭 IP의 Source IP가 그대로 VPN을 통과하지 못하는 것 같았습니다.
처음에는 assymetric을 의심했으나 Azure 측 VPN에서 패킷 캡쳐를 확인해봐도 외부 VM에서 오는 패킷은 전혀 확인되지 못하였습니다.
정말 assymetric이였다면 Azure VPN 측 패킷에 그래도 관련 패킷이 찍혀 있어야 정상일텐데 말이죠..
그래서 어쩔 수 없이 SNAT까지 진행한 결과 정상적으로 통신이 되는 것을 확인할 수 있었습니다.


`tcpdump` 명령어를 통해 확인한 결과 정상적으로 외부 VM에서 NAT EC2에 정상적으로 패킷이 인입되고

그 다음 SNAT 후 DNAT까지 하여 내부 VM IP로 전달 합니다.

내부 VM으로부터 응답 패킷을 받습니다.

다시 외부 VM으로 패킷을 전달합니다.
감사합니다.