이번에는 클라우드 간 VPN 연동을 해보겠다.
연동할 클라우드는 AWS 와 Azure 이며, 간략하게 아래와 같은 아키텍처로 구성되어 있다.
VPC 와 서브넷이 모두 구성되어 있다는 가정하에 VPN 연결은
총 6 단계로 구성되어 있다.
구성 순서
- Azure - Virtual Network Gateway 생성
- AWS - Customer Gateway 생성
- AWS - Virtual Gateway or Transit Gateway 생성
- AWS - Site to Site VPN 생성
- Azure - Local Network Gateway 생성 x2
- Azure - Vitrual Network Gatewway Connection 생성 x2
바탕이 검은 사진은 AWS , 하얀 사진은 Azure 에서 작업했다.
1. Azure - Virtual Network Gateway 생성
- 게이트웨이 유형 : VPN
- VPN 형식 : 경로 기반
- 가상 네트워크 : Virtual Network Gateway 를 생성할 vNet
이 밖의 옵션은 구성 환경에 따라 변경하면 된다.
Azure VPN 구성의 특이한 점은 반드시 Gateway Subnet 을 생성해야 한다는 것이다.
해당 서브넷은 VPN 을 위해서만 사용되며 다른 vm 등을 배포하지 못한다.
VPN 전용 서브넷 생성은 AWS 에서는 옵션, Azure 에서는 필수
Virtual Network Gateway 를 생성 후 리소스를 확인해보면 공용 IP 를 확인할 수 있다.
해당 IP 를 이용해서 AWS Customer Gateway 를 생성할 것이다.
2. AWS - Customer Gateway 생성
- IP 주소에 Azure Virtual Network Gateway IP 를 입력한다.
3. AWS - Virtual Private Gateway 생성
Transit Gateway 를 사용할 사람은 이 단계에서 TGW 를 대신 생성해주면 된다.
- 생성 후, VPN 을 연결할 VPC 에 Attach 작업을 진행한다.
4. AWS - Site to Site VPN 생성
각각 생성해준 Gateway 를 선택하되, TGW 를 사용할 사람은 대상 게이이트웨이 유형에서 Transit Gateway 를 선택하면 된다.
또한, 정적 라우팅을 사용할 예정이므로 고정 IP 접두사에 Azure 의 vNet 범위를 입력한다.
고정 IP 접두사는 AWS 에서 내보낼 Target IP 범위라고 생각하면 되며,
정적 라우팅일 경우 해당 범위가 지정되지 않으면 통신이 이루어지지 않는다.
AWS 는 기본적으로 VPN 연결 시 Tunnel 2개를 제공해준다. (이중화 구성)
터널 2개의 Pre-Shared Key (사전 공유 키) 를 직접 입력해주어도 되지만,
입력하지 않아도 AWS 에서 생성해서 전달해준다.
Azure VPN 에 연결하기 위해서는 각 터널의 PSK 값이 필요하다.
VPN 터널의 PSK 값 확인하기
VPN 연결 콘솔 화면에서 '구성 다운로드' 를 선택하여 파일을 다운로드 한다.
자주 사용되는 Fortinet 구성 파일을 예시로 들어보겠다.
구성 파일을 오픈하면 중간에 Tunnel 에 대한 정보가 들어있으며, 해당 Tunnel 의 PSK 값을 확인할 수 있다.
각 Tunnel의 공인 IP 와 PSK 를 확인했다면 다시 Azure 로 넘어가 작업을 진행한다.
5. Azure - Local Gateway Network 생성
Azure 의 VPN 서비스는 Tunnel 을 1개만 제공한다.
그렇기에 AWS VPN Tunnel 을 두 개 모두 활성화 시키기 위해서는 VPN 리소스를 2개씩 생성해주어야 한다.
- IP 주소 : AWS VPN Tunnel IP 입력
- 주소 공간 : AWS VPC cidr 범위
6. Azure - Virtual Gateway Network Connection 생성
- Azure 에서 생성했던 게이트웨이와 AWS VPN Tunnel 의 PSK 값을 입력한다.
- 이후 각 클라우드 콘솔에서 연결 상태를 확인할 수 있다.
7. VPN 연결 테스트 진행
실제로 잘 연결이 되었는 지, AWS 와 Azure 의 VM 에서 각각 테스트한다.
- AWS EC2 : 192.168.30.170
- Azure VM : 10.100.30.4
두 곳 모두 정상 통신하는 것을 확인할 수 있다.