Google Cloud와 Azure 사이에 HA VPN 연결 만들기

이 튜토리얼에서는 Google Cloud와 Microsoft Azure 사이에 고가용성(HA) 가상 사설망(VPN) 연결을 만드는 방법을 보여줍니다. 이러한 HA VPN 서비스는 Google Cloud의 Virtual Private Cloud(VPC) 네트워크와 Microsoft Azure 가상 네트워크 게이트웨이 사이의 직접 연결을 위해 사용할 수 있습니다.

이 문서에서는 사용자가 VPC 네트워크, 경계 게이트웨이 네트워크(BGP), VPN, 인터넷 프로토콜 보안(IPsec) 터널의 기본 개념에 익숙하다고 가정합니다.

Google Cloud는 Microsoft Azure와 같이 IPsec VPN 연결을 통해 Google Cloud 외부에서 실행되는 환경에 VPC 네트워크를 연결하기 위한 고가용성(HA) VPN 서비스를 제공합니다. HA VPN은 Google 권장사항에 따라 구성할 경우 99.99% 서비스 가용성의 서비스수준계약(SLA)을 지원합니다.

아키텍처 개요

다음 다이어그램은 이 문서에서 설명하는 아키텍처를 보여줍니다.

아키텍처 개요

다이어그램에 표시된 아키텍처에는 다음 구성요소가 포함됩니다.

  • Cloud Router: BGP를 사용하여 VPC 네트워크에 동적 라우팅을 제공하는 완전히 분산되고 관리되는 Google Cloud 서비스입니다.
  • HA VPN 게이트웨이: Google Cloud에서 실행되는 Google에서 관리되는 VPN 게이트웨이입니다. 각 HA VPN 게이트웨이는 인터페이스 0과 1에 해당하는 2개의 인터페이스가 포함된 리전별 리소스입니다. 이러한 각 인터페이스는 자체 외부 IP 주소를 갖고 있습니다.
  • VPN 터널: 암호화된 트래픽을 전달할 수 있도록 Google Cloud의 HA VPN 게이트웨이와 Azure의 피어 VPN 게이트웨이를 연결합니다.
  • 가상 네트워크 게이트웨이: Azure Cloud 서비스에 정의된 2개의 비공개 네트워크입니다.

각 가상 네트워크 게이트웨이 연결에는 여기에서 Google Cloud의 HA VPN 게이트웨이 인터페이스에 해당하는 단일 고객 게이트웨이를 가리키도록 미리 구성된 2개의 터널이 제공됩니다. 이 구성에서 99.99% 서비스 가용성 SLA를 충족하기 위해 필요한 최소 Cloud VPN 터널 수는 2개입니다.

절차에 필요한 IP 주소

이 문서의 절차를 완료하려면 Google Cloud 및 Azure 모두에서 다양한 IP 주소가 사용됩니다. 이러한 IP 주소 중 일부는 리소스를 만들 때 자동으로 할당됩니다.

자동으로 할당되지 않는 주소의 경우에는 사용 가능한 IP 주소 및 조직 요구에 따라 해당 IP 주소를 정의합니다.

Google Cloud 리소스에는 다음 IP 주소가 필요합니다.

  • Virtual Private Cloud 네트워크의 서브넷을 만들려면 사용자 정의 IP 주소 범위가 필요합니다.
  • HA VPN 게이트웨이를 만든 후에는 Google Cloud가 2개의 외부 IP 주소를 HA VPN 게이트웨이에 자동으로 할당합니다. Google은 게이트웨이의 두 인터페이스 각각에 하나의 IP 주소를 할당합니다. Azure에서 로컬 네트워크 게이트웨이를 설정하려면 이러한 인터페이스에 IP 주소가 필요합니다.
  • Google Cloud에서 HA VPN 터널을 만들 때 각 터널에는 Cloud Router에 대한 BGP 인터페이스와 Azure의 활성-활성 가상 네트워크 게이트웨이(VPN 게이트웨이)에 대한 BGP 인터페이스가 필요합니다. 각 터널에 대해 169.254.21.*169.254.22.* 범위에서 /30 블록의 링크-로컬 BGP 피어링 IPv4 주소 쌍을 결정합니다. 이러한 범위는 Azure APIPA BGP 피어링 IPv4 주소에 유효한 범위입니다. 총 4개의 IP 주소를 선택해야 합니다.

    선택한 BGP 피어링 IPv4 주소는 VPC 네트워크의 모든 리전에서 모든 Cloud Router 간에 고유해야 합니다.

Azure 리소스에는 다음 IP 주소가 필요합니다.

  • 가상 네트워크(VNet)를 만들 때는 VNet에 네트워크에 대한 IP 주소 공간과 네트워크의 서브넷에 대한 IP 주소 공간이 필요합니다. 기본 주소 공간을 사용하거나 사용자 정의 주소 공간을 입력할 수 있습니다.
  • 활성-활성 가상 네트워크 게이트웨이(VPN 게이트웨이)를 만들 때는 게이트웨이에 서브넷 주소 범위가 필요합니다. 기본 범위를 사용하거나 사용자 정의 범위를 입력할 수 있습니다.
  • 활성-활성 VPN 게이트웨이에 대해 BGP를 구성할 때는 게이트웨이에 2개의 APIPA BGP 피어링 IP 주소가 필요합니다. 앞에서 설명한 것처럼 Azure APIPA BGP 피어링 IP 주소의 유효한 범위는 169.254.21.*169.254.22.*입니다.
  • 활성-활성 VPN 게이트웨이를 만든 후에는 Azure가 각 게이트웨이 인터페이스에 외부 IP 주소를 자동으로 할당합니다. Google Cloud에서 피어 VPN 게이트웨이를 설정하려면 이러한 IP 주소가 필요합니다.

IP 주소를 설계할 때는 각 네트워크에 대해 고유한 IP 주소 집합을 사용해야 합니다.

