주메뉴 바로가기 본문 바로가기

알림

콘솔 이동 시 로그인이 필요합니다.

로그인하시겠습니까?

아니요

닫기

주문 불가 알림

주문권한이 없습니다.

콘솔에 접근할 수 없는 계정입니다.

확인

닫기

알림

신용카드 등록이 필요합니다.

신용카드 등록 페이지로 이동하시겠습니까?

아니요

닫기
AX Tech
img

GCP와 Azure간 VPN 구성하기 - HA(BGP)

img Sangho Lee(이상호)
| 2025.09.06
  • BGP
  • HA VPN
  • Google
  • VPN
  • Azure
  • Cloud
  • GCP

Azure와 GCP를 VPN HA (BGP)으로 연결해 Hub-Spoke 구조에서의 통신 범위와 고려사항을 정리하고 테스트 과정을 설명합니다.

이번에는 Azure와 GCP를 Hub-Spoke 구조로 구성하고, 양쪽 Hub에 VPN Gateway를 두어 BGP 기반 동적 라우팅을 설정한 사례를 다룹니다.

앞서 Classic VPN(Static Route) 방식과 달리, BGP를 활용하면 경로를 동적으로 학습하고 관리할 수 있어 확장성 및 운영 편의성이 높습니다.
 

아키텍쳐


아래와 같이 Azure / GCP는 VPN을 통해 연결하며, 각각의 사설네트워크는 Hub-Spoke 구조로 Hub와 Spoke 간에는 Peering으로 연결하도록 합니다.

GCP의 HA VPN(BGP) 는 터널을 2개 이상 연결할 수 있고, Azure 또한 Active-Active 활성할 경우 가능하나 본 글에서는 1개의 터널로만 구성을 진행합니다.
 


 

  • Azure

    • Hub VNet: VPN Gateway 존재

    • Local Network Gateway: GCP 측 정보(공인 IP, BGP Peer IP, ASN) 정의

    • Spoke VNet: 테스트 VM 존재, Hub와 Peering

  • GCP

    • HA VPN Gateway: Azure와 IPsec 터널 연결

    • Cloud Router: BGP 세션 담당, Hub VPC에 연결

    • Hub VPC: Cloud Router + VPN Gateway가 연결됨

    • Spoke VPC: 테스트 GCE VM 존재, Hub와 Peering

