PowerShell을 사용하여 사이트 간 VPN 연결로 VNet 만들기

이 문서에서는 PowerShell을 사용하여 온-프레미스 네트워크에서 VNet으로 사이트 간 VPN 게이트웨이 연결을 만드는 방법을 보여 줍니다. 이 문서의 단계는 Resource Manager 배포 모델에 적용됩니다. 다른 배포 도구 또는 배포 모델을 사용하는 경우 다음 목록에서 별도의 옵션을 선택하여 이 구성을 만들 수도 있습니다.

사이트 간 VPN 게이트웨이 연결은 IPsec/IKE(IKEv1 또는 IKEv2) VPN 터널을 통해 온-프레미스 네트워크를 Azure 가상 네트워크에 연결하는 데 사용됩니다. 이 연결 유형은 할당된 외부 연결 공용 IP 주소를 갖고 있는 온-프레미스에 있는 VPN 디바이스를 필요로 합니다. VPN Gateway에 대한 자세한 내용은 VPN Gateway 정보를 참조하세요.

Diagram of site-to-site VPN Gateway cross-premises connections.

시작하기 전에

구성을 시작하기 전에 다음 기준을 충족하는지 확인합니다.

  • 호환되는 VPN 디바이스 및 이 디바이스를 구성할 수 있는 사람이 있는지 확인합니다. 호환되는 VPN 디바이스 및 디바이스 구성에 대한 자세한 내용은 VPN 디바이스 정보를 참조하세요.
  • VPN 디바이스에 대한 외부 연결 공용 IPv4 주소가 있는지 확인합니다.
  • 온-프레미스 네트워크에 있는 IP 주소 범위에 익숙하지 않은 경우 세부 정보를 제공할 수 있는 다른 사람의 도움을 받아야 합니다. 이 구성을 만들 때 Azure가 온-프레미스 위치에 라우팅할 IP 주소 범위 접두사를 지정해야 합니다. 온-프레미스 네트워크의 어떤 서브넷도 사용자가 연결하려는 가상 네트워크 서브넷과 중첩될 수 없습니다.

Azure PowerShell

이 문서에서는 PowerShell cmdlet을 사용합니다. cmdlet을 실행하려면 Azure Cloud Shell을 사용할 수 있습니다. Cloud Shell은 이 문서의 단계를 실행하는 데 무료로 사용할 수 있는 대화형 셸입니다. 공용 Azure 도구가 사전 설치되어 계정에서 사용하도록 구성되어 있습니다.

Cloud Shell을 열려면 코드 블록의 오른쪽 위 모서리에 있는 Cloudshell 열기를 선택하기만 하면 됩니다. 또한 https://shell.azure.com/powershell로 이동하여 별도의 브라우저 탭에서 Cloud Shell을 열 수도 있습니다. 복사를 선택하여 코드 블록을 복사하고 Cloud Shell에 붙여넣고 Enter 키를 선택하여 실행합니다.

또한 Azure PowerShell cmdlet을 컴퓨터에 로컬로 설치하고 실행할 수도 있습니다. PowerShell cmdlet은 자주 업데이트됩니다. 최신 버전을 설치하지 않은 경우 지침에 지정된 값이 실패할 수 있습니다. 컴퓨터에 설치된 Azure PowerShell 버전을 찾으려면 Get-Module -ListAvailable Az cmdlet을 사용하세요. 설치하거나 업데이트하려면 Azure PowerShell 모듈 설치를 참조하세요.

예제 값

이 문서의 예제에서는 다음 값을 사용합니다. 이러한 값을 사용하여 테스트 환경을 만들거나 이 값을 참조하여 이 문서의 예제를 보다 정확하게 이해할 수 있습니다.

#Example values