목표

  • Azure 가상 네트워크(VNet) 및 활성-활성 가상 네트워크 게이트웨이(VPN 게이트웨이)를 만듭니다.
  • Google Cloud에서 VPC 네트워크, Cloud Router, HA VPN 게이트웨이, 피어 VPN 게이트웨이, 2개의 HA VPN 터널(BGP 세션 포함)과 같은 필수 구성요소를 만듭니다.
  • Azure에서 2개의 로컬 네트워크 게이트웨이와 2개의 VPN 연결을 만듭니다. Cloud Router 구성을 확인하고 Google Cloud에서 HA VPN 터널의 상태를 확인합니다.
  • Google Cloud의 VPC 네트워크와 Azure의 가상 네트워크(VNet) 사이의 Cloud VPN 연결을 테스트합니다.

비용

이 문서의 절차에는 다음과 같은 청구 가능한 Google Cloud 구성요소가 사용됩니다.

Google Cloud 구성요소에 대한 비용을 예상하려면 Google Cloud 가격 계산기를 사용하세요.

이 문서의 절차에는 다음과 같은 청구 가능한 Microsoft Azure Cloud 서비스 구성요소가 사용됩니다.

  • VPN 게이트웨이
  • 로컬 네트워크 게이트웨이

Azure 구성요소의 비용을 예측하려면 Azure 가격 계산를 사용하세요.

시작하기 전에

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  3. Enable the Compute Engine API.

    Enable the API

  4. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

  5. 네트워킹 구성요소 구성에 필요한 관리 역할이 있는지 확인합니다.

    • 네트워크 관리자: compute.networkAdmin
    • 보안 관리자: compute.securityAdmin
    • Compute 관리자: compute.admin

    이러한 역할의 목적에 대한 자세한 내용은 네트워킹 관련 직무를 위한 IAM 역할을 참조하세요.

Azure에서 VNet 및 활성-활성 VPN 게이트웨이 만들기

Azure에서 다음 구성요소를 설정해야 합니다.

  • Azure 리소스가 Google Cloud VPN과 통신할 수 있게 해주는 Azure 가상 네트워크(VNet)
  • 게이트웨이 가상 머신(VM)의 두 인스턴스가 모두 Google Cloud VPN에 대해 VPN 터널을 설정할 수 있게 해주는 활성-활성 가상 네트워크 게이트웨이(VPN 게이트웨이)

VNet 만들기

VNet은 Azure 리소스가 상대 리소스, 인터넷, 기타 네트워크(예: Cloud VPN)와 안전하게 통신할 수 있게 해줍니다. VNet 만들기에 대한 자세한 내용은 VNet 만들기에 대한 Azure 문서를 참조하세요.

  1. Azure 포털에 로그인합니다.
  2. 리소스, 서비스 및 문서 검색(G+/) 상자에서 virtual network를 입력합니다.
  3. Marketplace 결과 목록에서 가상 네트워크를 선택합니다.
  4. 가상 네트워크 페이지에서 만들기를 선택합니다.
  5. 가상 네트워크 만들기 페이지의 기본 탭에서 프로젝트 세부정보인스턴스 세부정보에 대해 다음 VNet 설정을 구성합니다.

    1. 구독 상자에서 나열된 구독이 올바른지 확인합니다. 구독을 변경하려면 목록에서 구독을 선택합니다.
    2. 리소스 그룹을 지정하려면 새로 만들기를 클릭하여 새 그룹을 만들고 리소스 그룹 이름으로 azure‑to‑google‑resgroup과 같은 이름을 입력합니다.
    3. 이름 상자에 azure‑to‑google‑network와 같은 VNet 이름을 입력합니다.
    4. 리전 상자에 VNet의 위치를 선택합니다.

      선택한 위치에 따라 이 가상 네트워크에 배포하는 리소스의 스토리지 위치가 결정됩니다.

  6. IP 주소 탭의 IPv4 주소 공간 상자에서 Azure에서 생성된 기본 주소 공간과 서브넷을 사용합니다.

  7. 보안 탭에서 BastionHost, DDos 보호 표준, 방화벽의 값을 기본값인 사용 중지로 둡니다.

  8. VNet 설정을 검증하기 위해 검토 + 만들기를 선택합니다.

  9. 설정이 확인되었으면 만들기를 선택합니다.

활성-활성 VPN 게이트웨이 만들기

다음 절차에서는 활성-활성 VPN 게이트웨이를 만듭니다.

  • 첫 번째 절차에서는 프로젝트 및 인스턴스 세부정보를 만듭니다.
  • 두 번째 절차에서는 게이트웨이의 IP 주소를 지정합니다.

지금은 활성-활성 VPN 게이트웨이만 만듭니다. Azure에서 필요한 터널을 구성하려면 먼저 Google Cloud 구성요소를 만들어야 합니다. 활성-활성 VPN 게이트웨이 만들기에 대한 자세한 내용은 Azure 문서에서 포털을 사용하여 활성-활성 VPN 게이트웨이 구성 주제를 참조하세요.

게이트웨이 세부정보 정의

  1. Azure 포털에 로그인합니다.
  2. 리소스, 서비스, 문서 검색(G+/)에서 virtual network gateway를 입력합니다.
  3. 검색 결과의 서비스 아래에서 가상 네트워크 게이트웨이를 선택합니다.
  4. 가상 네트워크 게이트웨이 페이지에서 만들기를 선택합니다.
  5. 가상 네트워크 게이트웨이 만들기 페이지의 기본 탭에서 프로젝트 세부정보인스턴스 세부정보 섹션의 옵션에 대해 다음 값을 지정합니다.

    1. 구독 목록에서 사용하려는 구독을 선택합니다.
    2. 선택사항: 게이트웨이 서브넷 주소 범위 상자에서 서브넷에 대해 주소 범위를 입력합니다.
    3. 리소스 그룹에 이 페이지에서 선택한 가상 네트워크에 해당하는 리소스 그룹이 표시되는지 확인합니다.
    4. 이름에 게이트웨이 이름(예: azure‑to‑google‑gateway)을 입력합니다.
    5. 리전에에 대해 VNET을 만들 때 사용한 것과 동일한 리전을 선택합니다.
    6. 게이트웨이 유형에 대해 VPN을 선택합니다.
    7. VPN 유형에 대해 경로 기반 VPN 유형을 선택합니다.

    8. SKU 목록에서 사용하려는 게이트웨이 SKU를 선택합니다.

      드롭다운에 나열되는 SKU는 선택한 VPN 유형에 따라 달라집니다.

    9. 세대 목록에서 사용하려는 세대를 선택합니다.

    10. 가상 네트워크 목록에서 이전에 만든 VNet을 선택합니다.

  6. 다음 절차를 수행하려면 이 페이지를 계속 사용합니다.

