개요
AWS Site-to-Site VPN은 온프레미스 환경과 AWS VPC를 IPSec 터널로 연결하는 관리형 서비스입니다. 이번 포스트에서는 팔로알토(Palo Alto) 방화벽을 고객 게이트웨이(Customer Gateway)로 사용해 AWS와 VPN을 구성하는 전 과정을 설명합니다. 라우팅 방식은 정적 라우팅과 BGP 동적 라우팅 두 가지를 모두 다룹니다.
AWS는 터널 오버헤드가 적고 헬스체크 기능이 강화된 IKEv2 사용을 권장합니다.
아키텍처
AWS Site-to-Site VPN은 터널을 두 개 제공해 고가용성을 보장합니다. 팔로알토는 두 터널 각각에 IKE 게이트웨이와 IPSec 터널 인터페이스를 생성해 연결합니다.
- 가상 프라이빗 게이트웨이(VGW) 또는 Transit Gateway(TGW) — AWS 측 VPN 엔드포인트
- 고객 게이트웨이(CGW) — 팔로알토 방화벽의 공인 IP와 ASN을 등록
- 터널 인터페이스 — 링크로컬 대역(
169.254.0.0/16)의/30블록 사용
온프레미스 팔로알토 방화벽 → VPN 터널 → AWS Transit Gateway → VPC
1단계 — AWS 측 구성
고객 게이트웨이(CGW) 생성
- AWS 콘솔 → VPC > 고객 게이트웨이 → 고객 게이트웨이 생성
- 라우팅: 동적(BGP) 또는 정적 선택
- BGP ASN: 팔로알토에서 사용할 ASN 입력 (예:
65512) - IP 주소: 팔로알토 방화벽의 공인 IP 입력
고객 게이트웨이 생성 — 이름, BGP ASN, 방화벽 공인 IP 입력
가상 프라이빗 게이트웨이(VGW) 생성 및 연결
- VPC > 가상 프라이빗 게이트웨이 → 가상 프라이빗 게이트웨이 생성
- 생성 후 해당 VGW를 VPC에 연결(Attach)
Site-to-Site VPN 연결 생성
- VPC > Site-to-Site VPN 연결 → VPN 연결 생성
- 대상 게이트웨이: VGW 또는 Transit Gateway 선택
- 고객 게이트웨이: 위에서 생성한 CGW 선택
- 라우팅 옵션: 정적(온프레미스 CIDR 입력) 또는 동적(BGP) 선택
- 터널 IP는 자동 할당하거나
169.254.x.x/30대역에서 직접 지정 가능
VPN 연결 생성 — Transit Gateway 선택, Dynamic(BGP) 라우팅 옵션
생성 완료 후 구성 다운로드 → 벤더: Palo Alto Networks, 플랫폼: PAN-OS 선택. 이 파일에 사전 공유 키(PSK), 터널 IP, BGP 피어 IP 등 모든 값이 포함되어 있습니다.
VPN 연결 생성 직후 터널 상태는 Down으로 표시됩니다. 팔로알토 설정을 완료해야 Up으로 전환됩니다.
2단계 — 팔로알토 구성
IKE 암호화 프로파일
Network > Network Profiles > IKE Crypto에서 새 프로파일 생성:
- DH 그룹:
group19,group20,group21중 선택 - 암호화(Encryption):
aes-128-gcm또는aes-256-gcm - 인증(Authentication):
sha384또는sha512 - 수명(Lifetime):
1일
IKE Crypto Profile — DH Group, 암호화 알고리즘, 수명 설정
IPSec 암호화 프로파일
Network > Network Profiles > IPSec Crypto에서 새 프로파일 생성:
- IPSec 프로토콜:
ESP - 암호화:
aes-128-gcm또는aes-256-gcm - 인증:
none(GCM 사용 시) 또는sha384 - DH 그룹:
group20 - 수명:
1시간
IPSec Crypto Profile — ESP, 암호화 알고리즘, DH Group, 수명 설정
터널 존(Zone) 생성
- Network > Zones → 새 존 생성, 이름 예:
VPN, 유형:Layer3 - Zone Protection Profile은 Strict IP Address Check를 비활성화하거나 프로파일을 연결하지 않습니다.
터널 IP 대역인 169.254.0.0/16은 링크로컬 주소입니다. Strict IP 체크가 활성화되어 있으면 PBF(정책 기반 전달)가 동작하지 않습니다.
터널 인터페이스 생성
터널 두 개(AWS 터널1, 터널2)에 각각 인터페이스를 생성합니다.
Network > Interfaces > Tunnel → 추가:
- 가상 라우터:
default - 보안 존:
VPN - IPv4 주소: AWS 구성 파일의 Customer Gateway Tunnel IP 입력 (예:
169.254.0.6/30) - MTU: 1427
터널 인터페이스 — 가상 라우터 및 보안 존 할당
IKE 게이트웨이 생성
터널 두 개 각각에 IKE 게이트웨이를 생성합니다. Network > Network Profiles > IKE Gateways:
- 버전(Version):
IKEv2 only mode - 인터페이스: 팔로알토 외부(공인) 인터페이스 (예:
ethernet1/1) - 피어 IP 주소: AWS 구성 파일의 Virtual Private Gateway Tunnel Outside IP
- 인증:
Pre-Shared Key→ AWS 구성 파일의 PSK 입력 - IKE 암호화 프로파일: 위에서 생성한 프로파일 선택
- 고급(Advanced Options): NAT Traversal 활성화
IKE Gateway — IKEv2 only, Pre-Shared Key 인증, AWS 터널 피어 IP 입력
IPSec 터널 생성
Network > IPSec Tunnels에서 터널 두 개 생성:
- 터널 인터페이스:
tunnel.1/tunnel.2 - IKE 게이트웨이: 위에서 생성한 IKE 게이트웨이 선택
- IPSec 암호화 프로파일: 위에서 생성한 프로파일 선택
IPSec Tunnel — 터널 인터페이스, IKE 게이트웨이, IPSec Crypto Profile 연결
3단계 — 라우팅 설정
정적 라우팅 + 터널 모니터링(Failover)
정적 라우팅 사용 시 PBF(Policy-Based Forwarding)로 터널 페일오버를 구현합니다.
터널 모니터 프로파일 생성 (Network > Monitor Profiles):
- 인터벌:
2초 - 임계값:
5회 (10초 후 페일오버)
PBF 규칙 생성 (Policies > Policy Based Forwarding) — 상위 규칙부터 순서대로 평가됩니다:
- 규칙1 — 소스: 온프레미스 서브넷, 목적지: AWS VPC CIDR, 액션:
tunnel.1로 전달, 넥스트홉: AWS 터널1 IP, 모니터 프로파일 연결 - 규칙2 — 소스: 온프레미스 서브넷, 목적지: AWS VPC CIDR, 액션:
tunnel.2로 전달, 넥스트홉: AWS 터널2 IP, 모니터 프로파일 연결
BGP 동적 라우팅
Network > Virtual Routers > [라우터 선택] > BGP 탭:
- BGP 활성화
- AS 번호:
65512(CGW 생성 시 입력한 값과 동일) - 라우터 ID: 루프백 IP 또는 외부 인터페이스 IP 입력
재분배 프로파일 (Redistribution Profile) 생성 — 온프레미스 경로를 BGP로 광고하기 위해:
- 프로토콜:
Connected - 서브넷: 온프레미스 CIDR (예:
10.10.0.0/24)
BGP 피어 그룹 (AmazonBGP) — 터널 두 개에 각각 피어 추가:
- 유형:
EBGP - 피어 주소: AWS 구성 파일의 Virtual Private Gateway BGP IP
- 로컬 주소: 터널 인터페이스 IP (예:
169.254.0.6) - 원격 AS:
64512(AWS 기본 ASN) - Keep Alive:
10초 / Hold Time:30초
BGP Peer Group — EBGP 유형, AmazonBGP 그룹명, 피어 추가
Transit Gateway를 사용하고 ECMP를 활성화하면 두 터널에 트래픽을 분산할 수 있습니다. TGW에서 VPN ECMP support를 활성화하고 팔로알토 BGP 설정에서도 ECMP를 켜주세요.
4단계 — 보안 정책
Policies > Security에서 아래 규칙을 추가합니다:
- 온프레미스 → AWS: 소스 존
Trust, 목적지 존VPN, 애플리케이션any, 액션허용 - AWS → 온프레미스: 소스 존
VPN, 목적지 존Trust, 애플리케이션any, 액션허용 - BGP: 터널 인터페이스 간 BGP 트래픽 허용 규칙 별도 추가
Security Policy — IPv4, BGP, VPN 트래픽 허용 규칙
설정 완료 후 Commit.
5단계 — 연결 확인
AWS 콘솔: Site-to-Site VPN 연결 → 터널 상태가 Up으로 전환되는지 확인
IPSec 터널 상태 및 BGP 라우팅 테이블 확인
팔로알토 CLI에서 아래 명령으로 검증합니다:
# IPSec 터널 상태 확인
show running ipsec
# BGP 피어 상태 확인
show routing protocol bgp peer
# BGP 수신 경로 확인
show routing protocol bgp rib
# 라우팅 테이블 확인
show routing route
# 핑 테스트 (온프레미스 → AWS EC2)
ping host 10.200.10.x
주요 트러블슈팅
- 터널이 Up이 되지 않는 경우: PSK 값, 피어 IP, IKE/IPSec 프로파일의 암호화 알고리즘이 AWS 구성 파일과 일치하는지 확인
- PBF가 동작하지 않는 경우:
VPN존의 Zone Protection Profile에서 Strict IP Address Check가 비활성화되어 있는지 확인.169.254.x.x링크로컬 주소가 차단될 수 있음 - BGP 피어가 Established되지 않는 경우: 터널 인터페이스 IP, AS 번호, 피어 IP가 AWS 구성 파일과 일치하는지 확인
- MTU 관련 패킷 손실: 터널 인터페이스 MTU를
1427로 설정했는지 확인
비용 참고
- VPN 연결: 약 $0.05/시간 (연결당)
- 데이터 전송: AWS 표준 아웃바운드 요금 적용
