VPN (Virtual Private Network)
AWS 제공 VPN 서비스인 Site-to-Site VPN과 클라이언트 VPN을 알아보기전
VPN의 개념에 대해서 알아보자.
VPN
VPN이란 Virtual Private Network의 약자로 사설 네트워크 연결망을 의미한다.
주변에서 쉽게 들었듯, 내 IP주소를 우회해 접속이 불가능한 사이트 등에 접근이 가능하게 해준다.
여기서 이야기하는 사설 네트워크 연결망은 우리가 생각하는 인터넷과는 다른것으로, 인트라넷에 가깝다.
인터넷과 인트라넷을 먼저 비교해보자.
기본적으로 컴퓨터를 이용해 우리가 다른 웹사이트 등의 정보를 확인할 수 있는것은 인터넷을 통해 전 세계적으로 컴퓨터와 컴퓨터가 연결되어있어서이다. 다른 서버(컴퓨터)에 저장되어있는 웹사이트 정보를 인터넷을 통해 내
컴퓨터에서 접근할 수 있는 방식을 예로 들 수 있다.
이처럼 인터넷이 전 세계적으로 컴퓨터들을 연결하고 있다면, 인트라넷은 특정 집단의 컴퓨터를 연결한다.
인트라넷을 구축하기위해 전용선을 사용하여 컴퓨터를 연결하고, 연결된 컴퓨터끼리만 접근할 수 있는 서버를 구축한다. 이렇게 인트라넷이 구축되면 해당 집단 이외의 제3자는 인트라넷에 접근할 수 없는 보안성을 갖출 수 있다.
하지만 여기서 문제점이 하나 생기는데, 한국에 있는 본사에 인트라넷에 구축을 한다면 해외의 지사와 물리적으로 연결되어 있지 않기 때문에 통신에 문제가 발생한다.
이때 등장하는 개념이 암호화 기술을 동원해 가상의 내부 연결망을 구축하는 VPN이다.
VPN의 우회 원리를 살펴보자.
일반적으로 컴퓨터는 인터넷 사업자(ISP)의 연결망을 통해 다른 컴퓨터와 통신을 한다.
내 PC <ㅡ> ISP <ㅡ> 상대방 PC 와 같이 통신한다.
여기서 VPN 우회를 한다면, VPN 사업자의 내부 연결망을 이용해 VPN 서버 제공자와 제휴를 맺고 VPN에 접근할 수 있는 암호나 자격을 받게 된다. 그러면 사용자의 PC는 VPN 내부 연결망을 사용할 수 있게 되고,
VPN을 통해 인터넷에 접근할 수 있게된다.
내 PC <ㅡ> VPN 사업자 <ㅡ> ISP <ㅡ> 상대방 PC 와 같이 통신한다.
이렇게 VPN을 사용하면 정부로 부터 검열된 사이트에 접근하거나, 물리적 이유로 연결이 불가능한 인트라넷에 접근하는 것이 가능해진다.
VPN 사업자의 자체 IP는 접근 시도가 불가능한 IP주소에 해당이 되지 않기 때문이다.
인트라넷에 접근하는 것도 자체 내부 연결망을 통해 물리적 한계를 뛰어넘어 통신이 가능하게 해준다.
AWS 제공 VPN에는 Site-to-Site VPN (S2S)와 클라이언트 VPN 두 가지가 있다.
AWS Site-to-Site VPN
AWS에서 관리형 서비스로 제공하는 AWS S2S VPN은 기본적으로 고가용성 아키텍처를 제공한다.
VPN 연결을 생성하게 되면 제공되는 두 개의 터널 엔드포인트는 고가용성을 위해 서로 다른 AZ에 생성된다.
AWS S2S VPN은 표준 IPsec VPN만 지원한다.
* IPsec이란 Internet Protocol Security로 Internet Layer 상에서 IP패킷을 암호화,인증,키관리를 하는 프로토콜이다.
추가로 IPsec은 데이터 송신자의 인증을 허용하는 인증 헤어 AH(Authentication Header)와 송신자의 인증과
데이터 암호화를 함께 지원하는 ESP(Encapsulating Security Payload), 키 교환을 위한 IKE로 구성된다.