게이트웨이 IP 주소 정의

  1. 가상 네트워크 게이트웨이 만들기 페이지의 기본 탭에서 다음 단계에 따라 활성-활성 VPN 게이트웨이에 사용되는 외부 IP 주소를 만듭니다.

    1. 공개 IP 주소에 대해 새로 만들기를 선택합니다.

      Azure가 활성-활성 VPN 게이트웨이에 외부 IP 주소를 자동으로 할당합니다.

    2. 공개 IP 주소 이름 상자에 외부 IP 주소 인스턴스 이름(예: azure‑to‑google‑network‑ip1)을 입력합니다.

    3. 활성-활성 모드 사용 설정에 대해 사용을 선택합니다.

    4. 선택사항: 리전에 사용 가능한 경우 가용성 영역을 구성합니다. 예를 들어 영역 중복을 선택할 수 있습니다.

    5. 두 번째 공개 IP 주소에 대해 새로 만들기를 선택합니다.

    6. 공개 IP 주소 이름 상자에서 두 번째 외부 IP 주소의 이름(예: azure‑to‑google‑network‑ip2)을 입력합니다.

    7. BGP 구성에 대해 사용을 선택합니다.

    8. 자율 시스템 번호(ASN)에 대해 ASN을 사용 가능하고 유효한 값으로 설정합니다.

      Google Cloud에서 터널에 대해 BGP 세션을 설정할 때 이 ASN 값을 사용합니다. 이 활성-활성 VPN 게이트웨이를 참조하도록 이 값을 AZURE_ASN으로 기록합니다.

    9. 커스텀 Azure APIPA BGP IP 주소에 대해 첫 번째 APIPA BGP IP 주소를 입력하고 값을 AZURE_BGP_IP_0으로 기록합니다. Azure APIPA BGP IP 주소의 유효 범위는 169.254.21.*169.254.22.*입니다.

    10. 두 번째 커스텀 Azure APIPA BGP IP 주소에 대해 두 번째 APIPA BGP IP 주소를 입력하고 값을 AZURE_BGP_IP_1로 기록합니다. 이러한 변수는 Google Cloud에서 BGP 세션을 구성할 때 사용합니다.

  2. 검증을 실행하려면 검토 + 만들기를 선택합니다.

  3. 검증이 완료되면 만들기를 선택하여 VPN 게이트웨이를 배포합니다.

활성-활성 VPN 게이트웨이에 대해 외부 IP 주소 확인 및 기록

Azure가 활성-활성 VPN 게이트웨이에 자동으로 할당한 외부 IP 주소가 필요합니다. 이러한 IP 주소를 사용하여 Google Cloud에서 피어 VPN 게이트웨이 리소스를 만듭니다.

  1. 바로 전에 만든 활성-활성 게이트웨이의 개요 페이지에서 게이트웨이의 외부 IP 주소를 찾습니다.
  2. 화면에 표시된 IP 주소를 기록합니다.
    • 첫 번째 외부 IP 주소를 AZURE_GW_IP_0으로 기록합니다.
    • 두 번째 외부 IP 주소를 AZURE_GW_IP_1로 기록합니다.

이후에는 이 문서에서 이러한 IP 주소를 AZURE_GW_IP_0AZURE_GW_IP_1이라고 부릅니다.

Google Cloud 구성요소 만들기

Google Cloud에서 다음 구성요소를 설정해야 합니다.

  • VPC 네트워크
  • HA VPN 게이트웨이
  • Cloud Router
  • 피어 VPN 게이트웨이
  • BGP 세션이 있는 HA VPN 터널

다음 절차에서는 시작하기 전에에 설명된 대로 Google Cloud를 설정했다고 가정합니다. 다음 단계를 완료하지 않았으면 지금 수행합니다.

Google Cloud에서 VPC 네트워크, 서브넷, HA VPN 게이트웨이 및 Cloud Router 만들기