VnetName                = VNet1
ResourceGroup           = TestRG1
Location                = East US 
AddressSpace            = 10.1.0.0/16 
SubnetName              = Frontend 
Subnet                  = 10.1.0.0/24 
GatewaySubnet           = 10.1.255.0/27
LocalNetworkGatewayName = Site1
LNG Public IP           = <On-premises VPN device IP address> 
Local Address Prefixes  = 10.0.0.0/24, 20.0.0.0/24
Gateway Name            = VNet1GW
PublicIP                = VNet1GWPIP
Gateway IP Config       = gwipconfig1 
VPNType                 = RouteBased 
GatewayType             = Vpn 
ConnectionName          = VNet1toSite1

1. 가상 네트워크 및 게이트웨이 서브넷 만들기

가상 네트워크가 아직 없는 경우 만듭니다. 가상 네트워크를 만들 때 지정하는 주소 공간이 온-프레미스 네트워크에 있는 주소 공간과 겹치지 않는지 확인하세요.

참고 항목

이 VNet을 온-프레미스 위치에 연결하려면 온-프레미스 네트워크 관리자와 협의하여 이 가상 네트워크에 특별히 사용할 수 있는 IP 주소 범위를 만들어야 합니다. VPN 연결의 양쪽 모두에 중복 주소 범위가 있는 경우 트래픽이 예상대로 라우팅되지 않습니다. 또한 이 VNet을 다른 VNet에 연결하려면 주소 공간이 다른 VNet과 겹치면 안됩니다. 이에 따라 네트워크 구성을 적절히 계획하도록 주의해야 합니다.

게이트웨이 서브넷 정보

가상 네트워크 게이트웨이는 '게이트웨이 서브넷'이라는 특정 서브넷을 사용합니다. 게이트웨이 서브넷은 가상 네트워크를 구성할 때 지정하는 가상 네트워크 IP 주소 범위에 속합니다. 여기에는 가상 네트워크 게이트웨이 리소스 및 서비스에서 사용하는 IP 주소가 포함됩니다. Azure에서 게이트웨이 리소스를 배포하려면 서브넷의 이름을 'GatewaySubnet'으로 지정해야 합니다. 게이트웨이 리소스를 배포할 다른 서브넷은 지정할 수 없습니다. 'GatewaySubnet'이라는 서브넷이 없는 경우 VPN 게이트웨이를 만들면 실패합니다.

게이트웨이 서브넷을 만드는 경우 서브넷이 포함하는 IP 주소의 수를 지정합니다. 필요한 IP 주소의 수는 만들려는 VPN 게이트웨이 구성에 따라 다릅니다. 일부 구성에는 다른 구성보다 더 많은 IP 주소가 필요합니다. /27 또는 /28을 사용하는 게이트웨이 서브넷을 만드는 것이 좋습니다.

주소 공간이 서브넷과 겹치거나 서브넷이 가상 네트워크에 대한 주소 공간에 포함되지 않는다고 상술하는 오류가 표시되면 VNet 주소 범위를 확인합니다. 가상 네트워크에 대해 만든 주소 범위에 사용할 수 있는 IP 주소가 충분하지 않을 수 있습니다. 예를 들어 기본 서브넷이 전체 주소 범위를 포함하는 경우 추가 서브넷을 만들기 위한 IP 주소가 남아 있지 않습니다. 기존 주소 공간 내에서 서브넷을 조정하여 IP 주소를 확보하거나 추가 주소 범위를 지정하여 해당 범위에 속한 게이트웨이 서브넷을 만들 수 있습니다.

Important

게이트웨이 서브넷으로 작업할 때 NSG(네트워크 보안 그룹)를 게이트웨이 서브넷에 연결하지 마세요. 네트워크 보안 그룹을 이 서브넷에 연결하면 가상 네트워크 게이트웨이(VPN 및 ExpressRoute 게이트웨이)가 예상대로 작동하지 않을 수 있습니다. 네트워크 보안 그룹에 대한 자세한 내용은 네트워크 보안 그룹이란?을 참조하세요.

