Microsoft/Azure

Azure Standard Internal Load Balancer의 Backend VM 인터넷 연결 허용 - NAT Gateway

megapain 2020. 9. 17. 00:39

2020-09-17

Azure의 Standard Internal Load Balancer의 Backend VM은 기본적으로(by-design) 인터넷 아웃바운드 연결이 차단됩니다. 관련 내용은 아래 doc에서 확인할 수 있습니다. 

https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-outbound-connections#scenarios-with-outbound-rules

실제로 인터넷 연결이 차단되는지 테스트 환경을 구성해보았습니다. 

Azure 일본 동부 리전에 두 대의 Windows VM을 배포하였습니다.  

Standard Internal Loab Balancer를 생성하고, Backendpool에 위 VM 두 대를 연결하였습니다. 

Bastion을 통하여 VM에 접속한 후 www.google.com에 접속해보았습니다. 

아래와 같이 연결이 안되는 것을 확인했습니다. 

 

해결책 

맨 처음에 언급했던 doc에서는 Standard Public Load Balancer를 만들고 Outbound NAT를 사용하라고 나와 있습니다. 
https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-outbound-connections#scenarios-with-outbound-rules 

 

Azure의 Virtual Network NAT (NAT Gateway 리소스)를 사용하면 문제를 좀 더 간편하게 해결할 수 있습니다. 

 

Virtual Network NAT (NAT Gateway 리소스)에 대해서는 아래 doc를 참고하시기 바랍니다. 

Virtual Network NAT - https://docs.microsoft.com/en-us/azure/virtual-network/nat-overview 
Desgining virtual networks with NAT gateway resources https://docs.microsoft.com/en-us/azure/virtual-network/nat-gateway-resource 

 

NAT Gateway 리소스를 생성할 때, Standard Public IP (혹은 Public IP Prefix)와 Subnet을 선택할 수 있습니다. 

 

Subnet은 NAT Gateway를 사용할 VM들이 위치한 Subnet이고, 여러 Subnet을 선택할 수 있습니다. 
Public IP는 해당 Subnet의 VM들이 인터넷 아웃바운드에서 사용하는 Public IP 주소입니다. 

NAT Gateway를 Subnet에 연결 후 VM이 인터넷에 정상적으로 연결되는 것을 확인할 수 있습니다. 

 

이때 VM이 인터넷 접속할 때 타고나가는 Public IP 주소가 NAT Gateway의 Public IP  주소와 일치하는 것을 확인할 수 있습니다. 

 

*참고 - NAT Gateway 제약 사항

  • 이 글을 작성하는 현재(2020-09-17) NAT Gateway는 Zone redundant  지원하지 않습니다. 
  • NAT Standard SKU Public IP, Public IP prefix 및 로드 밸런서(Load balancer) 리소스와 호환됩니다. Basic 로드 밸런서와 같은 Basic 리소스 및 해당 리소스에서 파생된 제품은 NAT와 호환되지 않습니다. Basic 리소스들은 NAT로 구성되지 않은 서브넷에 배치해야 합니다.
  • IPv4 주소 계열이 지원됩니다. NAT IPv6 주소 계열과 상호 작용하지 않습니다. IPv6 Prefix가 있는 서브넷에는 NAT를 배포할 수 없습니다.
  • NAT는 여러 가상 네트워크에 걸쳐 있을 수 없습니다.

-끝-