Google Cloud에서 VPC 네트워크를 만들고, HA VPN 게이트웨이를 만들고, Cloud Router를 만들고, Google Cloud에서 방화벽 규칙을 구성합니다.

  1. Google Cloud Shell에서 사용자가 만들거나 선택한 클라우드 프로젝트에서 작업 중인지 확인합니다.

    gcloud config set project YOUR_PROJECT_ID
    
    export PROJECT_ID=`gcloud config list   --format="value(core.project)"`

    YOUR_PROJECT_ID를 Cloud 프로젝트 ID로 바꿉니다.

  2. 단일 서브넷으로 커스텀 VPC 네트워크를 만듭니다.

    gcloud compute networks create NETWORK \
        --subnet-mode SUBNET_MODE \
        --bgp-routing-mode BGP_ROUTING_MODE

    다음을 바꿉니다.

    • NETWORK: 네트워크의 이름입니다(예: google‑to‑azure‑vpc).
    • SUBNET_MODE: custom으로 설정된 서브넷 모드입니다.
  3. BGP_ROUTING_MODE: global로 설정된 BGP 라우팅 모드입니다.

    명령어가 다음 예시와 비슷하게 표시됩니다.

    gcloud compute networks create google-to-azure-vpc \
        --subnet-mode custom \
        --bgp-routing-mode global
  4. 테스트 VM을 호스팅하기 위해 서브넷을 하나 만듭니다.

    gcloud compute networks subnets create SUBNET_NAME \
        --network NETWORK \
        --region SUBNET_REGION \
        --range SUBNET_IP_ADDRESS_RANGE

    다음을 바꿉니다.

    • SUBNET_NAME: 서브넷 이름입니다.
    • SUBNET_REGION: 서브넷을 만들 리전입니다.
    • SUBNET_IP_ADDRESS_RANGE: 서브넷의 IP 주소 범위입니다.

    명령어가 다음 예시와 비슷하게 표시됩니다.

    gcloud compute networks subnets create subnet-central1  \
        --network google-to-azure-vpc \
        --region us-central1 \
        --range 10.1.1.0/24
    
  5. HA VPN 게이트웨이를 만듭니다.

    gcloud compute vpn-gateways create HA_VPN_GATEWAY_NAME \
        --network NETWORK \
        --region REGION

    HA_VPN_GATEWAY_NAME을 HA VPN 게이트웨이의 이름으로 바꿉니다.

    명령어가 다음 예시와 비슷하게 표시됩니다.

    gcloud compute vpn-gateways create ha-vpn-gw-a \
       --network google-to-azure-vpc \
       --region us-central1
    

    만드는 게이트웨이는 다음 예시 출력과 유사하게 표시되어야 합니다.

    Created [https://www.googleapis.com/compute/v1/projects/YOUR_PROJECT_ID/regions/us-central1/vpnGateways/ha-vpn-gw-a].
    NAME          INTERFACE0     INTERFACE1     NETWORK     REGION
    ha-vpn-gw-a   203.0.113.1   203.0.113.2   google-to-azure-vpc   us-central1
    

    출력에는 각 게이트웨이 인터페이스(INTERFACE0INTERFACE1)에 자동으로 할당된 외부 IPv4 주소가 나열됩니다. 이러한 IP 주소는 Azure에서 로컬 네트워크 게이트웨이를 설정할 때 필요합니다.

    • HA_VPN_INT_0에서 INTERFACE0에 대한 IP 주소를 기록합니다.
    • HA_VPN_INT_1에서 INTERFACE1에 대한 IP 주소를 기록합니다.
  6. Cloud Router를 만듭니다.

    gcloud compute routers create ROUTER_NAME \
        --region REGION \
        --network NETWORK \
        --asn GOOGLE_ASN \

    다음을 바꿉니다.

    • ROUTER_NAME: Cloud Router의 이름입니다.
    • REGION: HA VPN 게이트웨이 및 터널을 만들려는 리전입니다.
    • GOOGLE_ASN: 만들려는 Cloud Router의 비공개 자율 시스템 번호(ASN)입니다. 동일한 리전 및 네트워크에서 피어 ASN으로 아직 사용하고 있지 않은 64512-65534 또는 4200000000-4294967294 범위의 비공개 ASN일 수 있습니다.

    명령어가 다음 예시와 비슷하게 표시됩니다.

    gcloud compute routers create cloud-router \
        --region us-central1 \
        --network google-to-azure-vpc \
        --asn 65534
    

Azure VPN의 피어 VPN 게이트웨이 만들기

이 섹션에서는 Azure에서 활성-활성 VPN 게이트웨이에 대해 Google Cloud에 정보를 제공하는 외부 VPN 게이트웨이 리소스를 만듭니다. 각각 고유한 외부 IP 주소가 있는 2개의 개별 인터페이스를 사용하는 단일 피어 VPN 게이트웨이를 만듭니다.

2개의 인터페이스가 포함된 단일 외부 피어 VPN 게이트웨이를 만듭니다.

gcloud compute external-vpn-gateways create AZURE_GW_NAME \
     --interfaces 0=AZURE_GW_IP_0,1=AZURE_GW_IP_1

다음을 바꿉니다.

  • AZURE_GW_NAME: Azure 활성-활성 VPN 게이트웨이의 이름입니다.
  • AZURE_GW_IP_0: 피어 게이트웨이의 한 인터페이스에 대한 외부 IP 주소입니다.
  • AZURE_GW_IP_1: 피어 게이트웨이의 다른 인터페이스에 대한 외부 IP 주소입니다.

생성된 피어 VPN 게이트웨이 리소스는 AZURE_GW_IP_0AZURE_GW_IP_1이 피어 게이트웨이 인터페이스의 실제 외부 IP 주소를 표시하는 다음 예시와 비슷합니다.

gcloud compute external-vpn-gateways create azure-peer-gw \
     --interfaces 0=203.0.113.1,1=203.0.113.2

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/externalVpnGateways/peer-gw].
NAME     INTERFACE0    INTERFACE1
azure-peer-gw  203.0.113.1  203.0.113.2

VPN 터널 만들기

피어 VPN 게이트웨이의 각 인터페이스에 대해 하나씩 2개의 VPN 터널을 만들어야 합니다. Azure에 대해 VPN 터널을 구성할 때는 IKEv2 암호화 프로토콜을 사용합니다.

이 섹션에 사용된 명령어에 대해 다음을 바꿉니다.

  • TUNNEL_NAME_IF0TUNNEL_NAME_IF1: 터널의 이름입니다. 게이트웨이 인터페이스 이름을 포함하여 터널 이름을 지정하면 나중에 터널을 식별하는 데 도움이 됩니다.
  • AZURE_GW_NAME: 이전에 만든 외부 피어 게이트웨이의 이름입니다.
  • AZURE_GW_INT_NUM_0AZURE_GW_INT_NUM_1: 이전에 외부 피어 게이트웨이에 구성된 인터페이스 번호입니다.
  • IKE_VERS: IKEv2에 2를 사용합니다.
  • SHARED_SECRET: Azure에서 VPN 연결을 설정할 때 지정할 사전 공유 키와 일치해야 하는 사전 공유 키(공유 보안 비밀)입니다. 권장사항은 강력한 사전 공유 키 생성을 참조하세요.
  • HA_VPN_GATEWAY_NAME: HA VPN 게이트웨이의 이름입니다.
  • INT_NUM_0: 이전에 만든 HA VPN 게이트웨이의 첫 번째 인터페이스 번호 0입니다.
  • INT_NUM_1: 이전에 만든 HA VPN 게이트웨이의 두 번째 인터페이스 번호 1입니다.