S2S VPN의 SLA(Service Level Agreement)는 99.95%로 한달 약 5분 2초는 계약 상 유지 관리를 위해 비활성화 될 수 있다. AWS 측에서 VPN의 정기적인 유지관리 시 각 터널에 대해 순차적으로 사용이 불가할 수 있기 때문에, 중요한 서비스가 AWS VPN을 통해 구성된다면 반드시 터널 이중화 구성을 권고한다.
주요 용어를 살표보자.
- VPN 연결 : 온프레미스의 장비와 AWS VPC간의 보안 연결을 의미한다.
- VPC 터널 : AWS VPC 네트워크와 온프레미스 네트워크 간 주고받을 수 있는 암호화된 링크이다.
- 가상 프라이빗 게이트웨이(VGW) : AWS의 관리형 S2S VPN의 게이트웨이이다.
- 고객 게이트웨이(CGW) : 온프레미스의 장비 정보를 지정한다. AWS의 가상 프라이빗 게이트웨이와 VPN연결설정을 위해 필요한 IPsec 정보를 지정한다.
- 고객 게이트웨이 디바이스 : 온프레미스의 장비 혹은 소프트웨어를 의미한다.
주요 특징을 살펴보자.
- VPN 연결 협상 시, Responder로 동작 : VPN 협상은 항상 고객 게이트웨이 디바이스에서 연결을 시도해야한다. VGW는 통신 요청자가 아니다. 추가적으로 2020년 8월 추가된 기능으로, IKE 버전 2를 사용하면 VGW가 요청자가 될 수 있다.
- VPN 터널의 Idle Timeout : VPN 터널 연결 후 터널에 트래픽이 10초 이상 흐르지 않는 경우, 해당 터널은 DOWN된다. 터널 유지를 위해 DPD옵션을 설정하거나 핑을 일정 간격으로 발생시켜 터널을 유지하는 것을 권장한다. 2020년 8월 기능 추가된 사항으로 DPD 시간 초과가 발생할 때, AWS가 IKE 세션을 다시 시작하도록 지정하거나 AWS가 작업을 수행하지 않도록 지정할 수 있다.
- 표준 IPsec 지원
- NAT-T(NAT Traversal) 지원 : CGW가 NAT 내부에 배치된 경우에도 VPN 연결이 가능하다.
- VPN 성능 : VGW의 1개 터널은 최대 1.25Gbps 성능을 가지며, 전송 게이트웨이의 ECMP를 사용 시 성능 향상을 할 수 있다. * ECMP (Equal Cost Multi-Path) : 2개 이상의 연결을 1개의 논리적인 연결로 구성하는 기법, 대역폭이 확장됨
- AWS CloudWatch를 통해 모니터링이 가능하다.
두 가지의 라우팅 옵션을 소개한다.
- Static Routing : 사용자가 직접 원격 네트워크의 경로에 대해서 설정한다.
- Dynamic Routing : BGP 라우팅 프로토콜을 사용하여 상대방으로부터 전달되는 네트워크 경로를 자동으로 인지하여 통신할 수 있다. 즉 네트워크 정보가 필요할 때 마다 수동으로 설정할 필요가 없다. * VPC 라우팅 테이블의 경로 전파 옵션을 활성화하면 정적, 동적라우팅에 상관없이 라우팅 테이블을 수정하지 않고 VGW에 의해 전파되는 경로가 라우팅 테이블에 동적으로 업데이트 할 수 있다.
VPN 구성 시나리오를 알아보자
- CGW 디바이스가 1대인 경우

반드시 터널 이중화 구성을 권장한다.
장점으로는 가장 적은 비용으로 구성가능하고, Active 터널이 다운되면 Standby 터널이 활성화 되어 지속적인 통신이 가능하다.
단점으로는 온프레미스 환경에서 장애가 발생하면 대응할 수 없다.
2. CGW가 2대이고, 해당 디바이스 2대가 클러스팅을 지원할 경우
* 클러스터팅이란 여러대의 장비가 연결되어 논리적으로 한대의 장비처럼 동작하는 것

장점 : CGW 한대가 장애 발생해도, 나머지 장비 1대가 지속적인 통신 환경을 제공하여 높은 수준의 고가용성 환경을 제공한다.
단점 : CGW 장비가 클러스터링 미지원 시 해당 구성이 불가능하다.
3. CGW가 2대이고, 클러스터링 미지원 시 Static Routing 사용

