만자의 개발일지

[AWS] VGW와 CGW를 사용하여 Site-to-Site VPN 구성하기 본문

AWS

[AWS] VGW와 CGW를 사용하여 Site-to-Site VPN 구성하기

박만자 2022. 5. 13. 21:30

Site-to-Site VPN

기본적으로 VPC는 온프레미스 네트워크와 통신할 수 없습니다. 

따라서 IPSec 프로토콜 스위트를 사용해 VPC와 온프레미스 네트워크 간의 프라이빗 네트워크를 구성하는데 이를 Site-to-Site VPN 이라고 합니다. 여기서 VPN이란 VPC와 온프레미스 네트워크 간의 연결을 의미합니다.

Site-to-Site VPN은 다양한 방식으로 구성할 수 있지만 이번 포스팅에서는 VGW(Virtual Private Gateway)CGW(Customer Gateway)를 이용해 구성해 보도록 하겠습니다,

 

VGW(Virtual Private Gateway)

VGW는 가상 사설 네트워크인 VPC와 온프레미스 네트워크를 연결하는 방식 중 가장 오래된 방식입니다.

VGWVPC와 온프레미스 네트워크를 연결하는 VPC 쪽의 라우터 역할을 합니다.

VGW를 이용해 온프레스 네트워크와 연결하기 위해서는 온프레미스 네트워크 쪽에 CGW(Customer Gateway)를 구성해 줘야 합니다. 

 

VGW는 다음과 같은 특징들을 가지고 있습니다.

  • VGW는 여러 개의 온프레미스 라우터와 연결이 가능합니다.
  • 다만 VGW는 하나의 VPC에만 연결할 수 있습니다.
  • VGW는 Site-to-Site VPN, Direct Connect 연결을 통해 온프레미스 네트워크와 연결이 가능합니다.
  • VGW 생성시 동적 라우팅을 사용할 경우 ASN(Autonomous System Number)를 지정해 줘야합니다.

CGW(Customer Gateway)

CGW는 온프레미스 네트워크의 CGD(Customer Gateway Device)의 설정 값을 VGW에 제공하기 위한 가상 게이트웨이입니다. CGWAWS에서 설정할 수 있습니다.

 

CGW는 다음과 같은 특징들을 가지고 있습니다.

  • CGD에 있는 IP 정보 등 CGD와 연결할 수 있는 설정 값들을 CGW에 지정함으로써 VGW는 CGW에 있는 해당 값들을 참조해 CGD에 연결할 수 있게 됩니다.
  • CGW 역시 동적 라우팅을 사용할 경우 ASN을 지정해 줘야합니다.

CGD(Customer Gateway Device)

CGD는 Site-to-Site VPN 연결을 위해 온프레미스에 설치된 라우터 등의 물리적 디바이스 또는 소프트웨어를 의미합니다.

 

CGD는 다음과 같은 특징들을 가지고 있습니다.

  • CGDBGP를 지원하지 않을 경우 VPN 연결시 동적 라우팅을 사용할 수 없습니다. 따라서 이 경우 정적 라우팅을 사용해야 합니다.
  • VGW와 CGW의 설정을 모두 구성한 뒤 구성파일을 다운로드 받아 CGD에 설치하게 되면 VPC와 온프레미스 네트워크 간의 VPN Tunnel이 구성됩니다.

VPN Tunnel

VPN 터널은 VPC와 온프레미스 네트워크 간의 서로 데이터를 주고받을 수 있는 암호화된 링크입니다.

 

VPN 터널은 다음과 같은 특징들을 가지고 있습니다.

  • VPN 터널은 IPSec 프로토콜 스위트를 사용해 데이터를 암호화하여 처리합니다.
  • 각 VPN 터널은 인터넷 연결을 위한 Public IP와 내부 연결을 위한 내부 CIDR로 구성됩니다.
  • 또한 VPN 터널이 생성될 때 AWS에서 기본값을 지정하게 되는데, 암호화, Dead Peer Detection(DPD) 시간 초과, IP 주소 등의 터널옵션을 직접 지정할 수 있습니다.
  • Site-to-Site VPN을 구성할 때 두 개의 VPN 터널을 생성하게 되는데, 그 이유는 VPN 터널이 사용 불가능 해질 경우 다른 VPN 터널로 자동으로 라우팅되어 고가용성을 겸비할 수 있습니다.
  • VPN 터널당 최대 대역폭은 1.25Gpbs 입니다.

VGW와 CGW를 사용하여 Site-to-Site VPN 구성

구현해야할 아키텍처는 다음과 같습니다. VGW와 CGW를 구성하고 VPN Connection을 생성하여 VPC와 온프레미스 네트워크를 연결해 줄 것입니다. 다만 필자는 온프레미스 서버가 없기 때문에 아키텍처에 나와있는 구성만 진행하도록 하겠습니다.

 

CGW 생성

우선 퍼블릭 서브넷과 프라이빗 서브넷이 있는 VPC를 하나 생성해줍니다. (VPC 생성 과정은 생략하도록 하겠습니다.)

그 다음 VPC 콘솔 화면에서 왼쪽 메뉴중 Customer Gateways를 선택한 후 Create customer gateway 버튼을 눌러 CGW를 생성해 줍니다.

 

그 다음 이름을 지정해주고 다음과 같이 옵션을 지정해 줍니다.

