PowerShell을 사용하여 가상 네트워크 피어링으로 가상 네트워크 연결

가상 네트워크 피어링을 사용하여 가상 네트워크를 서로 연결할 수 있습니다. 가상 네트워크가 피어링되면 두 가상 네트워크에 있는 리소스가 같은 가상 네트워크에 있는 리소스인 것처럼 같은 대기 시간 및 대역폭으로 서로 통신할 수 있습니다. 이 문서에서는 다음 방법을 설명합니다.

  • 두 가상 네트워크 만들기
  • 가상 네트워크 피어링을 사용하여 두 가상 네트워크 연결
  • 각 가상 네트워크에 VM(가상 머신) 배포
  • VM 간 통신

Azure 구독이 없는 경우 시작하기 전에 체험 계정을 만듭니다.

Azure Cloud Shell

Azure는 브라우저를 통해 사용할 수 있는 대화형 셸 환경인 Azure Cloud Shell을 호스트합니다. Cloud Shell에서 Bash 또는 PowerShell을 사용하여 Azure 서비스 작업을 수행할 수 있습니다. 로컬 환경에 아무 것도 설치할 필요 없이 Azure Cloud Shell의 미리 설치된 명령을 사용하여 이 문서의 코드를 실행할 수 있습니다.

Azure Cloud Shell을 시작하려면 다음을 수행합니다.

옵션 예제/링크
코드 또는 명령 블록의 오른쪽 상단에서 시도를 선택합니다. 시도를 선택해도 코드 또는 명령이 Cloud Shell에 자동으로 복사되지 않습니다. Azure Cloud Shell에 대한 사용 예제를 보여 주는 스크린샷
https://shell.azure.com으로 이동하거나 Cloud Shell 시작 단추를 선택하여 브라우저에서 Cloud Shell을 엽니다. Azure Cloud Shell을 시작하는 단추입니다.
Azure Portal의 오른쪽 위에 있는 메뉴 모음에서 Cloud Shell 단추를 선택합니다. Azure Portal의 Cloud Shell 단추를 보여 주는 스크린샷

Azure Cloud Shell을 사용하려면:

  1. Cloud Shell을 시작합니다.

  2. 코드 블록(또는 명령 블록)에서 복사 단추를 선택하여 코드 또는 명령을 복사합니다.

  3. Windows 및 Linux에서 Ctrl+Shift+V를 선택하거나 macOS에서 Cmd+Shift+V를 선택하여 코드 또는 명령을 Cloud Shell 세션에 붙여넣습니다.

  4. Enter를 선택하여 코드 또는 명령을 실행합니다.

PowerShell을 로컬로 설치하고 사용하도록 선택하는 경우, 이 문서에는 Azure PowerShell 모듈 버전 1.0.0 이상이 필요합니다. 설치되어 있는 버전을 확인하려면 Get-Module -ListAvailable Az을 실행합니다. 업그레이드해야 하는 경우 Azure PowerShell 모듈 설치를 참조하세요. 또한 PowerShell을 로컬로 실행하는 경우 Connect-AzAccount를 실행하여 Azure와 연결해야 합니다.

가상 네트워크 만들기

가상 네트워크를 만들기 전에 가상 네트워크에 대한 리소스 그룹과 이 아티클에서 만든 다른 모든 리소스를 만들어야 합니다. New-AzResourceGroup을 사용하여 리소스 그룹을 만듭니다. 다음 예제에서는 eastus 위치에 myResourceGroup이라는 리소스 그룹을 만듭니다.

New-AzResourceGroup -ResourceGroupName myResourceGroup -Location EastUS

New-AzVirtualNetwork를 사용하여 가상 네트워크를 만듭니다. 다음 예제에서는 주소 접두사 10.0.0.0/16을 사용하는 myVirtualNetwork1이라는 가상 네트워크를 만듭니다.

$virtualNetwork1 = New-AzVirtualNetwork `
  -ResourceGroupName myResourceGroup `
  -Location EastUS `
  -Name myVirtualNetwork1 `
  -AddressPrefix 10.0.0.0/16

Add-AzVirtualNetworkSubnetConfig를 사용하여 서브넷 구성을 만듭니다. 다음 예제에서는 10.0.0.0/24 주소 접두사가 포함된 서브넷 구성을 만듭니다.

