본문 바로가기

Networking

[실습] AWS Site-to-Site VPN 구성하기 (Azure, BGP, Active-Active)-1편

반응형

안녕하세요 서후아빠입니다. ^_^

이번 세션은 AWS와 Azure 사이에 VPN 연결에 대해서 실습을 해보겠습니다.

AWS APIPA 설계에 대해서만 이해하시면 내용은 어렵지 않습니다. 제가 처음 접할 때 이 부분에 대한 이해도가 낮아서 고생한 기억이 있네요


구성도

AWS APIPA(169.254.0.0/16) 예약 규정

Azure의 경우 예약 범위는 169.254.21.0~169.254.22.255

터널별로 /30로 나누어 “내부 IPv4 CIDR” 설계 : 첫번째 IP는 AWS 사용, 두번째 IP는 Azure 사용

내부 IPv4 CIDR은 모든 Azure VPN Connection에서 중복이 발생하면 안됩니다.

위 구성도의 경우 터널이 4개이므로 내부 IPv4 CIDR 4개 필요합니다. 
각 CIDR에서 첫번째 IP는 AWS에 할당, 두번째 IP는 Azure에 할당합니다.

구축 전 APIPA과 BGP ASN번호에 대해서 고객사 사이트(ex : Azure)와 상호 협의를 꼭 진행하시기 바랍니다. 
  - 고객사 장비에서 APIPA 대역이나 ASN번호에 대한 중복이 발생하지 않도록 설계

사전 작업

인프라 생성 : vpc, subnet, igw, routing table, ec2 등은 설명 생략합니다.

2022.07.02 - [Networking] - [실습] Amazon VPC 구성요소 생성하기

 

[실습] Amazon VPC 구성요소 생성하기

