다음을 통해 공유


서브넷 피어링을 구성하는 방법

서브넷 피어링은 전체 가상 네트워크 주소 공간이 아닌 서브넷 주소 공간을 연결하여 두 개의 가상 네트워크를 연결하는 방법을 말합니다. 이를 통해 사용자는 로컬 및 원격 가상 네트워크에서 피어링에 참가할 서브넷을 지정할 수 있습니다.

서브넷 피어링은 가상 네트워크 피어링을 기반으로 한 추가적인 유연성입니다. 사용자는 가상 네트워크에서 피어링해야 하는 특정 서브넷을 선택하는 옵션을 가져옵니다. 사용자는 피어링하려는 가상 네트워크의 서브넷 목록을 지정하거나 입력할 수 있습니다. 이와 대비적으로, 일반적인 가상 네트워크 피어링에서는 가상 네트워크 전반의 전체 주소 공간/서브넷이 피어링됩니다.

서브넷 피어링을 사용할 때 다음과 같은 제한 사항이 적용됩니다.

  • 구독 허용 목록: 이 기능을 사용하려면 서브넷 피어링을 구성하려는 구독을 등록해야 합니다. 구독을 등록하려면 이 양식을 작성합니다.

  • 사용 가능 여부: 이 기능은 모든 지역에서 사용할 수 있지만 Terraform, PowerShell, API, CLI 및 ARM 템플릿을 통해서만 구성할 수 있습니다.

필수 조건

  • 활성 구독이 있는 Azure 계정. 무료로계정을 만드세요.

  • 위에 언급된 프로세스에 따라 구독을 등록하여 해당 기능에 액세스할 수 있는 구독을 허용 목록에 추가합니다.

서브넷 피어링 구성

  • 방법 문서대로 하려면 Azure CLI 버전 2.31.0 이상이 필요합니다. Azure Cloud Shell을 사용하는 경우 최신 버전이 이미 설치되어 있습니다.

기존 가상 네트워크 피어링 만들기 프로세스에서 몇 가지 새로운 선택적 매개 변수가 도입됩니다. 각각에 대한 설명/참조는 다음과 같습니다.

새로운 선택적 매개 변수가 도입되었습니다.

  • --peer-complete-vnet
    이 매개 변수를 사용하면 사용자가 서브넷 피어링을 선택하는 옵션을 사용할 수 있습니다. 기본적으로 이 매개 변수의 값은 true로 설정되어 있으며, 이는 전체 가상 네트워크(모든 주소 공간/서브넷)가 피어링됨을 의미합니다. 서브넷 피어링을 사용하려면 이 매개 변수를 false로 설정해야 합니다.
    허용되는 값: 0, 1, f, false, n, no, t, true, y, yes
    기본값: True

  • --local-subnet-names
    이 매개 변수를 사용하면 서브넷 피어링이 사용하도록 설정된 경우 사용자가 원격 서브넷과 피어링하려는 로컬 서브넷 이름을 입력할 수 있습니다. "peer-complete-vnet" 매개 변수를 0으로 설정합니다.

  • --remote-subnet-names
    이 매개 변수를 사용하면 서브넷 피어링이 "peer-complete-vnet" 매개 변수를 0으로 설정하여 사용하도록 설정된 경우 로컬 서브넷과 피어링하려는 원격 서브넷 이름을 사용자가 입력할 수 있습니다.

  • --enable-only-ipv6
    이 매개 변수를 사용하면 사용자는 IPv6 주소 공간을 통해서만 서브넷 피어링을 구성하는 옵션을 사용할 수 있습니다(이중 스택 서브넷의 경우). 기본적으로 이 매개 변수의 값은 false로 설정됩니다. 피어링은 기본적으로 IPv4 주소를 통해 수행됩니다. true로 설정하면 이중 스택 서브넷에서 IPv6을 통해 피어링이 수행됩니다.
    허용되는 값: 0, 1, f, false, n, no, t, true, y, yes