다음 단계에 따라 VPN 터널을 만듭니다.

  1. 인터페이스 0에 대해 VPN 터널을 만듭니다.

    gcloud compute vpn-tunnels create TUNNEL_NAME_IF0 \
       --peer-external-gateway=AZURE_GW_NAME \
       --peer-external-gateway-interface=AZURE_GW_INT_NUM_0  \
       --region=REGION \
       --ike-version=IKE_VERS \
       --shared-secret=SHARED_SECRET \
       --router=ROUTER_NAME \
       --vpn-gateway=HA_VPN_GATEWAY_NAME \
       --interface=INT_NUM_0

    명령어가 다음 예시와 비슷하게 표시됩니다.

    gcloud compute vpn-tunnels create azure-tunnel-1 \
       --peer-external-gateway azure-peer-gw \
       --peer-external-gateway-interface 0  \
       --region us-central1  \
       --ike-version 2 \
       --shared-secret xo2aTKHipD/oE1GAXgj3lMwjBmJXZjqD \
       --router cloud-router \
       --vpn-gateway ha-vpn-gw-a \
       --interface 0
  2. 인터페이스 1에 대해 VPN 터널을 만듭니다.

    gcloud compute vpn-tunnels create TUNNEL_NAME_IF1 \
      --peer-external-gateway=AZURE_GW_NAME \
      --peer-external-gateway-interface=AZURE_GW_INT_NUM_1 \
      --region=REGION \
      --ike-version=IKE_VERS \
      --shared-secret=SHARED_SECRET \
      --router=ROUTER_NAME \
      --vpn-gateway=HA_VPN_GATEWAY_NAME \
      --interface=INT_NUM_1

    명령어가 다음 예시와 비슷하게 표시됩니다.

    gcloud compute vpn-tunnels create azure-tunnel-2 \
       --peer-external-gateway azure-peer-gw \
       --peer-external-gateway-interface 1  \
       --region us-central1  \
       --ike-version 2 \
       --shared-secret xo2aTKHipD/oE1GAXgj3lMwjBmJXZjqD \
       --router cloud-router \
       --vpn-gateway ha-vpn-gw-a \
       --interface 1

BGP 세션 만들기

동적 라우팅의 경우 Cloud Router를 사용하여 Google Cloud와 Azure 사이에 BGP 세션을 설정합니다. Cloud VPN 개요Cloud VPN 네트워크 및 터널 라우팅에 설명된 대로 가능하면 항상 정적 라우팅 대신 동적 라우팅을 사용하는 것이 좋습니다.

각 VPN 터널에 대해 BGP 세션을 만들어야 합니다. 각 BGP 세션은 Cloud Router에 대한 BGP 인터페이스와 BGP 피어로 구성됩니다. 바로 전에 만든 2개의 VPN 터널 각각에 대해 BGP 피어를 만듭니다.

이 섹션에 사용된 명령어에 대해 다음을 바꿉니다.

  • ROUTER_NAME: Cloud Router에 할당한 이름입니다.
  • ROUTER_INTERFACE_NAME_0ROUTER_INTERFACE_NAME_1: Cloud Router BGP 인터페이스의 이름입니다. 이전에 구성한 터널 이름과 관련된 이름을 사용하는 것이 좋습니다.
  • MASK_LENGTH: 30을 지정합니다. 동일한 Cloud Router의 각 BGP 세션은 169.254.0.0/16 블록에서 고유한 /30 CIDR을 사용해야 합니다.
  • GOOGLE_BGP_IP_0GOOGLE_BGP_IP_1: 구성한 HA VPN 게이트웨이 인터페이스에 대한 BGP 피어링 IP 주소입니다. 각 터널에는 다른 게이트웨이 인터페이스가 사용됩니다. Azure APIPA BGP 피어링 IP 주소에 허용되는 범위가 169.254.21.*169.254.22.*이기 때문에 Cloud Router BGP 피어링 IP 주소에 대해 해당 범위의 /30 CIDR에서 사용 가능한 IP 주소를 선택해야 합니다.
  • AZURE_BGP_IP_0AZURE_BGP_IP_1: Azure 활성-활성 VPN 게이트웨이에 이미 구성한 APIPA BGP 피어링 IP 주소입니다. 각 터널에는 서로 다른 주소가 사용됩니다.
  • TUNNEL_NAME_IF0TUNNEL_NAME_IF1: 구성한 HA VPN 게이트웨이 인터페이스와 연결된 터널입니다.
  • AZURE_ASN: Azure에서 활성-활성 피어 VPN 게이트웨이에 대해 구성한 ASN입니다.
  • BGP_PEER_NAME_1BGP_PEER_NAME_2를 각 BGP 피어의 고유 이름으로 바꿉니다. 예를 들면 azure‑bgp‑peer‑1azure‑bgp‑peer‑2입니다.