옵션의 내용은 다음과 같습니다.

  • BGP ASN(Border Gateway Protocol Autonomous System Number)
    • BGP는 VPC와 온프레미스 네트워크 간의 연결에 사용되는 프로토콜입니다.
    • BGP를 사용하기 위해서는 ASN을 지정해줘야 합니다.
    • AWS에서 지정한 CGW의 default ASN은 65000이며, 퍼블릭 ASN 혹은 퍼블릭 ASN이 없다면 64512~65534 사이의 프라이빗 ASN을 지정해 줄 수 있습니다.
    • CGW에서는 4,200,000,000~4,294,967,294 사이의 프라이빗 ASN은 지원하지 않습니다.
  • IP address
    • CGD의 IP주소를 지정해 줄 수 있습니다. (임의로 1.2.3.4를 지정해 주었습니다.)
  • Certification ARN
    • ACM(AWS Certificate Manager)을 통해 발급받은 인증서를 선택할 수 있습니다.
  • Device(Optional)
    • CGD의 이름을 지정해 줄 수 있습니다.

 

모든 설정을 마쳤다면 하단에 Create customer gateway 버튼을 눌러 CGW를 생성해 줍니다.

 

CGW가 잘 생성된 것을 보실 수 있습니다.

 

VGW 생성

그 다음으로는 VGW를 생성해 주어야합니다.

왼쪽 메뉴에 Virtual Private Gateways를 선택한 후 Create virtual private gateway 버튼을 눌러 VGW를 생성해 줍니다.

 

그 다음 이름과 ASN을 지정해 줍니다. AWS에서 지정한 VGW의 default ASN은 64512 입니다.

모든 설정을 마쳤으면 하단에 Create virtual private gateway 버튼을 눌러 VGW를 생성해 줍니다.

 

VGW가 잘 생성되었다면 오른쪽 위에 Actions 버튼을 누른 후 Attach to VPC를 눌러 VGW를 VPC에 연결해 줍니다.

 

VGW에 연결할 VPC를 지정한 후 Attach to VPC 버튼을 눌러 VPC와 연결해 줍니다.

 

잘 연결된 것을 보실 수 있습니다.

 

VGW를 통해 CGW와 연결되어 VPN이 구성되게 되는데, 이 과정에서 둘 사이의 라우팅 테이블을 주고받기 위해서는 VPC의 라우팅 테이블에서 라우팅 전파 옵션을 활성화 시켜야 합니다.

왼쪽 메뉴에 Route Tables을 선택한 후 Route propagation 메뉴를 선택해 줍니다.

그 다음 Edit route propagation 버튼을 눌러 라우팅 전파 옵션을 편집해 줍니다.

 

라우팅 전파 옵션을 활성화 해준 후 Save 버튼을 눌러 변경 사항을 저장해 줍니다.

라우팅 전파를 하고자 하는 라우팅 테이블들 모두 위 과정을 진행해 줍니다. 

라우팅 전파 옵션을 활성화 해주면 CDG에 해당 라우팅 테이블의 라우팅 정보를 학습하게 됩니다.

 

VPN Connection 생성

그 다음 VPN Connection을 생성해 주어야 합니다.

왼쪽 메뉴에 Site-to-Site VPN Connections 메뉴를 선택한 후 Create VPN connection 버튼을 눌러 VPN Connection을 생성해 줍니다.

 

이름과 VGW, CGW를 지정해 준 후 Local IPv4 network CIDR 옵션에는 VPC의 CIDR 대역을, Remote IPvr4 network CIDR옵션에는 온프레미스 네트워크의 CIDR 대역을 지정해 줍니다. (필자는 임의로 10.10.0.0/16을 지정해 주었습니다.)

터널 옵션의 경우 CIDR 대역이나 키값 등을 사용자가 지정해 줄 수 있지만 이번 포스팅에서는 AWS에서 지정해주는 기본 값으로 사용하도록 하겠습니다.

설정을 마쳤다면 하단에 Create VPN connection 버튼을 눌러 VPN Conection을 생성해 줍니다.

 

VPN Connection이 잘 생성된 것을 보실 수 있습니다.

하지만 온프레미스 서버가 없기 때문에 실제로 연결이 되진 않습니다.

VPN Connection을 생성하면 위에서 설명했듯이 VPN 터널이 두 개가 생성됩니다.

VPC와 온프레미스 네트워크는 이 VPN 터널을 통해 통신하게 됩니다.

 

VPC에서의 VPN 구성은 끝났으니 이제 온프레미스에서의 VPN 구성을 해줘야 합니다.

오른쪽 상단에 Download contiguration 버튼을 눌러줍니다.

 

CGD에 맞게 구성을 선택한 후 다운로드 버튼을 누르면 CGW에 기반하여 CGD에 설정할 수 있는 파일이 다운로드 됩니다.

해당 파일을 사용하여 온프레미스에서 VPN을 구성해주면 위에서 구성한 Site-to-Site VPN 통해 VPC와 온프레미스 네트워크를 연결할 수 있습니다.

 

참고

 

'AWS' 카테고리의 다른 글

[AWS] API Gateway Custom Resource 사용하기  (0) 2022.05.19
[AWS] API Gateway Proxy Resource 사용하기  (0) 2022.05.18
[AWS] Transit Gateway란  (1) 2022.05.12
[AWS] VPC Peering 이란  (0) 2022.03.14
[AWS] AWS Fargate for ECS 시작하기  (0) 2022.02.24
Comments