FortiGate 방화벽과 AWS 클라우드 사이의 VPN BGP 네트워크 구성도
글 요약
FortiGate-AWS VPN BGP 구성은 클라우드와 온프레미스 간 동적 라우팅을 구현하는 핵심 기술입니다. 본 가이드에서는 사전 준비부터 터널 설정, BGP 피어링, 장애 사례 분석, 모니터링까지 엔지니어가 현장에서 바로 활용할 수 있는 실무 노하우를 정리했습니다.
“VPN 터널은 살아있는데 왜 라우터만 자꾸 죽는 걸까요?”
FortiGate와 AWS 간 BGP 세션이 반복적으로 끊기는 문제, 광고할 CIDR 누락 문제, ASN 충돌 이슈까지 — 이 글에서 원인 진단과 해결법을 한 번에 정리했습니다. AWS 콘솔 클릭 순서만이 아니라 FortiOS CLI 기반 구성과 트러블슈팅 명령어까지 모두 다룹니다.
많은 엔지니어들이 FortiGate-AWS Site-to-Site VPN을 처음 구성할 때 정적 라우트(Static Route) 방식으로 먼저 접근하곤 합니다. 소규모 환경이라면 정적 라우트도 동작하기 때문에 당장은 문제가 없어 보입니다. 하지만 VPC를 여러 개 운영하거나, IDC 측 네트워크가 변경될 일이 잦은 환경에서는 정적 라우트 방식이 곧 운영 부담으로 돌아옵니다. 이 지점에서 BGP(Border Gateway Protocol)는 단순한 옵션이 아니라 사실상 필수 선택이 됩니다.
그런데 실제 현장을 보면 BGP 구성을 시작하면서 AWS의 VPN 모델을 정확히 이해하지 못한 채 FortiOS 메뉴만 따라가는 경우가 더러 있었습니다. 그러다 보면 터널은 Active 상태인데 라우터가 광고되지 않는다거나, 반대 방향으로는 광고가 되는데 응답이 오지 않는다거나 하는 미묘한 문제에 부딪히게 되더라고요. 아래 목차의 흐름 그대로 읽으면 이런 시행착오를 상당 부분 줄일 수 있습니다.
FortiGate-AWS VPN BGP 개요와 아키텍처
AWS VPN 옵션 비교와 선택 기준
BGP 구성을 위한 사전 준비
VPN 터널과 BGP 실전 구성
자주 발생하는 실패 사례와 해결 노하우
모니터링과 운영 트러블슈팅
각 섹션은 단순 메뉴얼 나열이 아니라, 실제 엔지니어들이 자주 놓치는 포인트와 운영 관점의 팁이 함께 들어가도록 구성했습니다. 특히 AWS 측에서 설정하는 ASN과 FortiGate 측 ASN이 서로 달라야 한다는 사실, 그리고 동일 VPC에 VPN을 두 개 만들 때 BGP ASN을 어떻게 분리해야 하는지 같은 부분은 본문에서 다시 짚어드리겠습니다.
📌 이 글의 핵심 정리
- FortiGate-AWS VPN BGP는 동적 라우팅을 통해 다중 VPC와 IDC 환경을 자동화하는 핵심 구성입니다.
- AWS는 VGW와 TGW에서 서로 다른 ASN 범위를 요구하며, 이를 무시하면 세션이 성립되지 않습니다.
- FortiGate에서는 phase1/phase2, set net-device enable/disable, set auto-discovery-receiver 설정이 VPN 동작 방식을 결정합니다.
- 자주 발생하는 장애의 절반 이상은 ASN 충돌, MD5 미일치, advertise-cidr 변경 누락에서 비롯됩니다.
- 모니터링은 FortiGate의 get router info bgp network / diagnose vpn ike log filter 명령 조합이 가장 빠릅니다.
FortiGate-AWS VPN BGP 개요와 아키텍처
Site-to-Site VPN과 BGP의 결합 원리
AWS Site-to-Site VPN은 기본적으로 IPsec 터널 2개를 생성하고, 양쪽 끝에서 BGP로 라우트를 교환합니다. 단순히 IPsec 터널만 켜는다고 통신이 되는 것이 아니라, BGP 세션이 Established 상태여야 라우터 테이블이 채워지거든요. FortiGate 입장에서는 AWS가 제공하는 VPG(Virtual Private Gateway) 또는 TGW(Transit Gateway)를 BGP 피어로 인식하고, neighbor IP인 터널 인터페이스 주소(169.254.x.x 대역)로 세션을 맺습니다.
AWS 측 BGP 설계에서 가장 먼저 이해해야 할 부분은 ASN 정책입니다. VGW의 기본 ASN은 64512이며 사용자가 변경 가능합니다. 반면 TGW는 ASN 64512를 고정 예약 번호로 두고 있어 다른 값으로 바꿔야 BGP가 정상 동작합니다. 이 차이를 모르고 진행하면 FortiGate CLI에서 neighbor 설정이 완벽해도 AWS 콘솔에서 advertise-cidr을 등록하지 못해 라우터가 광고되지 않는 현상이 발생합니다.
ECMP와 다중 터널 처리 방식
FortiGate는 AWS가 만들어주는 2개의 터널을 각각 독립 인터페이스로 인식합니다. 두 터널이 동시에 활성화되면 기본적으로 ECMP(Equal-Cost Multi-Path) 라우팅이 동작하여 트래픽이 양쪽으로 분산되죠. 일부 고객사에서는 한 쪽 터널이 Active, 다른 쪽은 Standby로 두고 싶어 합니다. 이때는 FortiGate에서 라우트 거리값(Distance)을 차등 부여하거나, AWS 측에서 한 쪽 터널만 advertise하도록 제어하는 방식을 사용합니다.
⚠️ FortiGate-AWS VPN BGP 주의
- AWS TGW는 ASN 64512를 사용할 수 없습니다. 반드시 64513~65534 범위로 변경 후 BGP 세션을 시도하세요.
- FortiGate의 set net-device disable 상태에서 구성해야 AWS 터널 인터페이스 IP가 정상 매핑됩니다. 기본값을 무심코 바꾸면 phase2가 올라오지 않습니다.
AWS VPN 옵션 비교와 선택 기준
주요 옵션 시나리오 비교
단순 VPC 1개만 온프레미스와 연결하는 경우와, 다수의 VPC를 통합 관리하는 경우에 따라 적합한 옵션이 완전히 달라집니다. 아래 표는 FortiGate 엔지니어가 실제 의사결정을 할 때 자주 비교하는 네 가지 시나리오를 정리한 것입니다.
| 구성 방식 | 확장성 | BGP 지원 | 운영 복잡도 | 비용 수준 |
|---|---|---|---|---|
| VGW + Site-to-Site VPN | 단일 VPC에 적합 | 지원 (BGP ASN 변경 가능) | 낮음 | 저렴 |
| TGW + Site-to-Site VPN | 수십 개 VPC 통합 가능 | 지원 (ASN 64512 제외) | 중간 | 중간 |
| EC2 FortiGate 자체 VPN | VPC 단위 자유 구성 | 완전 자유 (FortiOS 정책) | 높음 | 고가 (라이선스) |
| AWS Direct Connect | 대용량 전용선 | BGP 지원 (Private VIF) | 중간 | 고가 (회선 + 포트) |
표를 보면 단순 비교처럼 보이지만, 결정적인 차이는 FortiGate를 어디에 두느냐에 있습니다. VGW + VPN은 AWS 콘솔 클릭만으로 끝나지만, 모든 트래픽이 FortiGate를 거치지 않으므로 심층 패킷 검사가 필요한 환경에서는 EC2 FortiGate 방식이 압도적입니다. 반대로 단순 라우팅 자동화만 필요하다면 VGW 또는 TGW가 비용 대비 효율이 더 좋죠. 즉, 보안 정책 일원화가 목표라면 EC2 FortiGate, 라우팅 자동화와 통합 관리라면 TGW VPN이 정답입니다.
💡 FortiGate-AWS VPN BGP 꿀팁
- 다중 VPC 환경이라면 TGW + FortiGate EC2 조합이 가장 유연합니다. TGW는 VPC 간 라우팅을, FortiGate는 외부 트래픽 검사를 담당하게 분리 설계하세요.
BGP 구성을 위한 사전 준비
AWS 콘솔에서 확인해야 할 5가지
첫 번째는 VPC CIDR과 서브넷 구성입니다. FortiGate가 위치할 서브넷이 라우팅 테이블에서 적절히 분리되어 있어야 합니다. 두 번째는 VGW의 BGP ASN 설정입니다. 기본값인 64512를 그대로 둘지, 사내 정책에 맞춰 변경할지 미리 결정해야 합니다. 세 번째는 Customer Gateway(CGW) 등록입니다. FortiGate의 WAN 공인 IP를 이곳에 정확히 입력해야 하니, NAT나 방화벽 뒤에 있다면 외부 노출 IP를 다시 확인해야 합니다.
네 번째는 VPN 연결 생성 시 advertise-cidr 설정입니다. 기본값은 VPC CIDR 전체이지만, 사내에서 특정 대역만 노출하고 싶다면 명시적으로 입력해야 합니다. 다섯 번째는 라우팅 옵션 선택입니다. Static이 아닌 Dynamic(BGP)을 선택해야 이후 BGP 세션이 동작합니다. 이 부분에서 Static을 선택해 놓고 왜 BGP가 안 되는지 헤매는 분들이 실제로 종종 있었습니다.
FortiGate 측 체크리스트
FortiOS 버전은 가능하면 7.0 이상을 권장합니다. 6.4 버전에서도 동작하지만 일부 phase2 파라미터에서 AWS와 미세한 차이가 있습니다. 시스템 시간과 NTP 동기화가 되어 있어야 합니다. 인증서 기반 IKEv2를 쓰는 환경이라면 시간이 어긋난 순간 handshake가 실패합니다. 마지막으로 라우터 ID를 위한 고정 loopback IP를 미리 만들어두면, BGP 설정이 한층 깔끔해집니다.
VPN 터널과 BGP 실전 구성
Phase1 / Phase2 인터페이스 구성
FortiOS CLI 핵심 명령어
config vpn ipsec phase1-interface
edit “aws-vpn-1”
set interface “wan1”
set ike-version 1
set peertype any
set proposal aes128-sha1
set dhgrp 2
set nattraversal disable
set eip 0.0.0.0
set net-device disable
set pskeysecret ENC[…미리보기…]
AWS 콘솔에서 다운로드한 Configuration 파일에는 Pre-Shared Key와 각 터널의 IP 주소, ASN, BGP neighbor IP가 모두 포함되어 있습니다. 이 값을 그대로 복사해 붙여 넣는 것이 가장 안전한 방법입니다. 수동으로 타이핑하면 한 글자만 틀어도 IKE 협상이 실패하거든요.
BGP Router 구성
config router bgp 명령에서 neighbor 등록과 network 광고를 진행합니다. AWS에서 부여한 neighbor IP(예: 169.254.x.y)에 remote-as를 정확히 입력하고, set soft-reconfiguration enable 옵션을 켜두면 정책 변경 시 세션 재협상 없이 반영됩니다. 마지막으로 advertise할 사내 대역을 network 명령으로 등록하면 BGP 테이블이 채워집니다.
자주 발생하는 실패 사례와 해결 노하우
대표적인 실패 사례: 터널은 Active인데 라우터가 비어있는 경우
실제로 가장 많이 받는 문의가 “VPN Status는 UP인데 IDC 서버에 접속이 안 된다”입니다. 이 현상의 원인은 대개 두 가지 중 하나입니다. 첫째, AWS 콘솔에서 advertise-cidr을 VPC CIDR이 아닌 다른 값으로 등록한 경우입니다. 둘째, FortiGate에서 network 명령에 광고할 대역을 누락한 경우입니다.
전문가의 해결 노하우
FortiGate에서 get router info bgp network 명령을 입력해 광고 중인 prefix 목록을 확인합니다. 여기에 사내 대역이 보이지 않는다면 router bgp 설정의 network 항목이 잘못된 것입니다. 반대로 FortiGate에는 광고 대상이 보이지만 AWS 쪽에서 수신하지 못한다면, AWS 콘솔의 VPN 연결 → Tunnel Details에서 “Routes” 탭을 확인합니다. advertised prefix가 비어있다면 advertise-cidr 설정이 누락된 것입니다. 이 두 지점을 동시에 점검하면 5분 안에 원인이 분리됩니다.
BGP 세션이 Active로 가지 않는 경우
get router info bgp summary 출력에서 State가 Active에 멈춰 있다면 neighbor IP, remote-as, source IP 설정을 다시 봐야 합니다. AWS 측 tunnel IP가 FortiGate phase1 인터페이스에 매핑되어 있는지 diagnose vpn ike log filter name aws-vpn-1 명령으로 로그를 확인하면 협상 단계에서 막힌 지점을 알 수 있습니다.
⚠️ FortiGate-AWS VPN BGP 주의
- AWS Configuration 파일을 텍스트 편집기에서 복사할 때 Pre-Shared Key 끝의 공백이나 개행문자가 포함되면 인증이 실패합니다. 반드시 cat 명령으로 터미널에서 확인 후 복사하세요.
모니터링과 운영 트러블슈팅
핵심 진단 명령어 5가지
첫 번째, diagnose vpn ike gateway list name aws-vpn-1은 phase1 협상 상태를 보여줍니다. 두 번째, diagnose vpn tunnel list name aws-vpn-1은 phase2 상태와 traffic selector를 보여줍니다. 세 번째, get router info bgp neighbor는 BGP neighbor 별 세션 유지 시간을 표시합니다. 네 번째, get router info routing-table details는 BGP 경로가 실제로 라우터 테이블에 들어왔는지 확인합니다. 다섯 번째, execute ping-options source로 특정 인터페이스를 출발지로 한 ping 테스트는 종단간 통신 검증에 결정적입니다.
CloudWatch와 FortiAnalyzer 연동
장기 운영에서는 FortiGate 로그를 FortiAnalyzer로 보내고, AWS VPN 지표는 CloudWatch로 통합 모니터링하는 구성을 권장합니다. CloudWatch에서 TunnelState 지표가 0이 되는 순간을 알람으로 잡고, FortiAnalyzer에서 동일 시각 IKE 로그를 교차 확인하면 장애 원인을 빠르게 좁힐 수 있습니다.
💡 FortiGate-AWS VPN BGP 꿀팁
- 장애 대응 매뉴얼에는 “터널이 죽었을 때 순서: 1) phase1 상태 확인, 2) phase2 상태 확인, 3) BGP neighbor 상태 확인, 4) 라우터 테이블 확인” 순으로 점검하도록 문서화해두면 신규 엔지니어도 빠르게 대응할 수 있습니다.
자주 묻는 질문
Q. FortiGate ASN과 AWS VGW ASN을 동일하게 설정해도 되나요?
A. 아니요. 양 끝의 ASN은 반드시 다른 값이어야 합니다. eBGP가 정상 동작하려면 AS 번호가 달라야 하므로, VGW는 64512 외의 값으로, FortiGate는 사내에서 사용하지 않는 번호로 분리해두는 것이 안전합니다.
Q. TGW에서 BGP ASN 64512를 그대로 두면 어떻게 되나요?
A. AWS 내부 예약 번호라 BGP 세션 자체가 성립하지 않습니다. TGW 생성 직후 64513~65534 범위에서 변경한 뒤 FortiGate neighbor 설정을 진행해야 합니다.
Q. 두 개의 VPN 터널을 동시에 사용할 때 주의할 점은 무엇인가요?
A. ECMP가 동작하여 양쪽으로 트래픽이 분산됩니다. 특정 세션의 일관성이 중요한 서비스라면 라우트 distance를 조정해 한쪽 터널을 우선 사용하도록 제어하는 편이 낫습니다.
Q. FortiOS 버전이 낮으면 어떤 문제가 발생하나요?
A. 6.2 이하 버전에서는 AWS가 요구하는 DH 그룹과 암호화 알고리즘 조합이 맞지 않아 협상이 실패할 수 있습니다. 7.0 이상 업그레이드를 우선 권장합니다.
FortiGate-AWS VPN BGP 구성은 한 번만 잘 잡아두면 이후에는 자동 라우팅이 모든 것을 해결해줍니다. 오늘 정리한 흐름대로 AWS 콘솔 설정 → FortiOS 인터페이스 구성 → BGP 피어링 → 검증 명령어 순서로 진행하면 시행착오를 상당 부분 줄일 수 있을 거예요. 운영 중 문제가 발생하면 6섹션의 진단 명령어 5가지를 순서대로 돌려보시기 바랍니다.
본 글이 포함하고 있는 명령어, IP 주소, ASN 예시 등은 일반적인 구성 가이드 목적의 참고용입니다. 실제 운영 환경에 적용하기 전에는 반드시 Fortinet 공식 문서와 AWS 공식 가이드를 확인하시고, 사내 보안 정책 및 라이선스 조건에 부합하는지 검토하시기 바랍니다. 본문 내용 활용으로 인한 직접·간접적 손실에 대해 작성자는 책임을 지지 않습니다.