VPN 터널에 대해 BGP 세션을 만들려면 다음 단계를 수행합니다.

  1. 첫 번째 VPN 터널에 대해 Cloud Router에 BGP 인터페이스를 추가합니다.

    gcloud compute routers add-interface ROUTER_NAME \
       --interface-name=ROUTER_INTERFACE_NAME_0 \
       --mask-length=MASK_LENGTH \
       --vpn-tunnel=TUNNEL_NAME_IF0 \
       --ip-address=GOOGLE_BGP_IP_0 \
       --region=REGION

    명령어가 다음 예시와 비슷하게 표시됩니다.

    gcloud compute routers add-interface cloud-router \
       --interface-name azure-tunnel-1-int-0 \
       --mask-length 30 \
       --vpn-tunnel azure-tunnel-1 \
       --ip-address 169.254.21.2 \
       --region us-central1
    
  2. 첫 번째 VPN 터널에 대해 인터페이스에 BGP 피어를 추가합니다.

    gcloud compute routers add-bgp-peer ROUTER_NAME \
       --peer-name=BGP_PEER_NAME_1 \
       --peer-asn=AZURE_ASN \
       --interface=ROUTER_INTERFACE_NAME_0 \
       --peer-ip-address=AZURE_BGP_IP_0 \
       --region=REGION

    명령어가 다음 예시와 비슷하게 표시됩니다.

    gcloud compute routers add-bgp-peer cloud-router \
       --peer-name azure-bgp-peer-1 \
       --peer-asn 65515 \
       --interface azure-tunnel-1-int-0 \
       --peer-ip-address 169.254.21.1 \
       --region us-central1
    
  3. 두 번째 VPN 터널에 대해 Cloud Router에 BGP 인터페이스를 추가합니다.

    gcloud compute routers add-interface ROUTER_NAME \
       --interface-name=ROUTER_INTERFACE_NAME_1 \
       --mask-length=MASK_LENGTH \
       --vpn-tunnel=TUNNEL_NAME_IF0 \
       --ip-address=GOOGLE_BGP_IP_1 \
       --region=REGION

    명령어가 다음 예시와 비슷하게 표시됩니다.

    gcloud compute routers add-interface cloud-router \
       --interface-name azure-tunnel-2-int-1 \
       --mask-length 30 \
       --vpn-tunnel azure-tunnel-2 \
       --ip-address 169.254.22.2 \
       --region us-central1
    
  4. 두 번째 VPN 터널에 대해 인터페이스에 BGP 피어를 추가합니다.

    gcloud compute routers add-bgp-peer ROUTER_NAME \
       --peer-name=BGP_PEER_NAME_2 \
       --peer-asn=AZURE_ASN \
       --interface=ROUTER_INTERFACE_NAME_1 \
       --peer-ip-address=AZURE_BGP_IP_1 \
       --region=REGION

    명령어가 다음 예시와 비슷하게 표시됩니다.

    gcloud compute routers add-bgp-peer cloud-router \
      --peer-name azure-bgp-peer-2 \
      --peer-asn 65515 \
      --interface azure-tunnel-2-int-1 \
      --peer-ip-address 169.254.22.1 \
      --region us-central1
    

Azure에서 로컬 네트워크 게이트웨이 및 VPN 연결 만들기

Google Cloud 구성요소를 만들고 구성한 다음 Azure 환경으로 돌아가서 Azure에 Google Cloud 연결을 마무리합니다. 이 연결을 마무리하기 위해 Azure에서 다음 구성요소를 만듭니다.

  • Azure에서 Google Cloud VPN을 나타내는 2개의 로컬 네트워크 게이트웨이
  • Google Cloud에서 구성한 2개의 HA VPN 터널에 해당하는 2개의 VPN 연결

2개의 로컬 네트워크 게이트웨이 만들기

로컬 네트워크 게이트웨이는 Azure에서 Google Cloud VPN을 나타내는 특별한 객체입니다. 로컬 네트워크 게이트웨이를 만들 때는 다음 정보를 지정합니다.

  • 로컬 네트워크 게이트웨이의 이름
  • 연결에 사용할 HA VPN 인터페이스의 IP 주소
  • 연결을 만들려는 Google Cloud Router의 IP 주소입니다.
  • VPN 게이트웨이를 통해 Cloud Router로 라우팅되는 IP 주소 프리픽스입니다. 지정한 주소 프리픽스는 Cloud VPN에 있는 프리픽스입니다. 클라우드 가상 사설망이 변경되거나 Cloud Router의 외부 IP 주소를 변경해야 할 경우 해당 값을 나중에 업데이트할 수 있습니다.

2개의 로컬 네트워크 게이트웨이를 만들어야 합니다. 하나의 게이트웨이는 Google Cloud의 첫 번째 HA VPN 터널 인터페이스에 연결되고 다른 게이트웨이는 두 번째 HA VPN 터널 인터페이스에 연결됩니다.

자세한 내용은 Azure 문서에서 Azure Portal에서 사이트 간 VPN 연결 만들기 튜토리얼의 로컬 네트워크 게이트웨이 만들기를 참조하세요.

첫 번째 로컬 네트워크 게이트웨이를 만들려면 다음 단계를 수행합니다.

  1. Azure 포털에 로그인합니다.
  2. 리소스, 서비스 및 문서 검색(G+/)에서 로컬 네트워크 게이트웨이를 입력합니다.
  3. Marketplace 아래의 검색 결과에서 로컬 네트워크 게이트웨이를 찾아서 선택합니다.
  4. 만들기를 클릭합니다.
  5. 로컬 네트워크 게이트웨이 만들기 페이지의 기본 탭에서 로컬 네트워크 게이트웨이에 대해 다음 값을 지정합니다.

    1. 구독 목록에서 올바른 구독이 표시되는지 확인합니다.
    2. 리소스 그룹 목록에서 이 문서의 앞 부분에서 VNet에 대해 만든 것과 동일한 리소스 그룹을 선택합니다.
    3. 리전에 대해 VNet이 상주하는 동일 위치를 선택합니다.
    4. 이름에 대해 로컬 네트워크 게이트웨이의 이름(예: azure-to-google-locgateway1)을 입력합니다.
    5. 엔드포인트에 대해 IP 주소를 선택합니다.
    6. IP 주소 상자에 HA VPN의 INTERFACE0에 대한 IP 주소를 입력합니다(즉, HA_VPN_INT_0 입력).
    7. 주소 공간에 이 로컬 네트워크가 나타내는 네트워크의 주소 범위를 입력합니다.

      여러 주소 공간 범위를 추가할 수 있습니다. 여기에 지정하는 범위가 연결하려는 다른 네트워크의 범위와 겹치지 않도록 해야 합니다.

  6. 고급 탭에서 BGP 설정을 다음과 같이 구성합니다.

    1. BGP 설정 구성에 대해 를 선택합니다.
    2. 자율 시스템 번호(ASN)에 Cloud Router의 ASN을 입력합니다(즉, GOOGLE_ASN 입력).
    3. BGP 피어 IP 주소에 대해 터널 1의 Cloud Router에 대한 BGP IP 주소를 입력합니다(즉, GOOGLE_BGP_IP_0 입력).
  7. 로컬 네트워크 게이트웨이 구성을 검증하려면 페이지 하단에서 검토만들기를 클릭합니다.

  8. 검증이 통과하면 만들기를 클릭하여 로컬 네트워크 게이트웨이를 만듭니다.

