본문 바로가기

Cloud

AWS-Azure간의 VPN 및 BGP 연동

Today Keys :  azrue, aws, vpn, connection, customer, local, bgp, asn, as number, network 연동, ipsec


이번 포스팅에서는 AWS와 Azure의 간을 VPN / BGP 구성을 통해서 VPC와 VNet이 Private하게 통신하도록 구성하는 예제를 다룹니다.
기존에도 동일한 주제로 포스팅을 한 적이 있었으나, 메뉴들이 시간이 지나면서 조금씩 바뀌는 듯하여 이번에 테스트를 위해 구성하면서 23년 11월 버전의 AWS와 Azure의 VPN 연동 포스팅을 남겨봅니다.

기본 내용은 AWS의 VGW를 통한 Azure와의 VPN 연동 설정이고, 하단에 AWS의 Transit Gateway를 통한 VPN 설정 방법에 대해서도 설정이 다른 부분만 별도로 간단히 정리했습니다.


ZIGI-VGW라는 이름으로 Virtual Private Gateway를 생성합니다.
BGP 연동을 위한 ASN Number는 기본 값을 설정해서 사용하거나, Custom ASN으로 직접 설정이 가능합니다.
Custom ASN으로 설정한 가능한 ASN은 64512-65534, 42000000000-4294967294까지 가능합니다.

 

방금 생성한 ZIGI-VGW를 VPC에 Attach 합니다.

 

Attach to VPC 메뉴에서 VGW에 연결한 VPC를 선택합니다.

 

VGW에 VPC를 Attach 하고 나면, State 값이 Attached로 변경되는 것을 볼 수 있습니다.

 

Azure에서도 Virtual Network Gateway를 생성합니다.

VPN 연결을 위한 Virtual Network Gateway이기 때문에 Gateway type를 VPN으로 설정합니다.

SKU와 Generation의 경우, 필요하신 사양에 맞춰서 적당한 값으로 선택하시면 됩니다.

Virtual Network Gateway에 연결 할 VNet과 Gateway Subnet을 선택합니다. 

VPN 연결에 사용 할 Public IP(PIP)를 선택합니다. 

이 IP는 AWS의 VPN 설정 시, Customer Gateway 설정이 필요한 값이니 기록해 둡니다.

BGP 연결을 위해서, BGP 설정 옵션(Configure BGP)을 Enable 합니다.

AS Number를 입력하고(기본 값은 65515), BGP 연결에 사용한 APIPA(Automatic Private IP Addressing)를 설정합니다.

APIPA로 설정 가능한 값은 169.254.21.*, 169.254.22.* 입니다.

Azure에서는 APIPA에 대한 값을 실제 사용 할 IP를 입력하고, AWS에서는 네트워크 주소로 입력해서 사용하기 때문에 Azure에 입력하는 APIPA의 IP 주소 값은 30비트에서 사용 가능한 뒷 자리 IP를 사용합니다.

본 예제에서는 169.254.21.0/30의 주소를 사용 할 것이기 때문에, 169.254.21.2 로 Azure에 입력합니다.

 

설정한 Virtual Network Gateway 값을 확인 후, 생성합니다.

 

Virtual Network Gateway를 생성하는 데는, 시간이 좀 걸리기 때문에 기다려줍니다.

생성이 완료되면, 아래와 같이 생성된 결과를 확인 할 수 있습니다.

 

Azure Virtual Network Gateway가 생성되고 나면, 

AWS에서 Customer gateway를 생성합니다.

Azure Virtual Network Gateway 생성 시에, 설정한 AS Number와 Pubilc IP를 설정합니다.

 

생성한 Customer gateway 정보는 아래와 같습니다.

 

이제 실제 VPN 연결을 위한 VPN Connection 정보를 입력합니다.

Target gateway type은 Virtual Private gateway로 설정하고, 앞서 만든 VGW를 선택합니다.

Customer Gateway도 방금 전에 만든 Customer Gateway로 설정합니다.

BGP 연결을 위해서 Routing option은 Dynamic으로 합니다.

 

하단의 Tunnel options 설정에서, BGP 연동을 위한 Inside IPv4 주소를 입력합니다.

Azure에서 입력한 APIPA에서는 실제 IP를 입력했지만, AWS에서는 네트워크 대역을 입력하기 때문에

169.254.21.0/30 으로 입력합니다.