안녕하세요 서후아빠입니다. ^_^ 이번 세션은 VPC 관련 구성요소에 대해서 실습을 해보겠습니다. 구성도 1단계 : VPC 생성 VPC > Your VPCs > Create VPC 구분 VPC settings (VPC Only 방식) VPC settings (VPC a..

sh-t.tistory.com

1단계 (Azure) : 리소스 생성 (리소스 그룹, Vnet, Subnet, Instance, VGW 등)

가상 네트워크 > 만들기 (20분 이상 소요)
구분 리소스 그룹 Vnet 지역 IPv4 주소 공간 서브넷
내용 testRG vnetB Seoul 20.0.0.0/16 pubB-sn : 20.0.1.0/24
GatewaySubnet : 20.0.2.0/24 

가상 네트워크 게이트웨이 > 만들기 : 가용영역(필요 시 영역 중복), 20분 이상 소요

구분 이름 지역 GW유형 VPN형식 SKU
내용 vgwB Seoul VPN VpnGW2 2세대
구분 가상 네트워크 서브넷 공용IP 활성-활성 2번째 공용IP
내용 vnetB GatewaySubnet Standard, pipB1 사용 pipB2
구분 BGP 구성 ASN Azure APIPA BGP IP 주소
내용 사용 65515 (Azure 기본값) 첫번째 : 169.254.21.2, 169.254.22.2
두번째 : 169.254.21.6, 169.254.22.6 
Azure는 AWS와 다른점을 간략히 정리하면 아래와 같습니다. 
  - 리소스 그룹이란 개념으로 리소스 그룹을 삭제하면 그 그룹에 포함된 리소스를 일괄로 삭제 가능하다.
  - 서브넷 하나를 여러개의 가용영역에 걸쳐서 생성이 가능하여 AWS보다는 효율적이다.
  - 공용IP도 AWS와 달리 Public Subnet 개념이 아니기 때문에 여기저기 붙일 수 있다. 
  - 리소스가 공용IP가 없어도 기본적으로 Outbound 통신이 되기 때문에 당황스러워 하지 마세요.
  - AWS의 IGW 개념이 없기 때문에 모든 Subnet은 인터넷 통신을 시킬 수 있다. 

2단계 (AWS) : 리소스 생성 (VGW, CGW, VPN 연결)

사전에 인프라 생성 : vpc, subnet, igw, routing table, iam, ec2, CloudWatch의 로그 그룹  등

VPC > Virtual private gateways > Create Virtual private gateway (5분 이상 소요)

구분 Name tag Autonomous System Number (ASN) remark
내용 vgwA 64512 (AWS기본값, Azure와 다른 값 입력) -
ASN값이 중복되면 통신이 되지 않습니다. 꼭 다르게 설정하시기 바랍니다.

VPC > Virtual private gateways > vgwA 선택 > Actions > Attach to VPC > Available VPCs(vpcA) > Attach to VPC

VPC > Customer gateways > Create Customer gateway 

구분 Name tag BGP ASN IP address
1 cgwA1 65515 (Azure ASN값) pipB1 (Azure 공용IP 1번)
2 cgwA2 65515 (Azure ASN값) pipB2 (Azure 공용IP 2번)

VPC > Site-to-Site VPN Connections > Create VPN connection 

구분 Details Tunnel
cgwA1 연결 Name tag : vpnA1
Target gateway type : Virtual private gateway
Virtual private gateway : vgwA
Customer gateway : Existing
Customer gateway ID : cgwA1
Routing options : Dynamic (requires BGP)
Local IPv4 network CIDR : 0.0.0.0/0
Remote IPv4 network CIDR : 0.0.0.0/0
Inside IPv4 CIDR for tunnel 1 : 169.254.21.0/30
Pre-shared key for tunnel 1 : test123456
Advanced options for tunnel 1 : Use default options
--------------------------------------------------------------------
Inside IPv4 CIDR for tunnel 2 : 169.254.22.0/30
Pre-shared key for tunnel 2 : test123456
Advanced options for tunnel 2 : Use default options
cgwA2 연결 Name tag : vpnA2
Target gateway type : Virtual private gateway
Virtual private gateway : vgwA
Customer gateway : Existing
Customer gateway ID : cgwA2
Routing options : Dynamic (requires BGP)
Local IPv4 network CIDR : 0.0.0.0/0
Remote IPv4 network CIDR : 0.0.0.0/0
Inside IPv4 CIDR for tunnel 1 : 169.254.21.4/30
Pre-shared key for tunnel 1 : test123456
Advanced options for tunnel 1 : Use default options
--------------------------------------------------------------------
Inside IPv4 CIDR for tunnel 2 : 169.254.22.4/30
Pre-shared key for tunnel 2 : test123456
Advanced options for tunnel 2 : Use default options
Local IPv4 network CIDR 0.0.0.0/0 의미 : Azure측 대역 정보, 대역 변동이 발생이 우려될 경우 0.0.0.0/0 설정 권고
Remote IPv4 network CIDR 0.0.0.0/0 의미 : AWS측 대역 정보, 연결된 VPC 대역으로 제한 설정 권고
Pre-shared key : AWS와 Azure이 통신할 때 약속된 공개키 값으로 양쪽 모두 동일한 값으로 설정해야 통신이 됨

cgw 1개당 최대 2개의 VPN 연결이 가능합니다. 즉 cgw 1개당 1개의 VPN 연결도 가능합니다. 
만약 1개씩만 연결한다고 가정하면 아래 3단계에서 lgwB2, lgwB4는 필요가 없습니다. 

VPC > Site-to-Site VPN Connections > vpnA1 or vpnA2 >Tunnel details (tab) > Outside IP address 

Create VPN connection에서 cgwA1과 cgwA2 모두 Tunnel을 2개 생성하였기 때문에 Outside IP address가 각각 2개씩 자동 생성됩니다.
Outside IP address 우측에 Inside IPv4 CIDR을 보시면 Create VPN connection에서 입력한 Tunnel 정보입니다. 
여기서 확인한 Outside IP address 4개(cgwA1 2개, cgwA2 2개)를 Azure에 전달하여 설정하도록 합니다. 

3단계 (Azure) : 리소스 생성 (Local GW, VPN 연결) 및 VPN 연결 확인

로컬 네트워크 게이트웨이 > 만들기 : 리소스 그룹(testRG), 지역(Seoul)
구분 이름 엔드포인트 IP주소(2단계 AWS에서 확인한 값 입력) BGP ASN BGP 피어 IP주소
1 lgwB1 IP주소 vpnA1 > Tunnel details (tab) > Tunnel 1의 Outside IP address 64512
(AWS ASN 값)
169.254.21.1
2 lgwB2 IP주소 vpnA1 > Tunnel details (tab) > Tunnel 2의 Outside IP address 64512
(AWS ASN 값)
169.254.22.1
3 lgwB3 IP주소 vpnA2 > Tunnel details (tab) > Tunnel 1의 Outside IP address 64512
(AWS ASN 값)
169.254.21.5
4 lgwB4 IP주소 vpnA2 > Tunnel details (tab) > Tunnel 2의 Outside IP address 64512
(AWS ASN 값)
169.254.22.5

가상 네트워크 게이트웨이 > vgwB > 연결 > 추가 : 연결형식(사이트간), VGW(vgwB), BGP 사용(), 사용자 지정 BGP 주소 활성화(아래 표에서 vpnB2나 vpnB4를 사용할 때에만 예로 설정), IKE 프로토콜(IKEv2)

구분 이름 Local GW 공유키 기본 사용자 지정 BGP 주소 보조 사용자 지정 BGP 주소
1 vpnB1 lgwB1 test123456 169.254.21.2 169.254.21.6
2 vpnB2 lgwB2 test123456 169.254.22.2 169.254.22.6
3 vpnB3 lgwB3 test123456 169.254.21.2 169.254.21.6
4 vpnB4 lgwB4 test123456 169.254.22.2 169.254.22.6

가상 네트워크 게이트웨이 > vgwB > 연결 > 상태 “연결됨” 확인

가상 네트워크 게이트웨이 > vgwB > BGP 피어 > 상태 “Connecting” 확인

공유키는 AWS "VPC > Site-to-Site VPN Connections > Create VPN connection"에서 입력한 값과 동일하게 입력합니다.
상태가 "연결됨"으로 변경되는데까지 시간이 조금 필요하니 기다리시면 됩니다. 

4단계 (AWS) : VPN 연결 확인

VPC > Site-to-Site VPN Connections > vpnA1 or vpnA2 >Tunnel details (tab) > Status "Active" 확인

5단계 (AWS) : Route tables 설정

VPC > Route tables > pubA-rt 선택 > Route Propagation (tab) > Edit route propagation > 활성화 설정

6단계 (AWS, Azure) : VPN 통신 확인

AWS pubA-ec2에서 Azure Instance 사설 IP로 Ping or SSH 접속 시도

AWS, Azure 모두 NACL, SG 등 보안 설정에 대해서 Inbound, Outbound 정책을 꼭 확인해서 허용하도록 합니다. 
반응형