가상 네트워크 및 게이트웨이 서브넷 만들기

이 예제에서는 가상 네트워크 및 게이트웨이 서브넷을 만듭니다. 게이트웨이 서브넷을 추가해야 하는 가상 네트워크가 이미 있는 경우 이미 만든 가상 네트워크에 게이트웨이 서브넷을 추가하려면을 참조하세요.

리소스 그룹 만들기:

New-AzResourceGroup -Name TestRG1 -Location 'East US'

가상 네트워크를 만듭니다.

  1. 변수를 설정합니다.

    $subnet1 = New-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -AddressPrefix 10.1.255.0/27
    $subnet2 = New-AzVirtualNetworkSubnetConfig -Name 'Frontend' -AddressPrefix 10.1.0.0/24
    
  2. VNet을 만듭니다.

    New-AzVirtualNetwork -Name VNet1 -ResourceGroupName TestRG1 `
    -Location 'East US' -AddressPrefix 10.1.0.0/16 -Subnet $subnet1, $subnet2
    

이미 만든 가상 네트워크에 게이트웨이 서브넷을 추가하려면

이미 가상 네트워크가 있지만 게이트웨이 서브넷을 추가해야 하는 경우 이 섹션의 단계를 사용합니다.

  1. 변수를 설정합니다.

    $vnet = Get-AzVirtualNetwork -ResourceGroupName TestRG1 -Name VNet1
    
  2. 게이트웨이 서브넷을 만듭니다.

    Add-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -AddressPrefix 10.1.255.0/27 -VirtualNetwork $vnet
    
  3. 구성을 설정합니다.

    Set-AzVirtualNetwork -VirtualNetwork $vnet
    

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

LNG(로컬 네트워크 게이트웨이)는 일반적으로 온-프레미스 위치를 가리킵니다. 가상 네트워크 게이트웨이와 동일하지 않습니다. Azure가 참조할 수 있는 사이트 이름을 지정한 다음, 연결을 만들 온-프레미스 VPN 디바이스의 IP 주소를 지정합니다. 또한 VPN Gateway를 통해 VPN 디바이스로 라우팅될 IP 주소 접두사를 지정합니다. 사용자가 지정하는 주소 접두사는 온-프레미스 네트워크에 있는 접두사입니다. 온-프레미스 네트워크가 변경되면 이러한 접두사를 쉽게 업데이트할 수 있습니다.

다음 예제 중 하나를 선택합니다. 예제에 사용된 값은 다음과 같습니다.

  • GatewayIPAddress는 온-프레미스 VPN 디바이스의 IP 주소입니다.
  • AddressPrefix는 온-프레미스 주소 공간입니다.

단일 주소 접두사 예제

New-AzLocalNetworkGateway -Name Site1 -ResourceGroupName TestRG1 `
-Location 'East US' -GatewayIpAddress '23.99.221.164' -AddressPrefix '10.0.0.0/24'

여러 주소 접두사 예제