Azure에서는 169.254.21.2로 입력했는 데, AWS에서는 대역으로 입력하면 앞 주소(169.254.21.1)를 AWS에서 사용하기 때문입니다.

 

 

생성된 VPN Connection 정보를 다음과 같이 확인 할 수 있습니다.

이제 AWS Customer Gateway와 동일한 역할을 하는 Azure Local Network Gateway 설정을 위해서, 

VPN connection의 Tunnel details 정보를 확인 가능한 Outside IP Address를 확인합니다. 

 

 

Azure에서 Local Network Gateway를 설정합니다.

Endpoint에 IP 주소를 입력하고, IP address로 AWS에서 생성한 Connection의 Tunnel state에 있는 Outside IP 정보를 입력합니다. 

 

BGP 설정을 Yes로 선택하고, AWS VGW에서 설정한 AS Number를 입력하고 Connection에서 설정한 169.254.21.0/30 대역에서 AWS에서 사용 할 IP 주소인 169.254.21.1를 입력합니다.

 

 

설정한 Local Network Gateway 정보를 확인한 뒤에 생성합니다.

 

Azure에서 Virtual Network Gateway에서 Connections를 설정합니다.

Connection Type은 VPN 연결이기 때문에 Site-to-site(IPsec)로 선택합니다.

 

처음에 만들어 둔, Virtual Network Gateway와 방금 전에 만든 Local Network Gateway를 설정합니다.

AWS에서 VPN Connection 생성 시에 입력한 Tunnel의 Pre-shared key를 동일하게 입력합니다.

BGP Address도 기존에 만들어 둔, 169.254.21.2로 선택합니다.

나머지는 기본 값으로 두고 생성하면 됩니다. 

 

설정한 Connection 정보를 확인 후, 생성합니다.

 

잠시 시간이 지난 후에, AWS와 Azure의 Connection이 연결된 것을 확인 할 수 있습니다.

 

AWS의 Tunnel 값에서 보시면, Status가 'Up'으로 되어 있고, Details에서는 Azure로부터 BGP 정보가 광고되어서, 1개의 BGP Routes가 생긴 것을 볼 수 있습니다. (VNet의 Address Space 정보)

 

Azure의 Connection에서도 'Connected'로 정상적으로 연결 된 것을 볼 수 있습니다.

 

Azure에서는 VPN으로 연결 시에, VNet 내부까지 System Route로 자동으로 경로가 잡히기 때문에 추가적인 설정을 하지 않아도 되지만, AWS에서는 Routing Table에 VPN으로 연결된 목적지(이 경우에는 Azure)에 대한 라우팅 설정을 해야 합니다.

Static하게 VGW로 라우팅 테이블을 잡을 수도 있지만, 라우팅 테이블의 Route propagation 설정을 사용해서, VGW의 라우팅 경로를 라우팅 테이블에 전파 할 수 있습니다. 

아래와 같이 라우팅 테이블에서, 'Route propagation' 메뉴를 보시면, 앞서 생성한 VGW가 보이고 Propagation 할 것인지 설정할 수 있습니다.

 

다음과 같이 Propagation을 Enable 체크합니다.

 

이후에 라우팅 테이블의 경로 정보를 확인하면, Azure의 Network 대역에 대해서 VGW로 Target으로 하는 네트워크 정보가 Propagated(Yes)로 반영된 것을 볼 수 있습니다.

 

모든 설정이 완료되면, AWS와 Azure 간의 통신이 다음과 같이 Private IP 주소로 가능한 것을 볼 수 있습니다.

 


추가로, VGW가 아닌 Transit Gateway에 VPN 연동을 위해서는 다음과 같이 진행하면 됩니다.

Transit Gateway Attachment를 만들 때, Attachment Type을 VPN으로 합니다.

Customer Gateway를 VGW에서 연결하는 것과 동일하게 설정하고, Routing 옵션과 Tunnel option도 동일한 방식으로 설정합니다.

 

Transit Gatway에 대한 VPN Attachment를 생성을 하게 되면, VPN Connection 메뉴에 다음과 같이 Connection이 생성된 것을 볼 수 있습니다. 

 

해당 Connection의 Tunnel 정보로, 외부와 VPN 연결을 구성하시면 됩니다. 

이 때, 상대편에서 설정해야 하는 IP는 VGW 연결 시와 마찬가지로 Connection의 Tunnel의 Outside IP이고, 

ASN의 경우에는 Transit Gateway 생성 시에 설정한 AS Number를 입력하시면 됩니다.