$subnetConfig = Add-AzVirtualNetworkSubnetConfig `
  -Name Subnet1 `
  -AddressPrefix 10.0.0.0/24 `
  -VirtualNetwork $virtualNetwork1

Set-AzVirtualNetwork를 사용하여 가상 네트워크에 서브넷 구성을 쓰면 서브넷이 만들어집니다.

$virtualNetwork1 | Set-AzVirtualNetwork

10.1.0.0/16 주소 접두사 및 서브넷 1개를 사용하여 가상 네트워크를 만듭니다.

# Create the virtual network.
$virtualNetwork2 = New-AzVirtualNetwork `
  -ResourceGroupName myResourceGroup `
  -Location EastUS `
  -Name myVirtualNetwork2 `
  -AddressPrefix 10.1.0.0/16

# Create the subnet configuration.
$subnetConfig = Add-AzVirtualNetworkSubnetConfig `
  -Name Subnet1 `
  -AddressPrefix 10.1.0.0/24 `
  -VirtualNetwork $virtualNetwork2

# Write the subnet configuration to the virtual network.
$virtualNetwork2 | Set-AzVirtualNetwork

가상 네트워크 피어링

Add-AzVirtualNetworkPeering을 사용하여 피어링을 만듭니다. 다음 예제에서는 myVirtualNetwork1myVirtualNetwork2에 피어링합니다.

Add-AzVirtualNetworkPeering `
  -Name myVirtualNetwork1-myVirtualNetwork2 `
  -VirtualNetwork $virtualNetwork1 `
  -RemoteVirtualNetworkId $virtualNetwork2.Id

이전 명령 실행 후 반환된 출력에서 PeeringStateInitiated로 표시됩니다. myVirtualNetwork2에서 myVirtualNetwork1으로 피어링을 만들 때까지 해당 피어링은 Initiated 상태를 유지합니다. myVirtualNetwork2에서 myVirtualNetwork1으로 피어링을 만듭니다.

Add-AzVirtualNetworkPeering `
  -Name myVirtualNetwork2-myVirtualNetwork1 `
  -VirtualNetwork $virtualNetwork2 `
  -RemoteVirtualNetworkId $virtualNetwork1.Id

이전 명령 실행 후 반환된 출력에서 PeeringStateConnected로 표시됩니다. 또한 Azure에서 myVirtualNetwork1-myVirtualNetwork2 피어링의 피어링 상태가 Connected로 변경되었습니다. Get-AzVirtualNetworkPeering을 사용하여 myVirtualNetwork1-myVirtualNetwork2 피어링에 대한 피어링 상태가 Connected로 변경되었는지 확인합니다.

Get-AzVirtualNetworkPeering `
  -ResourceGroupName myResourceGroup `
  -VirtualNetworkName myVirtualNetwork1 `
  | Select PeeringState

두 가상 네트워크의 피어링에 대한 PeeringStateConnected가 될 때까지, 한 가상 네트워크의 리소스는 다른 가상 네트워크의 리소스와 통신할 수 없습니다.

가상 머신 만들기

이후 단계에서 서로 통신할 수 있도록 각 가상 네트워크에서 VM을 만듭니다.

첫 번째 VM 만들기

New-AzVM으로 VM을 만듭니다. 다음 예제에서는 myVirtualNetwork1 가상 네트워크에 이름이 myVm1인 VM을 만듭니다. -AsJob 옵션은 백그라운드에서 VM을 만들기 때문에 다음 단계를 계속 진행할 수 있습니다. 메시지가 나타나면 VM에 로그인할 사용자 이름과 암호를 입력합니다.

New-AzVm `
  -ResourceGroupName "myResourceGroup" `
  -Location "East US" `
  -VirtualNetworkName "myVirtualNetwork1" `
  -SubnetName "Subnet1" `
  -ImageName "Win2016Datacenter" `
  -Name "myVm1" `
  -AsJob

두 번째 VM 만들기

New-AzVm `
  -ResourceGroupName "myResourceGroup" `
  -Location "East US" `
  -VirtualNetworkName "myVirtualNetwork2" `
  -SubnetName "Subnet1" `
  -ImageName "Win2016Datacenter" `
  -Name "myVm2"

VM을 만드는 데 몇 분이 걸립니다. Azure에서 VM을 만들고 출력을 PowerShell로 반환할 때까지 이후 단계를 계속하지 마세요.

참고 항목