az network vnet peering create --name
                               --remote-vnet
                               --resource-group
                               --vnet-name
                               [--allow-forwarded-traffic {0, 1, f, false, n, no, t, true, y, yes}]
                               [--allow-gateway-transit {0, 1, f, false, n, no, t, true, y, yes}]
                               [--allow-vnet-access {0, 1, f, false, n, no, t, true, y, yes}]
                               [--no-wait {0, 1, f, false, n, no, t, true, y, yes}]
                               [--use-remote-gateways {0, 1, f, false, n, no, t, true, y, yes}]
	                           [--peer-complete-vnet {0, 1(default), f, false, n, no, t, true, y, yes}]
                               [--enable-only-ipv6 {0(default), 1, f, false, n, no, t, true, y, yes}]  
                               [--local-subnet-names] 
                               [--remote-subnet-names] 

  1. az group create를 사용하여 eastus2 위치에 test-rg라는 리소스 그룹을 만듭니다.

    az group create \
        --name test-rg \
        --___location eastus2
    
  2. az network vnet create를 사용하여 두 개의 가상 네트워크 vnet-1과 vnet-2를 만듭니다.

    az network vnet create \
        --name vnet-1 \
        --resource-group test-rg \
        --___location eastus2 \
        --address-prefix 10.0.0.0/16 && \
    az network vnet create \
        --name vnet-2 \
        --resource-group test-rg \
        --___location eastus2 \
        --address-prefix 10.1.0.0/16
    
  3. 여러 접두사가 있는 서브넷을 만들려면 az network vnet subnet create를 사용합니다.

    az network vnet subnet create \
    --name subnet-1 \
    --resource-group test-rg \
    --vnet-name vnet-1 \
    --address-prefix 10.0.1.0/24 && \
    az network vnet subnet create \
        --name subnet-2 \
        --resource-group test-rg \
        --vnet-name vnet-1 \
        --address-prefix 10.0.2.0/24 && \
    az network vnet subnet create \
        --name subnet-3 \
        --resource-group test-rg \
        --vnet-name vnet-2 \
        --address-prefix 10.1.1.0/24 && \
    az network vnet subnet create \
        --name subnet-4 \
        --resource-group test-rg \
        --vnet-name vnet-2 \
        --address-prefix 10.1.2.0/24
    
  4. 필요한 서브넷을 만든 후, 전체 가상 네트워크를 피어링하는 대신 vnet-1에서 subnet-1만 연결하고 vnet-2에서 subnet-3만 연결하려고 한다고 가정해 보겠습니다. 이를 위해 위에 설명된 선택적 매개 변수를 사용합니다.
    이를 위해 선택적 매개 변수를 사용하여 가상 네트워크 피어링 만들기 명령을 실행합니다.

    az network vnet peering create --name vnet-1_to_vnet-2
                                   --resource-group test-rg
                                   --vnet-name vnet-1
                                   --remote-vnet vnet-2
                                   --allow-forwarded-traffic 
                                   --allow-gateway-transit 
                                   --allow-vnet-access 
                                   --peer-complete-vnet false
                                   --local-subnet-names subnet-1
                                   --remote-subnet-names subnet-3
    az network vnet peering create --name vnet-2_to_vnet-1
                                   --resource-group test-rg
                                   --vnet-name vnet-2
                                   --remote-vnet vnet-1
                                   --allow-forwarded-traffic 
                                   --allow-gateway-transit 
                                   --allow-vnet-access 
                                   --peer-complete-vnet false
                                   --local-subnet-names subnet-3
                                   --remote-subnet-names subnet-1
    

    피어링에 새 서브넷 추가

    az network vnet peering update --name vnet-1_to_vnet-2
                                   --resource-group test-rg
                                   --vnet-name vnet-1
                                   --local-subnet-names subnet-1 subnet-2
    az network vnet peering update --name vnet-2_to_vnet-1
                                   --resource-group test-rg
                                   --vnet-name vnet-2
                                   --remote-subnet-names subnet-3 subnet-4
    

    피어링에서 서브넷 제거

    az network vnet peering update --name vnet-1_to_vnet-2
                                   --resource-group test-rg
                                   --vnet-name vnet-1
                                   --local-subnet-names subnet-1
    az network vnet peering update --name vnet-2_to_vnet-1
                                   --resource-group test-rg
                                   --vnet-name vnet-2
                                   --remote-subnet-names subnet-3
    

    피어링 동기화

    az network vnet peering sync --name vnet-1_to_vnet-2
                                 --resource-group test-rg
                                 --vnet-name vnet-1
    az network vnet peering sync --name vnet-2_to_vnet-1
                                 --resource-group test-rg
                                 --vnet-name vnet-2
    

    피어링 표시

    az network vnet peering show --name vnet-1_to_vnet-2
                                 --resource-group test-rg
                                 --vnet-name vnet-1
    az network vnet peering show --name vnet-2_to_vnet-1
                                 --resource-group test-rg
                                 --vnet-name vnet-2
    

서브넷 피어링 검사 및 제한 사항

다음 다이어그램은 서브넷 피어링을 구성하는 동안 수행되는 검사와 현재 제한 사항을 보여 줍니다.