두 번째 로컬 네트워크 게이트웨이를 만들려면 다음 단계를 수행합니다.

  1. Azure Portal에서 리소스, 서비스 및 문서 검색(G+/)local network gateway를 입력합니다.
  2. Marketplace 아래의 검색 결과에서 로컬 네트워크 게이트웨이를 선택합니다.
  3. 로컬 네트워크 게이트웨이 만들기 페이지의 기본 탭에서 로컬 네트워크 게이트웨이에 대해 다음 값을 지정합니다.

    1. 구독 목록에서 올바른 구독이 표시되는지 확인합니다.
    2. 리소스 그룹 목록에서 이 문서의 앞 부분에서 VNet에 대해 만든 것과 동일한 리소스 그룹을 선택합니다.
    3. 리전에 대해 VNet과 동일한 리전을 선택합니다.
    4. 이름에 대해 로컬 네트워크 게이트웨이의 이름(예: azure-to-google-locgateway2)을 입력합니다.
    5. 엔드포인트에 대해 IP 주소를 선택합니다.
    6. IP 주소 상자에 HA VPN의 INTERFACE1에 대한 IP 주소를 입력합니다(즉, HA_VPN_INT_1 입력).
    7. 주소 공간에 이 로컬 네트워크가 나타내는 네트워크의 주소 범위를 입력합니다.

    여러 주소 공간 범위를 추가할 수 있습니다. 여기에 지정하는 범위가 연결하려는 다른 네트워크의 범위와 겹치지 않도록 해야 합니다.

  4. 고급 탭에서 BGP 설정을 다음과 같이 구성합니다.

    1. BGP 설정 구성에 대해 를 선택합니다.
    2. 자율 시스템 번호(ASN)에 Cloud Router의 ASN을 입력합니다(즉, GOOGLE_ASN 입력).
    3. BGP 피어 IP 주소에 대해 터널 1의 Cloud Router에 대한 BGP IP 주소를 입력합니다(즉, GOOGLE_BGP_IP_1 입력).
  5. 로컬 네트워크 게이트웨이 구성을 검증하려면 페이지 하단에서 검토만들기를 클릭합니다.

  6. 검증이 통과하면 만들기를 클릭하여 로컬 네트워크 게이트웨이를 만듭니다.

2개의 VPN 연결 만들기

Azure에서 VPN 연결을 만들려면 Google Cloud에서 HA VPN 터널을 설정할 때 구성한 사전 공유 키 또는 SHARED_SECRET이 필요합니다.

  1. Azure Portal에서 활성-활성 VPN 게이트웨이 만들기에서 만든 활성-활성 VPN 게이트웨이를 찾습니다.
  2. 연결을 선택합니다.
  3. 연결 페이지 상단에서 +추가를 선택합니다.
  4. 연결 추가 페이지에서 첫 번째 연결에 대해 다음 값을 지정합니다.
    1. 이름에 연결 이름을 입력합니다(예: azure-vnet-to-google1).
    2. 연결 유형으로 사이트 간(IPsec)을 선택합니다.
    3. 로컬 네트워크 게이트웨이에 대해 앞에서 만든 첫 번째 로컬 네트워크 게이트웨이를 지정합니다(예: azure-to-google-locgateway1).
    4. 공유 키(PSK)에 대해 첫 번째 HA VPN 터널에 대해 구성한 공유 키를 지정합니다.
    5. BGP 사용을 선택합니다.
    6. IKE 프로토콜에서 IKEv2를 선택합니다.
    7. 확인을 클릭합니다.
    8. 연결 페이지에서 +추가를 선택하여 다음 값으로 두 번째 연결을 추가합니다.
    9. 이름에 연결 이름을 입력합니다(예: azure-vnet-to-google2).
    10. 연결 유형으로 사이트 간(IPsec)을 선택합니다.
    11. 로컬 네트워크 게이트웨이에 대해 앞에서 만든 두 번째 로컬 네트워크 게이트웨이를 지정합니다(예: azure-to-google-locgateway2).
    12. 공유 키(PSK)에 대해 두 번째 HA VPN 터널에 대해 구성한 공유 키를 지정합니다.
    13. BGP 사용을 선택합니다.
    14. IKE 프로토콜에서 IKEv2를 선택합니다.
    15. 확인을 클릭합니다.
  5. 연결 페이지에서 두 연결 상태가 연결됨으로 나열되는지 확인합니다.

구성 확인