Azure는 공용 IP 주소가 할당되지 않았거나 내부 기본 Azure Load Balancer의 백 엔드 풀에 있는 VM에 대한 기본 아웃바운드 액세스 IP를 제공합니다. 기본 아웃바운드 액세스 IP 메커니즘은 구성할 수 없는 아웃바운드 IP 주소를 제공합니다.

다음 이벤트 중 하나가 발생하면 기본 아웃바운드 액세스 IP가 사용하지 않도록 설정됩니다.

  • 공용 IP 주소가 VM에 할당됩니다.
  • VM은 아웃바운드 규칙 유무에 관계없이 표준 Load Balancer의 백 엔드 풀에 배치됩니다.
  • Azure NAT Gateway 리소스는 VM의 서브넷에 할당됩니다.

유연한 오케스트레이션 모드에서 가상 머신 확장 집합을 사용하여 만드는 VM에는 기본 아웃바운드 액세스 권한이 없습니다.

Azure의 아웃바운드 연결에 대한 자세한 내용은 Azure의 기본 아웃바운드 액세스아웃바운드 연결에 SNAT(원본 네트워크 주소 변환) 사용을 참조하세요.

VM 간 통신

인터넷에서 VM의 공용 IP 주소에 연결할 수 있습니다. Get-AzPublicIpAddress를 사용하여 VM의 공용 IP 주소를 반환합니다. 다음 예제에서는 myVm1 VM의 공용 IP 주소를 반환합니다.

Get-AzPublicIpAddress `
  -Name myVm1 `
  -ResourceGroupName myResourceGroup | Select IpAddress

다음 명령을 사용하여 로컬 컴퓨터에서 myVm1 VM과의 원격 데스크톱 세션을 만듭니다. <publicIpAddress>를 이전 명령에서 반환된 IP 주소로 바꿉니다.

mstsc /v:<publicIpAddress>

원격 데스크톱 프로토콜(.rdp) 파일이 마들어지고 컴퓨터에 다운로드된 후 열립니다. 사용자 이름과 암호를 입력(VM을 만들 때 입력한 자격 증명을 지정하기 위해 다른 옵션 선택을 선택한 다음, 다른 계정 사용을 선택해야 할 수도 있음)한 다음, 확인을 클릭합니다. 로그인 프로세스 중에 인증서 경고가 나타날 수 있습니다. 또는 계속을 클릭하여 연결을 진행합니다.

myVm1 VM에서 Windows 방화벽을 통해 ICMP(Internet Control Message Protocol)를 사용하도록 설정하면 이후 단계에서 PowerShell을 사용하여 myVm2에서 이 VM을 ping할 수 있습니다.

New-NetFirewallRule –DisplayName "Allow ICMPv4-In" –Protocol ICMPv4

이 문서에서는 VM 간 통신에 ping이 사용되지만, 프로덕션 배포에 Windows 방화벽을 통한 ICMP는 허용하지 않는 것이 좋습니다.

myVm2 VM에 연결하려면 myVm1 VM의 명령 프롬프트에서 다음 명령을 입력합니다.

mstsc /v:10.1.0.4

myVm1에서 ping을 사용하도록 설정했으므로 이제 myVm2 VM의 명령 프롬프트에서 IP 주소로 ping할 수 있습니다.

ping 10.0.0.4

4개의 응답을 받게 됩니다. myVm1myVm2에 대한 RDP 세션 연결을 모두 끊습니다.

리소스 정리

더 이상 필요하지 않은 경우 Remove-AzResourcegroup을 사용하여 리소스 그룹 및 그룹에 포함된 모든 리소스를 제거할 수 있습니다.

Remove-AzResourceGroup -Name myResourceGroup -Force

다음 단계

이 문서에서는 가상 네트워크 피어링을 사용하여 동일한 Azure 지역에 있는 두 네트워크를 연결하는 방법을 배웠습니다. 다른 지원되는 지역다른 Azure 구독에 있는 가상 네트워크를 피어링하고 피어링을 사용하여 허브 및 스포크 네트워크 디자인을 만들 수도 있습니다. 가상 네트워크 피어링에 대한 자세한 내용은 가상 네트워크 피어링 개요가상 네트워크 피어링 관리를 참조하세요.

VPN을 통해 자신의 컴퓨터를 가상 네트워크에 연결하고, 가상 네트워크 또는 피어링된 가상 네트워크의 리소스와 상호 작용할 수 있습니다. 가상 네트워크 문서에 설명된 많은 태스크를 완료하는 재사용이 가능한 스크립트는 스크립트 샘플을 참조하세요.