블록체인
블록체인

Site to Site VPN(S2S VPN)

목차

개요

두 개의 네트워크 도메인이 가상의 사설 네트워크 연결을 사용하여 프라이빗 통신 제공
각 종단 간 고정된 IP를 통해 VPN 터널 구성
표준 IPsec VPN만 지원
온프레미스 데이터 센터와 AWS 와의 VPN 보안 연결
인터넷 연결을 사용
IP Sec을 지원하는 암호화된 링크인 두 개의 터널로 구성

Site-to-Site 구성

VPN 연결 생성 시 제공되는 두 개의 터널 엔드포인트는 고가용성을 위해 서로 다른 가용 영역에 생성되므로 두 개의 터널 엔드포인트와 각각 터널을 구성하여 터널 이중화하는 것을 권장
[참고]
AWS S2S VPN의 SLA는 99.95%로 한 달 5분 2초는 계약 상 유지 관리를 위해서 비활성 될 수 있음
AWS 측에서 VPN의 정기적인 메인터넌스 시 각 터널에 대해 순차적으로 사용이 불가능할 수 있음
중요한 서비스가 AWS VPN을 통해 구성된다면 반드시 터널 이중화 구성 권고

주요 용어

VPN 연결

온프레미스의 장비와 AWS VPC 간의 보안 연결

VPN 터널

AWS VPC 네트워크와 온프레미스 네트워크 간 주고받을 수 있는 암호화된 링크

가상 프라이빗 게이트웨이(VGW)

AWS의 Site-to-Site VPN 게이트웨이
하나의 VPC 에만 연결 가능
서로 다른 두 가용 영역에서 종료되는 두 개의 서로 다른 엔드포인트 존재

고객 게이트웨이

온프레미스 장비 정보 지정
AWS의 가상 프라이빗 게이트웨이와 VPN 연결 설정을 위해 필요한 IPSec 정보 지정

고객 게이트웨이 디바이스

온프레미스의 장비 혹은 소프트웨어 애플리케이션
고객측에 있는 물리적 또는 소프트웨어 어플라이언스
Site-to-Site VPN 연결 작업을 수행하려면 고객이 디바이스 구성
동일한 고객 게이트웨이를 여러 Site-to-Site VPN 연결에 재사용할 수 있지만 고가용성을 고려해야 함

VPN 특징

1. VPN 연결 협상 시 Responder로 동작

가상 프라이빗 게이트웨이는 통신 요청자가 아니기 때문에 VPN 협상은 항상 고겍 게이트웨이 디바이스에서 연결을 시도해야 함
IKE 버전 2를 사용 시 AWS의 가상 프라이빗 게이트웨이가 통신 요청자가 될수 있도록 설정 가능

2. VPN 터널의 Idle Timeout

VPN 연결 후 터널에 트래픽이 10초 이상 흐르지 않는 경우 Down 되므로 터널 유지를 위해 온프레미스에서 DPD를 설정하거나 ping을 일정 간격으로 발생시켜 터널을 유지하는 것을 권장
추가된 사항으로 DPD 시간 초과 시 AWS가 IKE 세션을 다시 시작하도록 지정하거나 DPD 시간 초과가 발생할 때 AWS 가 작업을 수행하지 않도록 지정 가능

3. 표준 IPSec 지원

데이터 암호화와 인증에 관여하는 다양한 알고리즘 지원

4. NAT-T(NAT Traversal) 지원

고객 게이트웨이 디바이스가 NAT 내부에 배치된 경우에도 NAT Traversal을 지원하여 VPN 연결이 가능

5. VPN 성능

VGW의 1개 터널은 최대 1.25Gbps 성능을 가지며, 전송 게이트웨이의 ECMP를 사용 시 성능 향상
[참고] ECMP는 2개 이상의 연결을 1개의 논리적인 연결로 구성하여 대역폭 확장 하는 기법

VPN 라우팅

VPN 라우팅 옵션

1. Static Routing

사용자가 직접 원격 네트워크의 경로 설정

2. Dynamic Routing

BGP 라우팅 프로토콜을 사용하여 상대방으로부터 전달되는 네트워크 경로를 자동으로 인지하여 통신 가능
네트워크 정보를 필요할 때마다 수동으로 설정할 필요 없이 동적으로 네트워크 정보 관리 가능

[참고] VPC 라우팅 테이블의 경로 전파 옵션 활성화

라우팅 테이블을 수정하지 않고 VGW에 의해 전파되는 경로가 라우팅 테이블에 동적으로 업데이트
동적으로 업데이트되는 경로는 Static Routing과 Dynamic Routing 모두 지원

VPN 라우팅 모니터링

CloudWatch 통해 모니터링 가능하나 제공되는 메트릭은 일부 제한적이며 별도의 로그를 제공하지 않음
제공되는 메트릭
TunnelDataln : VPN 터널을 통해 수신된 데이터(Byte 단위)
TunnelDataOut : VPN 터널을 통해 송신된 데이터(Byte 단위)
TunnelState : 터널의 상태로 1은 터널의 연결 상태, 0은 터널의 연결 해제 상태

VPN 구성 시나리오

CGW 디바이스가 1대인 경우

온프레미스의 단일 VPN 구성 시 시나리오
반드시 VPN 터널 이중화 구성 설정 권장
장점
다른 구성 시나리오보다 가장 적은 비용으로 구성 가능
AWS 측의 유지 관리 Active 터널이 Down되면 Stndby 터널이 Active되어 지속적인 통신환경을 가질 수 있음
단점
고객 온프레미스환경에 장애 발생 시 대응방안이 없음

CGW 디바이스가 2대이고 해당 디바이스 2대가 클러스터링 지원