단점 : DPD 등으로 터널 상태 감지가 제대로 되지 않을 경우, 통신 불능 상황이 발생할 수 있다.
네트워크 경로 변경이나 대역 추가, 삭제시 수동으로 설정해야 한다.
4. CGW가 2대이고 클러스터링 미지원 시 Dynamic Routing(BGP) 사용

장점 : 터널 상태 이상 시 BGP나 BFD로 자동 감지 후 Standby 터널이 활성화 된다. 네트워크 경로나 대역 정보가 자동으로 학습 및 갱신되므로 수동 설정할 필요가 없다.
단점 : CGW 디바이스가 BGP를 미지원할 시 구성할 수 없다.
AWS Client VPN
S2S VPN은 각 종단 간 고정된 IP를 통해 VPN 터널을 구성하는 반면
클라이언트 VPN은 사용자 측의 IP가 고정되어 있지 않고 항상 유동적이다. S2S 과 사용하는 용도가 다르다고 보면 된다.
AWS 클라이언트 VPN의 구성을 살표보자.

기본적으로 클라이언트 VPN은 두 가지 유형의 사용자를 제공한다.
- Administrator : 관리자로, 클라이언트 VPN 엔드포인트를 구성하고 대상 네트워크, 권한 규칙, 라우팅 설정 등을 구성한 후 클라이언트 VPN 엔드포인트 구성 파일을 최종 사용자에게 전달한다.
- 최종 사용자 : 전달받은 구성 파일을 통해 컴퓨터나 각종 장비를 통해 클라이언트 VPN 엔드포인트에 연결할 수 있다.
최종 사용자는 관리자로부터 전달받은 VPN 구성 파일을 사용하고 클라이언트 VPN에 접근을 시도하면 인가된 사용자의 유무를 확인하는 인증단계를 진행하고 인증된 사용자에게 권한을 부여해 리소스에 접근이 가능해진다.
권한 부여는 보안 그룹과 네트워크 기반 권한을 부여할 수 있는 권한 규칙으로 제어가 가능하다.
주요 용어를 살펴보자.
- 클라이언트 VPN 엔드포인트 : 클라이언트 VPN의 TLS(Transport Layer Security : 암호화 방식)연결을 활성화하고 관리하기위해 AWS에 생성되는 리소스이다.
- 대상 네트워크 : 최종 사용자가 클라이언트 VPN을 통해 접근할 수 있는 네트워크, 클라이언트 VPN 엔드포인트와 연결되는 서브넷은 고가용성을 위해 서로 다른 가용 영역에 배치해야한다.
- 라우팅 테이블 : 클라이언트 VPN 엔드포인트에 사용가능한 대상 네트워크를 설정하는 라우팅 테이블이 존재한다. 라우팅 설정을 통해 특정 리소스나 네트워크에 대한 경로 설정이 가능하다.
- 권한 규칙 : 네트워크에 접근 가능한 사용자를 제한할 수 있다. 지정된 네트워크에 대해 접근을 허용하는 AD(Active Directory)그룹을 구성하여 해당 그룹에 속한 사용자에 대해서만 접근할 수 있도록 구성할 수 있다.기본적으로 권한 규칙이 없으면 통신이 불가능하다.
- VPN 클라이언트 : 최종 사용자로, OpenVPN 클라이언트를 사용하여 AWS 클라이언트 VPN에 연결할 수 있다.
주요 특징을 살펴보자.
- OpenVPN 클라이언트를 사용해 어떤 위치에서도 안전하게 TLS 연결을 할 수 있다.
- 고가용성을 제공하고, 사용량에 따라 리소스를 자동으로 확장, 축소한다.
- AD 및 인증서 기반 인증을 제공해 인가된 사용자에 대한 접근을 허용한다.
- 클라이언트 연결에 대한 세부 정보를 제공하는 로그를 제공한다.
- AWS Directoty 서비스 뿐만 아니라, 기존의 AWS 서비스와 통합되어 다양한 서비스와의 연동을 제공할 수 있다.
출처 : 따라하며 배우는 AWS 네트워크 입문