[네트워크] VPN 구축 가이드 (FortiGate 200F, TGW 연동)

목적

본 문서는 온프레미스 FortiGate 200F 방화벽과 AWS 사이에 Site-to-Site IPSec VPN을 구축하는 과정을 정리한 실운영 기준 가이드이다.

AWS 측은 Transit Gateway(TGW) 뒤에 VPC가 존재하는 구조이며, 온프레미스에서 TGW 뒤의 VPC 대역 (10.140.0.0/16, 10.150.0.0/16) 에 안전하게 접근할 수 있도록 구성한다.

AWS가 제공한 FortiGate용 VPN 템플릿을 기반으로 설정을 진행하되, 실제 구성 과정에서 반드시 필요한 uplink 인터페이스 정책 추가(Trust_Serial → vpn-aws) 내용을 포함한다.

본 문서는 템플릿 기반 설정뿐 아니라, 트러블슈팅 과정에서 확인된 문제점과 해결 방법까지 모두 정리하여 재발 방지를 목표로 한다.

중요: 본 문서는 외부 공개를 위해 IP/CIDR을 예시 난수값으로 치환하였다. 구조와 설정 흐름은 동일하나, 값 자체는 실환경과 다르다.


구성도 기준 설명

본 문서는 다음 구성도 기준으로 작성되었다. image

  • 온프레미스 내부망 → Access Switch → Trust_Serial
  • Trust_Serial → FortiGate → vpn-aws (IPSec 터널 인터페이스)
  • vpn-aws → AWS Site-to-Site VPN
  • AWS VPN → Transit Gateway → 운영/스테이징 VPC → RDS

즉, 내부 인터페이스 기준은 lan이 아닌 Trust_Serial 이며, 모든 방화벽 정책과 트래픽 흐름 설명은 해당 구조를 기준으로 한다.


환경 정보 요약 (예시 난수화 값)

온프레미스 (FortiGate 200F)

  • 장비 모델: FortiGate 200F
  • 내부 인터페이스: Trust_Serial
  • 내부 인터페이스 IP: 10.210.200.1/24
  • 실제 암호화 대상 내부망(Local CIDR): 192.168.120.0/24
  • WAN 공인 IP (Customer Gateway): 203.0.113.17/28

AWS 측

  • VPN 유형: Site-to-Site VPN
  • 라우팅 방식: Static
  • 연결 대상: Transit Gateway
  • 운영 VPC CIDR: 10.140.0.0/16
  • 스테이징 VPC CIDR: 10.150.0.0/16

IPSec 터널 (Tunnel 1)

  • AWS Tunnel Outside IP: 198.51.100.55
  • 터널 내부 네트워크(CIDR): 169.254.77.152/30
  • AWS 터널 엔드포인트 IP: 169.254.77.153
  • FortiGate 터널 엔드포인트 IP: 169.254.77.154
  • MTU / TCP MSS: 1427 / 1379

터널 내부 IP(/30) 구조에 대한 이해

AWS Site-to-Site VPN에서 제공하는 터널 내부 IP는 /30 네트워크로 할당된다. 이 /30 네트워크에는 총 4개의 IP가 존재하지만, 실제 사용 가능한 IP는 2개뿐이다.

169.254.77.152/30
│
├─ 169.254.77.152  네트워크 주소 (사용 불가)
├─ 169.254.77.153  AWS 터널 엔드포인트
├─ 169.254.77.154  FortiGate 터널 엔드포인트
└─ 169.254.77.155  브로드캐스트 주소 (사용 불가)

AWS와 FortiGate의 표기 차이

  • AWS 콘솔
    • 터널 내부 네트워크: 169.254.77.152/30
    • AWS 측 터널 IP: 169.254.77.153
  • FortiGate 설정
    • 자신의 터널 IP: 169.254.77.154/32
    • 상대 피어(remote-ip): 169.254.77.153/30

FortiGate는 터널 인터페이스를 point-to-point 논리 인터페이스로 취급하기 때문에 자신의 IP는 항상 /32 로 설정한다.