Google Cloud에서 Cloud Router 구성을 먼저 검사한 후 HA VPN 터널 상태를 확인하여 HA VPN 구성을 확인할 수 있습니다.

  1. Cloud Shell에서 Cloud Router에서 선택한 BGP 피어링 IP 주소를 나열합니다.

    gcloud compute routers get-status ROUTER_NAME \
       --region=REGION \
       --format='flattened(result.bgpPeerStatus[].name,
         result.bgpPeerStatus[].ipAddress, result.bgpPeerStatus[].peerIpAddress)'

    명령어가 다음 예시와 비슷하게 표시됩니다.

    gcloud compute routers get-status cloud-router \
        --region us-central1 \
    --format='flattened(result.bgpPeerStatus[].name,result.bgpPeerStatus[].ipAddress,result.bgpPeerStatus[].peerIpAddress)'
    

    2개의 HA VPN 터널(색인 0 및 색인 1)을 관리하는 Cloud Router에 대한 예상 출력은 다음 예시와 비슷합니다.

    result.bgpPeerStatus[0].ipAddress:     169.254.21.2
    result.bgpPeerStatus[0].name:          azure-bgp-peer-1
    result.bgpPeerStatus[0].peerIpAddress: 169.254.21.1
    result.bgpPeerStatus[1].ipAddress:     169.254.22.2
    result.bgpPeerStatus[1].name:          azure-bgp-peer-2
    result.bgpPeerStatus[1].peerIpAddress: 169.254.22.1
    
  2. Cloud Shell에서 첫 번째 HA VPN 터널의 상태를 확인합니다.

    gcloud compute vpn-tunnels describe TUNNEL_NAME_IF0 \
       --region=REGION

    다음을 바꿉니다.

    • TUNNEL_NAME_IF0: 구성한 첫 번째 HA VPN 게이트웨이 인터페이스와 연결된 터널입니다.
    • REGION: HA VPN 게이트웨이를 배포한 리전입니다.

    명령어가 다음 예시와 비슷하게 표시됩니다.

    gcloud compute vpn-tunnels describe azure-tunnel-1 -–region=us-central1
    

    터널에 대한 예상 출력은 다음 예시와 비슷합니다.

    creationTimestamp: '2022-09-28T17:13:21.592-07:00'
    description: ''
    detailedStatus: Tunnel is up and running.
    id: '278561789474069966'
    ikeVersion: 2
    kind: compute#vpnTunnel
    localTrafficSelector:
    -   0.0.0.0/0
    name: azure-tunnel-1
    peerExternalGateway: https://www.googleapis.com/compute/v1/projects/PROJECT-ID/global/externalVpnGateways/azure-peer-gw
    peerExternalGatewayInterface: 0
    peerIp: 203.0.113.1
    region: https://www.googleapis.com/compute/v1/projects/PROJECT-ID/regions/us-central1
    remoteTrafficSelector:
    -   0.0.0.0/0
    router: https://www.googleapis.com/compute/v1/projects/PROJECT-ID/regions/us-central1/routers/cloud-router
    selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT-ID/regions/us-central1/vpnTunnels/azure-tunnel-1
    sharedSecret: '*************'
    sharedSecretHash: ALDZGgSMUxj8KFahMoG_L0Fz9paz
    status: ESTABLISHED
    vpnGateway: https://www.googleapis.com/compute/v1/projects/PROJECT-ID/regions/us-central1/vpnGateways/ha-vpn-gw-a
    vpnGatewayInterface: 0
    
  3. Cloud Shell에서 두 번째 HA VPN 터널의 상태를 확인합니다.

    gcloud compute vpn-tunnels describe TUNNEL_NAME_IF1 \
       --region=REGION

    다음을 바꿉니다.

    • TUNNEL_NAME_IF1: 구성한 두 번째 HA VPN 게이트웨이 인터페이스와 연결된 터널입니다.
    • REGION: HA VPN 게이트웨이를 배포한 리전입니다.

    명령어가 다음 예시와 비슷하게 표시됩니다.

    gcloud compute vpn-tunnels describe azure-tunnel-2 --region=us-central1
    

    터널에 대한 예상 출력은 다음 예시와 비슷합니다.

    creationTimestamp: '2022-09-28T17:13:21.592-07:00'
    description: ''
    detailedStatus: Tunnel is up and running.
    id: '5665972275117479944'
    ikeVersion: 2
    kind: compute#vpnTunnel
    localTrafficSelector:
    -   0.0.0.0/0
    name: azure-tunnel-2
    peerExternalGateway: https://www.googleapis.com/compute/v1/projects/PROJECT-ID/global/externalVpnGateways/azure-peer-gw
    peerExternalGatewayInterface: 1
    peerIp: 203.0.113.2
    region: https://www.googleapis.com/compute/v1/projects/PROJECT-ID/regions/us-central1
    remoteTrafficSelector:
    -   0.0.0.0/0
    router: https://www.googleapis.com/compute/v1/projects/PROJECT-ID/regions/us-central1/routers/cloud-router
    selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT-ID/regions/us-central1/vpnTunnels/azure-tunnel-2
    sharedSecret: '*************'
    sharedSecretHash: ALDZGgSMUxj8KFahMoG_L0Fz9ddd
    

연결 테스트

HA VPN 연결을 테스트하려면 먼저 각 터널 측에서 VM을 만들어야 합니다.

그런 후 Google Cloud에서 Azure 네트워크 서브넷의 인바운드 ICMP 트래픽을 허용하는 방화벽 규칙이 정의되어 있는지 확인해야 합니다. VM 및 방화벽 규칙이 준비되었으면 ping을 사용하여 연결을 테스트하고 iperf를 사용하여 대역폭을 테스트할 수 있습니다.

  1. 핑 요청을 테스트하기 위해 터널의 양 측면에서 테스트 VM을 만듭니다.

    또한 Virtual Private Cloud에 사용된 서브넷 프리픽스로부터 인바운드 트래픽을 허용하도록 Azure 네트워크 방화벽을 구성해야 합니다.

  2. Google Cloud에서 Azure VPN의 인바운드 ICMP 트래픽을 허용하는 방화벽 규칙을 구성합니다.

    gcloud compute firewall-rules create RULE_NAME \
        --network NETWORK \
        --direction ingress \
        --action allow \
        --source-ranges AZURE_VNET_RANGE \
        --rules icmp \

    AZURE_VNET_RANGE를 Azure VNet에 할당된 IP 주소 범위로 바꿉니다.

    명령어가 다음 예시와 비슷하게 표시됩니다.

    gcloud compute firewall-rules create allow-azure-icmp \
      --network google-to-azure-vpc \
      --direction ingress \
      --action allow \
      --source-ranges 10.0.0.0/16 \
      --rules icmp
    
  3. ping 명령어를 사용하여 연결을 테스트합니다.

  4. iperf를 사용하여 테스트 머신 간에 대역폭을 측정합니다.

삭제

이 튜토리얼을 진행하는 동안 만든 Google Cloud 및 Azure 리소스를 삭제합니다.

Google Cloud 프로젝트 삭제

이 튜토리얼에서 사용한 리소스의 비용이 Google Cloud 계정에 청구되지 않도록 하려면 프로젝트를 삭제하면 됩니다.

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Azure 리소스 그룹 삭제

VNet을 만들 때 생성한 Azure Manager 리소스 그룹을 삭제합니다. 이 튜토리얼에서 예시 리소스 그룹의 이름은 azure-to-google-resgroup입니다.

자세한 내용은 Azure Resource Manager 리소스 그룹 및 리소스 삭제를 참조하세요.

다음 단계