핵심 리소스 및 설정

  • Azure VPN Gateway
    • ASN: 기본 65515 (필요 시 사용자 지정 가능)
    • BGP IP: 169.254.21.0 ~ 169.254.22.255 (APIPA) 할당 (https://learn.microsoft.com/ko-kr/azure/vpn-gateway/bgp-howto#2-create-testvnet1-gateway-with-bgp)
  • GCP Cloud Router
    • ASN: 사용자 지정 (예: 64514)
    • BGP IP: 169.254.0.0/16 할당 (https://cloud.google.com/network-connectivity/docs/router/how-to/configuring-bgp?hl=ko#bgp-peering-addresses)
  • VNet/VPC Peering
    • Azure: Hub–Spoke Peering 시 Use Remote Gateway / Allow Gateway Transit 옵션 필수
    • GCP: Hub–Spoke Peering 시 Import/Export Custom Routes 옵션 필수


해당 구성을 진행하기전에 유의사항에 대해 확인하도록 하겠습니다.

유의사항

  • BGP APIPA 제약

    • Azure: 169.254.21.0 ~ 169.254.22.255 범위만 사용 가능

    • GCP: 169.254.0.0/16 일부 범위만 허용, Azure와 충돌 없어야 함

  • ASN 고려

    • Azure 기본 ASN = 65515, GCP는 사용자 정의(예: 64514)

    • 충돌 방지 필수

  • Hub–Spoke Peering 옵션

    • Azure: Gateway Transit / Remote Gateway

    • GCP: Custom Route Import / Export

구성 순서

아래와 같은 순서로 자원을 생성하도록 하겠습니다.
  1. Azure VPN Gateway 생성
  2. GCP VPN HA VPN Gateway 생성
  3. GCP VPN Tunnel 생성
  4. GCP Cloud Router 생성
  5. Azure Local Network Gateway 생성
  6. GCP BGP Session 생성
  7. Azure Connection 생성


따라하기

1. Azure VPN Gateway 생성
  • 터널은 한개만 사용할 것이므로 active-active는 "사용 안 함"
  • BGP 구성은 "사용"으로하며, ASN은 65515로 지정


2~4는 콘솔에서 각각 구성해도 되나, 여기서는 VPN 마법사로 한번에 진행(BGP 세션만 나중에 진행)

2. GCP VPN HA VPN Gateway 생성
  • GCP Hub VPC에 "Cloud HA VPN 게이트웨이" 생성



3. GCP VPN Tunnel 생성
  • 터널에 필요한 "피어 VPN 게이트웨이" 생성
  • 인터페이스는 1개로 Azure의 VPN Gateway의 Public(공인) IP를 입력
  • "단일 VPN 터널 만들기"로 진행


4. GCP Cloud Router 생성
  • Cloud Router ASN은 65516 (Azure에서 사용한것과 다른것으로 입력)
  • BGP 식별자는 169.254.21.1/32
    • BGP 식별자는 자동으로 진행해도되나 Azure에서 허용하는 범위가 아닐 수 있음

  • IKE 사전 공유 키 : 여기서는 Password!234이고, 추후 Azure Connection 생성시에 동일한것 입력 필요
  • BGP는 "나중에 BGP 세션 구성"으로 진행
  • 아래와 같이 터널, VPN 게이트웨이 등이 GCP측에 구성은 완료하였으나, 아직 BGP 세션 및 Azure측 구성이 완료되지 않아 아래와 같이 비정상적인 상태를 확인 할 수 있습니다.


5. Azure Local Network Gateway 생성
  • GCP VPN 게이트웨이의 Public(공인) IP인 34.152.96.141을 입력 합니다.
  • GCP Cloud Router를 만들때 생성했던 정보인 65516과 169.254.21.1을 입력합니다.


6. GCP BGP Session 생성
  • GCP의 VPN 터널정보를 클릭하면 하단에 "BGP 세션 만들기"를 클릭합니다.
  • 피어 ASN : Azure의 VPN Gateway의 ASN인 65515를 입력합니다.
  • Cloud Router BGP IP 주소 : GCP의 정보인 169.254.21.1
  • BGP 피어 IP 주소 : Azure측 정보인 169.254.21.2


7. Azure Connection 생성
  • 연결 형식 : 사이트 간(IPsec)으로 선택

  • 공유 키(PSK)는 위에서도 입력해뒀던 "Password!234"
  • BGP 사용에 체크를 선택합니다.
  • 기본 사용자 지정 BGP 주소는 azure측 정보인 169.254.21.2를 선택합니다.
  • 그 외에는 Default로 진행합니다.



정상적으로 모두 생성이 완료되며 잠시 뒤에 아래와 같이 연결이 완료 되는 것을 각각의 CSP 콘솔에서 확인 가능합니다.

[Azure]

  • 상태 : "연결됨"


[GCP]

  • VPN 터널 상태 : "설정됨"
  • BGP 세션 상태 : "BGP 설정됨"


 


테스트


테스트 진행전에 아래와 같은 조건에 대한 설정들이 정상적으로 이뤄져야 원활한 테스트가 가능합니다.

사전 조건

  • 아래 Peering과 Router 설정이 되어야 Azure Spoke <> GCP Spoke 간 통신이 원활하며, 그전까지는 Hub 간에만 가능합니다.
  • Peeirng
    • Azure Hub-Spoke
    • GCP Hub-Spoke
  • Router
    • GCP Cloud Router에 커스텀 IP 범위에 GCP Spoke 대역 추가
  • 방화벽(GCP)에 Azure 대역 추가
Azure Hub <> GCP Hub 간 통신 확인
  • Azure Hub(10.6.1.4) <> GCP Hub(10.3.1.2) : 정상

Azure Spoke <> GCP Spoke 간 통신 확인
  • Azure Spoke(10.7.0.4) <> GCP Spoke(10.4.0.2) : 정상

 

결론

 

BGP 기반 VPN은 Classic VPN(Static Route)과 달리 새로운 Subnet이 추가되더라도 동적으로 경로를 교환할 수 있어 확장성과 운영 효율성이 뛰어납니다. 하지만 오늘 실습을 통해 확인했듯이, 단순히 BGP 세션이 성립한다고 해서 모든 통신이 보장되지는 않습니다.

이번 테스트에서 Hub ↔ Hub / Spoke ↔ Spoke 통신에 대해 정상임을 확인했습니다. GCP Cloud Router가 Hub VPC Subnet만 자동으로 광고하고, Peering된 Spoke VPC Subnet은 외부로 자동 광고하지 않기 때문에, 사전 조건에 GCP Spoke CIDR을 GCP Cloud Router의 커스텀IP 범위(Custom Advertised Routes)에 추가하면 본 테스트에서 정상임을 확인 할 수 있습니다.

따라서 안정적인 Azure–GCP BGP VPN 운영을 위해서는 다음 사항들을 반드시 고려해야 합니다.

  • ASN 충돌 방지: Azure 기본 ASN(65515)과 GCP Cloud Router ASN이 중복되지 않도록 설계
  • APIPA 인터페이스 관리: 169.254.x.x/30 범위에서 피어 IP 충돌 방지
  • Peering 옵션:
    • Azure: Allow Gateway Transit / Use Remote Gateway
    • GCP: Import/Export Custom Routes 활성화
  • Cloud Router 광고 범위 관리: Hub Subnet은 자동이지만 Spoke Subnet은 반드시 Custom Advertise에 추가해야 함

결론적으로, BGP VPN은 Classic VPN 대비 훨씬 유연하고 관리 효율적이지만, **클라우드별 설계 철학 차이(Azure는 자동, GCP는 수동)**를 이해하고, Spoke 광고 범위를 명확히 관리해야 Spoke ↔ Spoke까지 완전한 통신을 보장할 수 있습니다.

img
Sangho Lee(이상호) | ProservX Team

Cloud Architect로 컨설팅, 설계, 구축을 지원하고 있습니다.