[AWS] 다른 네트워크와 통신하기(2) - VPN

2020. 3. 11. 11:27AWS/AWS_Service

반응형

안녕하세요, 달콤한달팽이입니다.🐌😝

 

지난 글에서 다른 VPC와 연결이 필요한 세 가지 방식 중 하나인 VPC Peering에 대하여 알아보았습니다.

 

이번에는 VPC 뿐만 아니라 온프레미스 연결까지 지원 가능한 VPN 방식에 대하여 다뤄보도록 하겠습니다.


VPN이란?

VPN이란, Virtual Private Network의 약자로 가상 사설 네트워크를 의미합니다.

즉, 인터넷을 통해 사용자가 사설망에 연결된 것처럼 도와주는 보안 서비스입니다.

 

AWS에서는 Site-to-Site VPN과 Client VPN Endpoint 방식으로 VPN을 제공하며,

오늘은 Site-to-Site VPN에 대한 실습을 진행해보겠습니다.

(Client VPN은 추후 Endpoint를 다뤄볼때 진행해보겠습니다!)

 

Site-to-Site VPN을 사용하기 위해선 온프레미스에서 AWS가 지원하는 VPN 장비를 보유하고 있어야합니다.

(다만, 이번 실습에서는 VPN 장비가 없으므로 EC2에 가상의 VPN 장비 openswan을 설치하여 실습할 예정입니다.)


1) 기본환경 구성

VPN을 실습하기에 앞서, 실습에 필요한 기본 환경을 구축하도록 합시다.

 

우선 VPC Peering 실습때와 마찬가지로 2개의 VPC를 구성합니다.

주의점 역시 네트워크 대역이 겹치지 않도록 하는 것입니다.

 

이중 11.0.0.0/16을 VPN 장비가 설치될 "온프레미스"로, 10.0.0.0/16을 "AWS 환경"이라 부르도록 하겠습니다.

 

2) VPN 장비(OpenSwan 설치) 구성(온프레미스)

이제 VPN 장비 역할을 대신해줄 Public EC2를 생성하고, OpenSwan(VPN 장비의 일종)을 설치하도록 합니다.

(Public EC2로 생성하는 이유는, 앞서도 말했듯 VPN 역시 인터넷 통신을 진행하기 때문입니다.)

 

온프레미스 환경의 VPN 장비가 될 서버에서는 가장 우선적으로 소스/ 대상 확인 변경을 중지를 설정해야합니다. 

이는 해당 인스턴스의 작업 - 네트워킹 - 소스/대상 환경 변경 탭을 통해서 변경할 수 있습니다.

 

yum install -y openswan

openswan을 설치합니다.

 

vi /etc/sysctl.conf

systemctl restart network

config 파일을 수정하고, network를 다시 시작합니다.

net.ipv4.ip_forward=1
net.ipv4.conf.defulat.rp_filter=0
net.ipv4.conf.default.accept_source_route=0

 

이후 온프레미스 서버가 AWS의 트래픽을 전달받을 수 있도록 라우팅 테이블을 수정합니다.

 

추가로 온프레미스 서버에서 작업 - 네트워킹 - 소스/대상 확인 변경 탭에서 소스/대상 확인을 중지합니다.

 

3) 고객 게이트웨이(CGW) 생성(AWS 환경)

이제 AWS에서 VPN 사용을 위해 고객 게이트웨이(Customer Gateway)를 구성해보겠습니다.

 

온프레미스의 VPN 장비는 Customer Gateway와 연결되어 AWS에서의 라우팅 설정이 가능해지게 됩니다.

 

VPC 서비스의 가상 사설 네트워크 탭에서 고객 게이트웨이를 생성합니다.

BGP ASN

   네트워크 식별 번호로 퍼블릭 ASN이 없을 경우 프라이빗 ASN을 사용할 수 있습니다.

   65000은 기본적 값으로 제공되는 프라이빗 ASN입니다.

 

IP 주소

   VPN 장비의 공인IP 입니다.(앞서 OpenSwan을 설치한 Public EC2의 공인 IP를 기입해줍시다.)

 

인증서 ARN

   보안을 위한 인증서를 사용할 수 있습니다.(이번 실습에는 없으므로 공란으로 두겠습니다.)

 

3) 가상 프라이빗 게이트웨이(VGW) 생성(AWS 환경)

이제 AWS 환경에서도 게이트웨이 역할을 수행해줄 가상 프라이빗 게이트웨이(Virtual Private Gateway)를 구성합니다.

 

VPC 서비스의 가상 사설 네트워크 탭에서 가상 프라이빗 게이트웨이를 생성합니다.

 

생성 이후, 작업 탭에서 VPC에 연결을 선택하여 VPN과 연결될 AWS환경에 대한 VPC를 연결합니다.

(VPC 연결 전에는 Detached 상태가 유지되며, 연결 후 Attached 상태로 변경됩니다.)

 

이후 AWS 환경의 Private 서버가 온프레미스의 트래픽을 전달받을 수 있도록 라우팅 테이블을 수정합니다.

 

4) Site-to-Site VPN 생성

이제 AWS에서의 게이트웨이(VGW)와 온프레미스에서의 게이트웨이(CGW)를 연결하는 Site-to-Site VPN을 생성하도록 합니다.

 

VPC 서비스의 가상 사설 네트워크 탭에서 Site-to-Site VPN을 생성합니다.

 

대상 게이트웨이 유형

  단일 VPN 연결이 가능한 가상 프라이빗 게이트웨이와

  여러 VPN, VPC, DX 연결이 가능한 Transit Gateway 중 선택합니다.

   (이번 실습에서는 가상 프라이빗 게이트웨이를 선택합니다.)

 

가상 프라이빗 게이트웨이, 고객 게이트웨이

   앞서 생성한 가상 프라이빗 게이트웨이와 고객 게이트웨이를 연결합니다.

 

라우팅 옵션

   VPN 장비에 등록한 라우팅을 자동으로 가져오는 동적 라우팅과

   AWS에서 수동으로 등록하는 정적 라우팅이 있으며, 

   이번 실습에서는 정적 라우팅을 선택합니다.

 

Site-to-Site VPN 생성 이후 우측 상단 VPN 구성 다운로드 탭에서 VPN 장비에 맞는 구성을 다운로드합니다.

구성을 다운로드 받은 후 이를 VPN 장비에 등록하여 AWS와 VPN 장비간의 연결을 완료하는 과정이 필요합니다.

(이번 실습에선 OpenSwan을 사용했으므로 OpenSwan 구성을 다운로드 받습니다.)

 

5) 구성 파일 등록(온프레미스)

이제 VPN 장비에 구성 파일을 등록해주어, 대상이 될 AWS 환경을 등록시켜주어야 합니다.

구성 파일을 txt파일로 열어 VPN 상황에 맞게 수정합니다.

vi /etc/ipsec.d/aws.conf

   auth=esp > 삭제

   leftsubnet > 온프레미스 대역 기입

   rightsubnet > AWS 환경의 대역 기입

 

vi /etc/ipsec.d/aws.secrets

   온프레미스에 AWS의 Secret 파일을 생성하여 등록합니다.

   (구성 파일에 키 값이 등록되어 있습니다.)

 

systemctl start ipsec.service

systemctl enable ipsec.service

systemctl status ipsec.service

   ipsec.service를 시작해준 후 상태를 확인합니다.

 

이후 VPN의 터널 상태가 UP이 된 것을 확인 및 통신이 가능해짐을 확인할 수 있습니다.

 

지금까지 OpenSwan을 통한 Site-to-Site VPN 설정 과정을 읽어주셔서 감사합니다.


관련 글

반응형