New-AzLocalNetworkGateway -Name Site1 -ResourceGroupName TestRG1 `
-Location 'East US' -GatewayIpAddress '23.99.221.164' -AddressPrefix @('20.0.0.0/24','10.0.0.0/24')

3. 공용 IP 주소 요청

VPN Gateway에는 공용 IP 주소가 있어야 합니다. 먼저 IP 주소 리소스를 요청하고, 가상 네트워크 게이트웨이를 만들 때 참조합니다. VPN Gateway가 생성될 때 IP 주소는 리소스에 동적으로 할당됩니다. 게이트웨이를 삭제하고 다시 만드는 경우에만 공용 IP 주소가 변경됩니다. VPN Gateway의 크기 조정, 다시 설정 또는 기타 내부 유지 관리/업그레이드 시에는 변경되지 않습니다.

가상 네트워크 VPN 게이트웨이에 대한 공용 IP 주소를 요청합니다.

$gwpip= New-AzPublicIpAddress -Name VNet1GWPIP -ResourceGroupName TestRG1 -Location 'East US' -AllocationMethod Static -Sku Standard

4. 게이트웨이 IP 주소 지정 구성 만들기

게이트웨이 구성은 사용할 공용 IP 주소 및 서브넷(‘GatewaySubnet’)을 정의합니다. 다음 예제를 사용하여 게이트웨이 구성을 만듭니다.

$vnet = Get-AzVirtualNetwork -Name VNet1 -ResourceGroupName TestRG1
$subnet = Get-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -VirtualNetwork $vnet
$gwipconfig = New-AzVirtualNetworkGatewayIpConfig -Name gwipconfig1 -SubnetId $subnet.Id -PublicIpAddressId $gwpip.Id

5. VPN 게이트웨이 만들기

가상 네트워크 VPN Gateway 만들기. 종종 선택한 게이트웨이 SKU에 따라 게이트웨이를 만드는 데 45분 이상 걸릴 수 있습니다. 이 예제에서는 다음 값이 사용됩니다.

  • 사이트 간 구성에 대한 -GatewayTypeVpn입니다. 게이트웨이 유형은 항상 구현하는 구성에 따라 다릅니다. 예를 들어 다른 게이트웨이 구성에 -GatewayType ExpressRoute가 필요할 수 있습니다.
  • -VpnType경로 기반(일부 설명서에서는 동적 게이트웨이라고도 함)이거나 정책 기반(일부 설명서에서는 고정 게이트웨이라고도 함)일 수 있습니다. VPN Gateway 형식에 대한 자세한 내용은 VPN Gateway 정보를 참조하세요.
  • 사용할 게이트웨이 SKU를 선택합니다. 특정 SKU에 대한 구성 제한이 있습니다. 자세한 내용은 게이트웨이 SKU를 참조하세요. -GatewaySku와 관련하여 VPN 게이트웨이를 만들 때 오류가 발생하면 최신 버전의 PowerShell cmdlet을 설치했는지 확인합니다.
New-AzVirtualNetworkGateway -Name VNet1GW -ResourceGroupName TestRG1 `
-Location 'East US' -IpConfigurations $gwipconfig -GatewayType Vpn `
-VpnType RouteBased -GatewaySku VpnGw2

6. VPN 디바이스 구성

온-프레미스 네트워크에 대한 사이트 간 연결에는 VPN 디바이스가 필요합니다. 이 단계에서는 VPN 디바이스를 구성합니다. VPN 디바이스를 구성할 때 다음 항목이 필요합니다.

  • 공유 키. 사이트 간 VPN 연결을 만들 때 지정하는 것과 동일한 공유 키입니다. 이 예제에서는 기본적인 공유 키를 사용합니다. 실제로 사용할 키는 좀 더 복잡하게 생성하는 것이 좋습니다.

  • 가상 네트워크 게이트웨이의 공용 IP 주소입니다. Azure Portal, PowerShell 또는 CLI를 사용하여 공용 IP 주소를 볼 수 있습니다. PowerShell을 사용하여 가상 네트워크 게이트웨이의 공용 IP 주소를 찾으려면 다음 예제를 사용합니다. 이 예제에서 VNet1GWPIP는 이전 단계에서 만든 공용 IP 주소 리소스의 이름입니다.

    Get-AzPublicIpAddress -Name VNet1GWPIP -ResourceGroupName TestRG1
    

VPN 디바이스 구성 스크립트를 다운로드하려면:

사용하는 VPN 디바이스에 따라 VPN 디바이스 구성 스크립트를 다운로드할 수 있습니다. 자세한 내용은 VPN 디바이스 구성 스크립트 다운로드를 참조하세요.

추가 구성 정보는 다음 링크를 참조하세요.

7. VPN 연결 생성

다음으로 가상 네트워크 게이트웨이와 VPN 디바이스 간에 사이트 간 VPN 연결을 만듭니다. 사용자 고유의 값으로 대체해야 합니다. 공유 키는 VPN 디바이스 구성에 사용한 값과 일치해야 합니다. 사이트 간 '-ConnectionType'은 IPsec입니다.

  1. 변수를 설정합니다.

    $gateway1 = Get-AzVirtualNetworkGateway -Name VNet1GW -ResourceGroupName TestRG1
    $local = Get-AzLocalNetworkGateway -Name Site1 -ResourceGroupName TestRG1
    
  2. 연결을 만듭니다.

    New-AzVirtualNetworkGatewayConnection -Name VNet1toSite1 -ResourceGroupName TestRG1 `
    -Location 'East US' -VirtualNetworkGateway1 $gateway1 -LocalNetworkGateway2 $local `
    -ConnectionType IPsec -SharedKey 'abc123'
    

잠시 후, 연결이 설정됩니다.

8. VPN 연결 확인

VPN 연결을 확인하는 몇 가지 방법이 있습니다.

‘-Debug’를 사용하거나 사용하지 않고 ‘Get-AzVirtualNetworkGatewayConnection’ cmdlet을 사용하여 연결이 성공했는지 확인할 수 있습니다.

  1. 일치하는 값을 구성하는 데 다음 cmdlet 예제를 사용합니다. 메시지가 표시되면 '모두' 실행하기 위해 A를 선택합니다. 예제에서 '-Name'은 테스트하려는 연결의 이름을 나타냅니다.

    Get-AzVirtualNetworkGatewayConnection -Name VNet1toSite1 -ResourceGroupName TestRG1
    
  2. cmdlet이 완료되면 값을 봅니다. 아래 예제에서는 연결 상태가 '연결됨'으로 표시되고 송/수신 바이트를 볼 수 있습니다.

    "connectionStatus": "Connected",
    "ingressBytesTransferred": 33509044,
    "egressBytesTransferred": 4142431
    

가상 컴퓨터에 연결하려면

VM에 대한 원격 데스크톱 연결을 만들어 가사 네트워크에 배포된 VM에 연결할 수 있습니다. 처음에 VM에 연결할 수 있는지 확인하는 가장 좋은 방법은 컴퓨터 이름이 아닌 개인 IP 주소를 사용하여 연결하는 것입니다. 이렇게 하면 연결할 수 있는지, 아니면 이름 확인이 제대로 구성되었는지를 테스트할 수 있습니다.

  1. 개인 IP 주소를 찾습니다. Azure Portal에서 VM의 속성을 살펴보거나 PowerShell을 사용하여 VM의 개인 IP 주소를 찾을 수 있습니다.

    • Azure Portal: Azure Portal에서 VM을 찾습니다. VM 속성을 봅니다. 개인 IP 주소가 나열됩니다.

    • PowerShell: 예제를 사용하여 리소스 그룹의 VM 및 개인 IP 주소 목록을 봅니다. 이 예제는 수정하지 않고 그냥 사용하면 됩니다.

      $VMs = Get-AzVM
      $Nics = Get-AzNetworkInterface | Where-Object VirtualMachine -ne $null
      
      foreach ($Nic in $Nics) {
      $VM = $VMs | Where-Object -Property Id -eq $Nic.VirtualMachine.Id
      $Prv = $Nic.IpConfigurations | Select-Object -ExpandProperty PrivateIpAddress
      $Alloc = $Nic.IpConfigurations | Select-Object -ExpandProperty PrivateIpAllocationMethod
      Write-Output "$($VM.Name): $Prv,$Alloc"
      }
      
  2. 가상 네트워크에 연결되어 있는지 확인합니다.

  3. 작업 표시줄의 검색 상자에 RDP 또는 원격 데스크톱 연결을 입력하여 원격 데스크톱 연결을 엽니다. 그런 다음 원격 데스크톱 연결을 선택합니다. PowerShell에서 mstsc 명령을 사용하여 원격 데스크톱 연결을 열 수도 있습니다.

  4. 원격 데스크톱 연결에서 VM의 개인 IP 주소를 입력합니다. 옵션 표시를 선택하여 추가 설정을 조정한 다음, 연결할 수 있습니다.

VPN 연결을 통해 VM에 연결하는 데 문제가 있는 경우 다음 사항을 확인합니다.

  • VPN 연결이 성공했는지 확인합니다.
  • VM의 개인 IP 주소에 연결하고 있는지 확인합니다.
  • 컴퓨터 이름이 아닌 개인 IP 주소를 사용하여 VM에 연결할 수 있으면 DNS를 올바르게 구성했는지 확인합니다. 이름 확인이 VM에서 작동하는 방법에 대한 자세한 내용은 VM에서 이름 확인을 참조하세요.

RDP 연결에 대한 자세한 내용은 VM에 대한 원격 데스크톱 연결 문제 해결을 참조하세요.

로컬 네트워크 게이트웨이에 대한 IP 주소 접두사를 수정하려면

온-프레미스 위치에 라우팅하려는 IP 주소 접두사를 변경하는 경우 로컬 네트워크 게이트웨이를 수정할 수 있습니다. 이러한 예제를 사용하는 경우 사용자 환경과 일치하도록 값을 수정합니다.

추가 주소 접두사를 추가하려면:

  1. LocalNetworkGateway에 대한 변수를 설정합니다.

    $local = Get-AzLocalNetworkGateway -Name Site1 -ResourceGroupName TestRG1
    
  2. 접두사를 수정합니다. 지정한 값은 이전 값을 덮어씁니다.

    Set-AzLocalNetworkGateway -LocalNetworkGateway $local `
    -AddressPrefix @('10.101.0.0/24','10.101.1.0/24','10.101.2.0/24')
    