1. AWS Site-to-Site VPN 생성

  1. AWS 콘솔 → VPC → VPN Connections
  2. Transit Gateway 선택
  3. Customer Gateway 생성
    • IP Address: 203.0.113.17
    • Routing: Static
  4. Static Route에 내부망 CIDR 추가
    • 192.168.120.0/24
  5. VPN 생성 후 Fortinet용 템플릿(IKEv2) 다운로드

2. FortiGate Phase1 설정 (IKE)

config vpn ipsec phase1-interface
    edit "vpn-aws"
        set interface "WAN"
        set ike-version 2
        set local-gw 203.0.113.17
        set remote-gw 198.51.100.55
        set proposal aes128-sha1
        set dhgrp 2
        set keylife 28800
        set nattraversal disable
        set comments "tunnel1"
        set psksecret <PRE_SHARED_KEY>
    next
end

3. FortiGate 터널 인터페이스 설정

config system interface
    edit "vpn-aws"
        set ip 169.254.77.154 255.255.255.255
        set remote-ip 169.254.77.153 255.255.255.252
        set allowaccess ping
        set type tunnel
        set mtu-override enable
        set mtu 1427
        set tcp-mss 1379
        set interface "WAN"
    next
end

4. Phase2 구성 (Traffic Selector)

config vpn ipsec phase2-interface
    edit "vpn-aws"
        set phase1name "vpn-aws"
        set src-subnet 192.168.120.0 255.255.255.0
        set dst-subnet 10.140.0.0 255.255.0.0
        set auto-negotiate enable
        set comments "vpn-aws-prd-10.140"
    next
    edit "vpn-aws-stg"
        set phase1name "vpn-aws"
        set src-subnet 192.168.120.0 255.255.255.0
        set dst-subnet 10.150.0.0 255.255.0.0
        set auto-negotiate enable
        set comments "vpn-aws-stg-10.150"
    next
end

5. Static Route 구성 (Route-based VPN)

config router static
    edit 12
        set dst 10.140.0.0 255.255.0.0
        set device "vpn-aws"
        set distance 5
        set comment "tunnel1-primary"
    next
    edit 13
        set dst 10.150.0.0 255.255.0.0
        set device "vpn-aws"
        set distance 5
        set comment "tunnel1-stg-primary"
    next
end

6. 방화벽 정책 구성 (Trust_Serial 기준)

내부 → AWS

config firewall policy
    edit 10
        set name "trust_to_vpn_aws"
        set srcintf "Trust_Serial"
        set dstintf "vpn-aws"
        set srcaddr "all"
        set dstaddr "AWS_VPC_ALL"
        set action accept
        set schedule "always"
        set service "ALL"
        set nat disable
    next
end

AWS → 내부

config firewall policy
    edit 11
        set name "vpn_aws_to_trust"
        set srcintf "vpn-aws"
        set dstintf "Trust_Serial"
        set srcaddr "AWS_VPC_ALL"
        set dstaddr "all"
        set action accept
        set schedule "always"
        set service "ALL"
        set nat disable
    next
end

7. 동작 검증 및 트러블슈팅

diagnose vpn tunnel list name vpn-aws
  • enc 증가: FortiGate → AWS 정상
  • dec 증가: AWS → FortiGate 정상

dec 값이 증가하지 않는 경우:

  • TGW Route Table
  • VPC Route Table
  • Security Group / NACL 순으로 확인한다.

결론

본 문서는 AWS 템플릿 기반으로 FortiGate 200F에서 Site-to-Site VPN을 구축하는 전 과정을 설명하였으며, 실제 운영 환경에서 발생한 문제(Trust_Serial uplink → vpn-aws 정책 누락)를 포함하여 실전적인 가이드를 제공한다. 구축 과정은 단순히 템플릿을 적용하는 것을 넘어, uplink 구조 분석, 트래픽 흐름 검증, enc/dec 모니터링, 정책 구성까지 종합적으로 다뤄야 한다. 이 문서를 기반으로 하면 온프레미스–AWS TGW 간 IPSec VPN을 안정적으로 구축하고 운영할 수 있다.