안녕하세요 서후아빠입니다. ^_^
이번 세션은 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 구성요소 생성하기
1단계 (Azure) : 리소스 생성 (리소스 그룹, Vnet, Subnet, Instance, VGW 등)
구분 | 리소스 그룹 | 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 연결 확인
구분 | 이름 | 엔드포인트 | 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 연결 확인
5단계 (AWS) : Route tables 설정
6단계 (AWS, Azure) : VPN 통신 확인
AWS pubA-ec2에서 Azure Instance 사설 IP로 Ping or SSH 접속 시도
AWS, Azure 모두 NACL, SG 등 보안 설정에 대해서 Inbound, Outbound 정책을 꼭 확인해서 허용하도록 합니다. |
'Networking' 카테고리의 다른 글
[실습] AWS Endpoint (Interface, Gateway) 이용하여 S3 접근하기 (0) | 2022.07.19 |
---|---|
[이론] AWS Endpoint(Interface, Gateway) 기본 개념 (0) | 2022.07.19 |
[실습] Amazon TGW (Transit Gateway) 구성하기 (2개 이상의 AWS 계정+동일 Region, non-Split)-5편 (0) | 2022.07.15 |
[실습] Amazon TGW (Transit Gateway) 구성하기 (2개 이상의 AWS 계정+동일 Region, Split)-4편 (0) | 2022.07.15 |
[실습] AWS ELB (Gateway 방식 Endpoint) 구성하기 (0) | 2022.07.15 |