주소 접두사를 제거하려면:

더 이상 필요하지 않은 접두사는 생략합니다. 이 예제에서는 접두사 10.101.2.0/24(이전 예제)가 더 이상 필요하지 않으므로 로컬 네트워크 게이트웨이를 업데이트하고 해당 접두사를 제외합니다.

  1. LocalNetworkGateway에 대한 변수를 설정합니다.

    $local = Get-AzLocalNetworkGateway -Name Site1 -ResourceGroupName TestRG1
    
  2. 업데이트된 접두사를 사용하는 게이트웨이를 설정합니다.

    Set-AzLocalNetworkGateway -LocalNetworkGateway $local `
    -AddressPrefix @('10.101.0.0/24','10.101.1.0/24')
    

로컬 네트워크 게이트웨이에 대한 IP 주소를 수정하려면

연결하려는 VPN 디바이스의 공용 IP 주소가 변경된 경우 해당 변경 내용을 반영하도록 로컬 네트워크 게이트웨이를 수정해야 합니다. 이 값을 수정할 때 주소 접두사를 함께 수정할 수도 있습니다. 현재 설정을 덮어쓰려면 로컬 네트워크 게이트웨이의 기존 이름을 사용해야 합니다. 다른 이름을 사용하면 기존 게이트웨이를 덮어쓰지 않고 새 로컬 네트워크 게이트웨이를 만들게 됩니다.

New-AzLocalNetworkGateway -Name Site1 `
-Location "East US" -AddressPrefix @('10.101.0.0/24','10.101.1.0/24') `
-GatewayIpAddress "5.4.3.2" -ResourceGroupName TestRG1

게이트웨이 연결 삭제

연결의 이름을 모르는 경우 ‘Get-AzVirtualNetworkGatewayConnection’ cmdlet을 사용하여 찾을 수 있습니다.

Remove-AzVirtualNetworkGatewayConnection -Name VNet1toSite1 `
-ResourceGroupName TestRG1

다음 단계