목차
개요
•
두 개의 네트워크 도메인이 가상의 사설 네트워크 연결을 사용하여 프라이빗 통신 제공
•
각 종단 간 고정된 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 라우팅 테이블에 항목 추가