서브넷 피어링을 보여 주는 다이어그램.

  1. 참가 서브넷은 고유해야 하고 고유한 주소 공간에 속해야 합니다.

    • 예를 들어, 가상 네트워크 A와 가상 네트워크 C의 피어링(그림에서 검은색 화살표로 표시)에서 가상 네트워크 A는 가상 네트워크 C의 서브넷 중 어느 하나와도 서브넷 1, 서브넷 2, 서브넷 3을 통해 서브넷 피어링을 할 수 없습니다. 가상 네트워크 A의 이러한 서브넷은 가상 네트워크 C에도 있는 10.1.0.0/16 주소 공간에 속하기 때문입니다.
    • 그러나 가상 네트워크 A의 서브넷 4(10.0.1.0/24)는 가상 네트워크 C(10.6.1.0/24)의 서브넷 5와 서브넷 피어링할 수 있습니다. 이러한 서브넷은 가상 네트워크 전체에서 고유하며 가상 네트워크 전체에서 고유한 주소 공간에 속합니다. 서브넷 4는 가상 네트워크 A의 10.0.0.0/16 주소 공간에 속하고, 서브넷 5는 가상 네트워크 C의 10.6.0.0/16 주소 공간에 속합니다.
  2. 두 가상 네트워크 사이에는 피어링 링크가 하나만 있을 수 있습니다. 피어링 링크에 서브넷을 추가하거나 제거하려면 동일한 피어링 링크를 업데이트해야 합니다. 서브넷 집합 간의 다중 배타적 피어링은 불가능합니다.
    지정된 피어링 연결 종류는 변경할 수 없습니다. 가상 네트워크 A와 가상 네트워크 B 사이에 가상 네트워크 피어링이 있고 사용자가 이를 서브넷 피어링으로 변경하려는 경우, 기존 가상 네트워크 피어링 링크를 삭제하고 서브넷 피어링에 필요한 매개 변수를 사용하여 새로운 피어링을 만들어야 합니다. 그 반대의 경우도 마찬가지입니다.

  3. 피어링 링크에 포함될 수 있는 서브넷 수는 400 이하여야 합니다(로컬 및 원격 쪽 각각에서 200개로 제한).

    • 예를 들어, 가상 네트워크 A와 가상 네트워크 B의 피어링 링크(파란색 화살표로 표시)에서 피어링에 참가하는 서브넷의 총 수는 4개(가상 네트워크 A 쪽에서 2개, 가상 네트워크 B 쪽에서 2개)입니다. 이 숫자는 <=400이어야 합니다.
  4. 현재 릴리스(기능은 구독 플래그 뒤에 유지됨)에서는, 피어링되지 않은 서브넷에서 피어링된 서브넷으로의 전달 경로가 존재함 - 현재 시나리오에서 가상 네트워크 A와 가상 네트워크 B가 피어링되고, 가상 네트워크 A 측의 서브넷 2가 피어링되지 않았더라도 가상 네트워크 B의 서브넷 1과 서브넷 2에 대한 경로는 여전히 존재합니다.

    • 가상 네트워크 A와 가상 네트워크 B에 대한 서브넷 피어링에서 고객은 가상 네트워크 A의 서브넷 1과 서브넷 3만 원격 가상 네트워크 B의 서브넷 1과 서브넷 2로 가는 경로를 가질 것으로 예상합니다. 그러나 피어링되지 않은 로컬 쪽 가상 네트워크 A의 서브넷 2와 서브넷 4도 원격 쪽(가상 네트워크 B)의 서브넷 1과 서브넷 2로 가는 경로를 가지고 있습니다. 즉, 피어링되지 않은 서브넷은 피어링된 서브넷의 대상 노드로 패킷을 보낼 수 있지만, 패킷은 삭제되어 가상 머신에 도달하지 못합니다.

    • 사용자는 참가 서브넷에 NSG를 적용하여 피어링된 서브넷/주소 공간에서만 트래픽을 허용하는 것이 좋습니다. 이런 제한 사항은 GA 릴리스 이후에 제거될 예정입니다.

  5. 서브넷 피어링 및 AVNM

    • 연결된 그룹
      두 개의 가상 네트워크가 '연결된 그룹'에 연결되어 있고, 이 두 가상 네트워크에 서브넷 피어링이 구성된 경우, 서브넷 피어링이 우선시되고 피어링되지 않은 서브넷 간의 연결이 끊어집니다.
    • AVNM 연결 구성
      현재 AVNM은 가상 네트워크 피어링과 서브넷 피어링을 구분하지 못합니다. 가상 네트워크 A와 가상 네트워크 B 사이에 서브넷 피어링이 존재하고 나중에 AVNM 사용자가 일부 AVNM 연결 구성(허브 및 스포크 배포)을 통해 가상 네트워크 A와 가상 네트워크 B 사이에 가상 네트워크 피어링을 설정하려고 시도하는 경우 AVNM은 가상 네트워크 A와 가상 네트워크 B 사이에 피어링이 이미 존재한다고 가정하고 새로운 피어링 요청을 무시합니다. AVNM 및 서브넷 피어링을 사용하는 동안 이러한 상충 시나리오에서는 사용자가 주의를 기울이는 것이 좋습니다.

다음 단계

서브넷 피어링을 사용하면 피어링이 필요 없는 서브넷에서 주소 공간을 다시 사용할 수 있으므로 IPv4 공간을 보다 효과적으로 보존할 수 있습니다. 또한 온-프레미스 환경의 게이트웨이를 통해 전체 가상 네트워크 주소 공간이 불필요하게 노출되는 것을 방지합니다. IPv6 전용 피어링을 사용하면 이중 스택 서브넷이나 IPv6 전용 서브넷에 대해 IPv6 전용 피어링을 추가로 구성할 수 있습니다. 이러한 기능을 살펴보시고 피드백이나 제안 사항이 있으시면 알려 주시기 바랍니다.

피어링에 대한 자세히 내용은 가상 네트워크 피어링을 참조하세요.