온프레미스에 CGW 디바이스의 가용성을 위한 시나리오로 CGW 디바이스는 2대의 장비가 논리적으로 1대의 장비로 동작하는 클러스터링 설정 필요
장점
CGW 디바이스 장비 1대가 장애 발생해도 나머지 장비 1대가 지속적인 통신 환경을 제공하여 높은 수준의 고가용성 환경 제공
단점
CGW 디바이스 장비가 클러스터링 기능을 미지원 시 해당 구성 불가능

CGW 디바이스가 2대이고 클러스터링 미지원 시 Static Routing 사용

클러스터링 미지원 시 해당 CGW 디바이스의 이중화로 가용성을 높이는 구성 시나리오
AWS VPN 연결(연결 당 터널 엔드포인트 2개)을 2개(터널 엔드포인트 총 4개)로 설정하고 CGW 디바이스와 연결
Active 터널의 상태 이상 감지를 위해 DPD나 별도의 상태 확인 사용
AWS VPC 네트워크 대역과 온프레키스 대역의 통신을 위해 Static Routing 을 설정
장점
높은 수준의 고가용성 환경
단점
DPD 등으로 터널 상태 감지가 제대로 되지 않을 경우 비대칭 라우팅 환경으로 비정상적인 통신 환경 혹은 통신 불능이 될 수 있음
네트워크 대역 추가나 삭제 시 수동으로 Static Routing 설정 필요

CGW 디바이스가 2대이고 클러스터링 미지원 시 Dynamic Routing(BGP) 사용

AWS VPC 네트워크 대역과 온프레미스 네트워크 대역을 Dynamic Routing을 통하여 자동으로 라우팅 경로를 알 수 있음
장점
높은 수준의 고가용성 환경 제공
터널 상태 이상 시 BGP나 BFD로 자동 감지 후 Standby 터널이 Active 터널로 사용
네트워크 대역 정보가 자동으로 학습 및 갱신되며, 변경되는 네트워크 대역 정보를 매번 수동으로 설정할 필요 없음
단점
CGW 디바이스가 BGP를 미지원 시 해당 구성 할 수 없음

[실습] AWS와 온프레미스간 VPN 통신

1. CloudFormation 적용

CGW 디바이스가 필요하기 때문에 GCW 디바이스 역할을 하는 인스턴스를 배포하여 실습 진행

2. 기본 환경 검증

IDC-CGW 인스턴스 터미널 #IDC-CGW 인스턴스에 연결된 탄력적 IP 정보 curl http://checkip.awsamazon.com 15.164.51.160 #IDC-CGW 인스턴스에 생성된 VPN 설정 스크립트 파일 확인 sudo ls /etc/ipsec.d vpnconfig.sh policies
Bash
복사
IDC-EC2 인스턴스 터미널 #외부 인터넷 통신확인 -> 통신 불가 curl http://checkip.amazonaws.com/ --connect-timeout 3 Fail #AWS 인스턴스와 통신 확인 -> 통신 불가 ping 10.50.1.100 -c 1 -w 1
Bash
복사
AWS-EC2 인스턴스 터미널 #IDC-EC2와 통신 확인 -> 통신 불가 ping 10.60.1.100 -c 1 -w 1
Bash
복사

3. 라우팅 테이블 설정

1) IDC-VPC1 프라이빗 라우팅 테이블
10.50.0.0/16 → IDC-CGW eni
2) AWS-VPC2 퍼블릭 라우팅 테이블
라우팅 전파에서 가상 프라이빗 게이트웨이 선택

4. 가상 프라이빗 게이트웨이 연결

사이트간 VPN 연결 > Tunnel Details > Tunnel1의 외부 주소(13.125.12.130) 확인 후 정적 라우팅 탭>정적라우팅에 10.60.0.0/16 입력

5. IDC-CGW 인스턴스에 VPN 설정

IDC-CGW 인스턴스 터미널 # /etc/ipsec.d/aws.conf 파일 작성 lefitid="15.164.51.160" #CGW 퍼블릭 IP right="13.125.12.130" #VGW 터널1 외부 IP leftsubnet=10.60.0.0/16 rightsubnet=10.50.0.0/16 # /etc/ipsec.d/aws.secrets 파일 작성 15.164.51.160 13.125.12.130 : PSK "cloudneta"
Bash
복사
위와 같이 설정 후 AWS VPN Tunnel1 탭을 보면 상태가 작동중지→작동으로 변경된 것을 확인 가능

6. VPN을 통한 통신 확인

IDC-EC2 인스턴스 터미널 #AWS 인스턴스와 통신 확인 -> 통신 가능 ping 10.50.1.100 -c 3
Bash
복사
AWS-EC2 인스턴스 터미널 #IDC-EC2와 통신 확인 -> 통신 가능 ping 10.60.1.100 -c 3
Bash
복사
IDC-CGW 터미널 # IPSec 터널을 통한 IN/OUT 트래픽 카운트 정보 확인 ipsec whack --traficstatus 006 #2 "Tunnel1", type=ESP, add_time=1596624903, inBytes=504, outBytes=504, id='13.125.12.130'
Bash
복사
IDC-CGW는 ping 트래픽을 ESP로 감싸고 암호화하여 L3와 L4헤더를 추가하여 AWS VGW로 보냄
L3 헤더 : IDC-CGW의 탄력적 IP, AWS VGW의 Tunnel1의 퍼블릭IP
L4 헤더 : UDP/4500(탄력적 IP가 NAT되기 때문에(IDC-CGW가 NAT환경 내부에 있기 때문에) UDP/500이 아닌 UDP/4500(NAT-Traversal) 포트 사용)

Site-to-Site VPN 설정

1.
가상프라이빗게이트웨이 설정
2.
VPC 라우팅 테이블에 항목 추가