[AWS] VPN 구성 매뉴얼 – 단일 사이트

AWS기반 시스템을 구축할 때, DB서버와 같이 중요한 정보를 다루는 리소스는 인터넷과 직접 통신할 수 없도록 VPC의 프라이빗 서브넷에 구성합니다. 이 때, 프라이빗 서브넷과 외부와의 암호화 통신을 위해 AWS는 인터넷 프로토콜 보안(IPSec) VPN 연결을 지원합니다.

AWS VPN을 구성하기에 앞서 유의해야 할 사항은 다음과 같습니다.

  1. 테스트 구성을 하려면 VPN장비가 있어야 하고 AWS VPN 간 연결 구성이 불가합니다.
  2. AWS VPN에서 제공하는 2개의 터널 중 한 개만 연결하면 VPN 통신에는 문제가 없습니다. 하지만 AWS 내부 작업에 따라 터널 중 한 개가 끊어질 경우 장애가 발생할 수 있습니다.
  3. AWS VPN은 VPN터널링에 대한 개시 장치가 아닙니다. 따라서, VPN 연결 유휴시간(보통 10초)이 발생할 경우 터널이 끊어질 수 있으며, 고객측 게이트웨이에서 단절을 감지하고 터널링을 개시해야 합니다. 추가적으로 연결 유휴 방지를 위해 keepalive ping을 발생할 필요가 있습니다. <- 2020.8.27일부터 AWS VPN도 개시를지원합니다.

이제, 아래 구성도와 같이 AWS VPN과 단일 고객 사이트를 터널링 연결하는 쉽고 간편한 방법을 알아보겠습니다.


<구성도>

준비사항

  1. 고객 게이트웨이 아이피 : 211.xxx.xxx.126 -> 주의! 이 아이피가 바뀌면 고객 게이트웨이와 VPN 연결을 삭제한 후 다시 생성해야 하며 수정이 불가합니다.
  2. 고객 내부 네트워크 대역 : 192.168.xxx.0/24 -> 추후 변경/추가 가능합니다.

고객 게이트웨이 생성

먼저 AWS에 고객 게이트웨이를 생성합니다.

  1. VPN장비가 동적 라우팅 지원이 가능한 BGP를 사용할 수 있는 모델이라면 라우팅 옵션을 동적으로 선택합니다. BGP 장치를 사용할 때, 해당 장치에서 BGP를 사용하여 그 경로를 가상 프라이빗 게이트웨이에 알리기 때문에 VPN연결에 대한 고정 경로를 지정할 필요가 없습니다. 또한 BGP프로토콜은 터널 단절 시 다른 터널로 fail-over할 수 있는 기능을 제공하므로 안정적인 VPN 연결 생성에 필수적입니다.
  2. 정적 라우팅을 선택할 경우 VPN연결을 생성할 때 가상 프라이빗 게이트웨이에 전달할 경로(IP 접두사)를 CIDR형식으로 입력해야 합니다.

생성 결과는 다음과 같습니다.

가상 프라이빗 게이트웨이 생성

가상 프라이빗 게이트웨이는 VPN 연결의 AWS측 VPN집선기입니다.
하나의 VPC에는 한 개의 가상 프라이빗 게이트웨이만 연결할 수 있습니다. 자율 시스템 번호(ASN)는 서울 리전에서 자동 생성하는 경우 7224로 생성되며, 4바이트로 사용자 지정하여 생성할 수 있습니다. 고객 게이트웨이와 가상 프라이빗 게이트웨이의 ASN이 같으면 VPN연결 생성 시 에러가 발생하기 때문에 달라야만 합니다.

가상 프라이빗 게이트웨이를 만든 후 VPN 연결을 생성할 VPC에 연결합니다.

생성 결과는 다음과 같습니다.

VPN 연결 생성

위에서 생성한 가상 프라이빗 게이트웨이와 고객 게이트웨이를 선택하여 VPN연결을 생성합니다. 한 번 생성된 VPN연결은 정적IP접두사를 제외하고 모든 항목이 수정할 수 없으며 변경이 필요할 경우 새로 생성해야 합니다.

터널 옵션은 고객측에서 미리 제공하는 값을 사용할 수 있으나, AWS에서 생성된 값을 사용하는 것이 편리합니다.

생성 결과는 다음과 같습니다.

VPC 라우팅 테이블 추가

라우팅 테이블을 추가하는 방법은 두가지가 있으며 이후 필요에 따라 수정 혹은 변경이 가능합니다만 관리의 편의성 때문에 라우팅 전파를 추천합니다.

정적 라우팅을 사용하려면 VPC의 라우팅 테이블에서 vgw에 대한 라우팅 대상주소(192.168.x.0/24)를 직접 입력해야 합니다.

라우팅 전파를 사용하려면 라우팅 전파 탭에서 새vgw의 전파를 "예"로 체크 후 저장합니다. 그러면 라우팅 탭에서 자동으로 vgw에 대한 대상 주소가 추가되는 것을 확인할 수 있습니다. 이후 새로운 대역을 추가하려면 VPN 연결을 클릭 후 정적 라우팅 탭에서 추가/수정하면 자동 전파가 됩니다. 단, 정적 라우팅으로 VPN연결을 생성한 경우에만 해당합니다.

여기까지가 AWS측 VPN 구성 단계입니다.

고객 게이트웨이 VPN 설정

이제 고객측 장비 구성을 위해 VPN 연결을 선택 후 공급업체, 플랫폼, 펌웨어 버전에 맞는 구성을 다운로드합니다.

다운로드한 txt파일에 선택한 VPN 장비 모델의 CLI 혹은 GUI방식으로 구성하는 방법이 상세하게 기입되어 있습니다. 다운로드한 파일 내용 중 몇가지 주목할 만한 점이 있습니다.

  1. #1: Internet Key Exchange (IKE) Configuration
    1. AES128, SHA1, DH Group 2는 최소 요구사항일 뿐이며, AES256, SHA256, DH Group 14-18, 22, 23, 24 등을 지원하므로 수정해서 사용해야 합니다.
    2. 고객 게이트웨이의 아이피는 반드시 고정 IP여야 합니다.
    3. 장비 하단이 NAT 구성인 경우 방화벽에서 UDP(4500)을 허용하도록 설정합니다.
  2. #2: IPSec Configuration
    1. 장비의 기본값이 keylifeseconds 1800일 경우 반드시 Keylifeseconds 3600 으로 수정하여 AWS VPN 값과 일치시킵니다.
  3. #3: Tunnel Interface Configuration
    1. 터널 인터페이스에 대한 mtu값이나 tcp-mss값의 설정은 cli로 가능합니다.
    2. mtu 값은 장비에 따라 설정 에러가 날 수 있습니다.
  4. #4 Static Route Configuration
    1. Destination IP/Mask 값이 연결할 VPC와 일치하는지 재차 확인합니다.
  5. #5: Firewall Policy Configuration
    1. 모든 트래픽을 허용하도록 하는 샘플 구성이므로 내부 보안 정책에 따라 적절히 수정한 후 구성합니다.
  6. IPSec Tunnel #2
    1. 첫번째 터널 구성만으로도 터널링 및 End-to-End통신은 가능합니다. 하지만 안정적인 VPN 서비스를 위해 반드시 두번째 터널에 대한 구성도 진행하고 fail-over 테스트를 합니다.

이상, AWS VPN의 단일 구성 방법에 대해서 설명해드렸습니다. 다음 글에서는 Fortinet 장비에서 설정 방법, End-to-end 통신 테스트 방법, 멀티 VPN 구성방법을 알아보겠습니다. 감사합니다.