PowerShell을 사용하여 다양한 배포 모델에서 가상 네트워크 연결
이 아티클에서는 Resource Manager VNet에 클래식 VNet을 연결하여 별도의 배포 모델에 있는 리소스가 서로 통신하도록 허용하는 데 도움을 줍니다. 이 문서의 단계에서는 PowerShell을 사용합니다.
이 문서는 클래식(레거시) 배포 모델을 사용하여 만든 VNet이 이미 있고 이제 클래식 VNet을 최신 배포 모델을 사용하여 만든 다른 VNet에 연결하려는 고객을 위한 것입니다. 레거시 VNet이 아직 없는 경우 VNet 간 연결 만들기 문서를 대신 참조하세요.
아키텍처
클래식 VNet을 Resource Manager VNet에 연결하는 것은 VNet을 온-프레미스 사이트 위치에 연결하는 것과 유사합니다. 두 연결 유형 모두 VPN 게이트웨이를 사용하여 IPsec/IKE를 통한 보안 터널을 제공합니다. 다른 구독 및 다른 지역에 있는 VNet 간에 연결을 만들 수 있습니다. 게이트웨이가 동적이거나 경로 기반이면 온-프레미스 네트워크에 이미 연결된 VNet을 연결할 수도 있습니다. VNet 간 연결에 대한 자세한 내용은 VNet-VNet FAQ를 참조하세요.
이 구성에 대해 가상 네트워크 사이에 IPsec/IKE VPN 터널을 통해 VPN 게이트웨이 연결을 만듭니다. VNet 범위가 서로 간에 또는 연결된 로컬 네트워크와 겹치지 않는지 확인해야 합니다.
다음 테이블은 예제 VNet 및 로컬 사이트가 어떻게 정의되는지 보여줍니다.
Virtual Network | 주소 공간 | 지역 | 로컬 네트워크 사이트에 연결 |
---|---|---|---|
ClassicVNet | (10.1.0.0/16) | 미국 서부 | RMVNetSite(192.168.0.0/16) |
RMVNet | (192.168.0.0/16) | 미국 동부 | ClassicVNetSite(10.1.0.0/16) |
필수 조건
다음 단계에서는 각 VNet에 대한 동적 또는 경로 기반 게이트웨이를 구성하고 게이트웨이 간에 VPN 연결을 만드는 데 필요한 설정을 안내합니다. 이 구성은 고정 또는 정책 기반 게이트웨이를 지원하지 않습니다.
이 단계에서는 레거시 클래식 VNet과 Resource Manager VNet이 이미 만들어져 있다고 가정합니다.
VNet에 대한 주소 범위가 서로 겹치거나 게이트웨이가 연결되어 있는 다른 연결의 범위와 겹치지 않는지 확인합니다.
이 문서에서는 PowerShell을 사용합니다. Resource Manager 및 Service Management용 최신 PowerShell cmdlet을 둘 다 컴퓨터에 설치합니다.
Azure Cloud Shell 환경을 사용하여 몇 가지 PowerShell 명령을 수행할 수 있지만 연결을 올바르게 만들려면 두 버전의 cmdlet을 모두 설치해야 합니다.
Service Management(클래식) PowerShell cmdlet. Service Management cmdlet을 설치할 때 Azure 모듈의 클래식 버전을 설치하려면 실행 정책을 수정해야 할 수 있습니다.
자세한 내용은 Azure PowerShell을 설치 및 구성하는 방법을 참조하세요.
예제 설정
이러한 값을 사용하여 예제를 더 잘 이해할 수 있습니다.
클래식 VNet
VNet 이름 = ClassicVNet
리소스 그룹 = ClassicRG 위치 = 미국 서부
Virtual Network 주소 공간 = 10.1.0.0/16
Subnet1 = 10.1.0.0/24
GatewaySubnet = 10.1.255.0/27
로컬 네트워크 이름 = RMVNetSite
GatewayType = DynamicRouting
Resource Manager VNet
VNet 이름 = RMVNet
리소스 그룹 = RMRG
Virtual Network IP Address Spaces = 192.168.0.0/16
Subnet1 = 192.168.1.0/24
GatewaySubnet = 192.168.255.0/27
Location = East US
게이트웨이 공용 IP 이름 = rmgwpip
로컬 네트워크 게이트웨이 = ClassicVNetSite
Virtual Network Gateway name = RMGateway
게이트웨이 IP 주소 구성 = gwipconfig
클래식 VNet 구성
이 섹션에서는 이미 존재하는 클래식 VNet을 구성합니다. VNet에 게이트웨이가 이미 있는 경우 게이트웨이가 경로 기반인지 확인한 다음, 다음 섹션으로 진행합니다. 게이트웨이가 경로 기반이 아닌 경우 다음 단계를 진행하기 전에 게이트웨이를 삭제합니다. 나중에 새 게이트웨이를 만들 수 있습니다.
1. 네트워크 구성 파일 다운로드
관리자 권한으로 PowerShell 콘솔에서 Azure 계정에 로그인합니다. 다음 cmdlet은 Azure 계정에 대한 로그인 자격 증명을 입력하라는 메시지를 표시합니다. 로그인하면 Azure PowerShell에서 사용할 수 있도록 계정 설정이 다운로드됩니다. 이 섹션에서는 클래식 SM(Service Management) Azure PowerShell cmdlet이 사용됩니다.
Add-AzureAccount
Azure 구독을 가져옵니다.
Get-AzureSubscription
둘 이상의 구독이 있는 경우 사용할 구독을 선택합니다.
Select-AzureSubscription -SubscriptionName "Name of subscription"
컴퓨터에 디렉터리를 만듭니다. 이 예제에서는 AzureNet을 만들었습니다.
다음 명령을 실행하여 Azure 네트워크 구성 파일을 내보냅니다. 필요한 경우 다른 위치로 내보낼 파일의 위치를 변경할 수 있습니다.
Get-AzureVNetConfig -ExportToFile C:\AzureNet\NetworkConfig.xml
다운로드한 .xml 파일을 열고 편집합니다. 네트워크 구성 파일의 예는 네트워크 구성 스키마를 참조하세요.
VirtualNetworkSite name=
값을 기록해 둡니다. 포털을 사용하여 클래식 VNet을 만든 경우 이름은 포털에서 "ClassicVNet"이 아닌 "Group ClassicRG ClassicVNet"과 유사한 형식을 따릅니다.
2. 게이트웨이 서브넷 확인
VirtualNetworkSites 요소에 게이트웨이 서브넷을 아직 만들지 않은 경우 VNet에 추가합니다. 게이트웨이 서브넷의 이름은 "GatewaySubnet"이어야 합니다. 그렇지 않으면 Azure에서 게이트웨이 서브넷으로 인식하고 사용할 수 없습니다.
Important
게이트웨이 서브넷의 NSG(네트워크 보안 그룹)는 지원되지 않습니다. 네트워크 보안 그룹을 이 서브넷에 연결하면 가상 네트워크 게이트웨이(VPN 및 ExpressRoute 게이트웨이)가 예상대로 작동하지 않을 수 있습니다. 네트워크 보안 그룹에 관한 자세한 내용은 네트워크 보안 그룹이란?을 참조하세요.
예제:
<VirtualNetworkSites>
<VirtualNetworkSite name="ClassicVNet" Location="West US">
<AddressSpace>
<AddressPrefix>10.1.0.0/16</AddressPrefix>
</AddressSpace>
<Subnets>
<Subnet name="Subnet1">
<AddressPrefix>10.1.0.0/24</AddressPrefix>
</Subnet>
<Subnet name="GatewaySubnet">
<AddressPrefix>10.1.255.0/27</AddressPrefix>
</Subnet>
</Subnets>
</VirtualNetworkSite>
</VirtualNetworkSites>
3. 로컬 네트워크 사이트 추가
추가한 로컬 네트워크 사이트는 연결하려는 RM VNet을 나타냅니다. 존재하지 않는 경우 파일에 LocalNetworkSites 요소를 추가합니다. 구성의 이 시점에서 Resource Manager VNet에 대한 게이트웨이 아직 만들지 않았기 때문에 VPNGatewayAddress는 유효한 공용 IP 주소일 수 있습니다. RM 게이트웨이를 만들고 나면 이 자리 표시자 IP 주소를 RM 게이트웨이에 할당된 올바른 공용 IP 주소로 바꿉니다.
<LocalNetworkSites>
<LocalNetworkSite name="RMVNetSite">
<AddressSpace>
<AddressPrefix>192.168.0.0/16</AddressPrefix>
</AddressSpace>
<VPNGatewayAddress>5.4.3.2</VPNGatewayAddress>
</LocalNetworkSite>
</LocalNetworkSites>
4. 로컬 네트워크 사이트와 VNet 연결
이 섹션에서는 VNet을 연결하려는 로컬 네트워크 사이트를 지정합니다. 이 경우에 앞서 참조한 Resource Manager VNet입니다. 이름이 일치해야 합니다. 이 단계에서는 게이트웨이를 만들지 않습니다. 게이트웨이를 연결할 로컬 네트워크를 지정합니다.
<Gateway>
<ConnectionsToLocalNetwork>
<LocalNetworkSiteRef name="RMVNetSite">
<Connection type="IPsec" />
</LocalNetworkSiteRef>
</ConnectionsToLocalNetwork>
</Gateway>
5. 파일 저장 및 업로드
파일을 저장하고 다음 명령을 실행하여 Azure에 가져옵니다. 사용자 환경에 필요한 대로 파일 경로를 변경해야 합니다.
Set-AzureVNetConfig -ConfigurationPath C:\AzureNet\NetworkConfig.xml
가져오기가 성공했음을 보여 주는 유사한 결과가 표시됩니다.
OperationDescription OperationId OperationStatus
-------------------- ----------- ---------------
Set-AzureVNetConfig e0ee6e66-9167-cfa7-a746-7casb9 Succeeded
6. 게이트웨이 만들기
이 예제를 실행하기 전에 Azure에 필요한 정확한 이름에 대해서는 다운로드한 네트워크 구성 파일을 참조하세요. 네트워크 구성 파일에는 클래식 가상 네트워크에 대한 값이 포함되어 있습니다. 포털을 사용하여 클래식 VNet을 만들면 네트워크 구성 파일에서 가상 네트워크 이름이 다릅니다. 예를 들어 Azure Portal을 사용하여 'Classic VNet'이라는 클래식 VNet을 만들고 'ClassicRG'라는 리소스 그룹에 만들면 네트워크 구성 파일에 포함된 이름은 'Group ClassicRG Classic VNet'으로 변환됩니다. PowerShell로 작업할 때는 항상 네트워크 구성 파일에 포함된 이름을 사용합니다. 공백이 포함된 VNet의 이름을 지정하는 경우 값 주위에 따옴표를 사용합니다.
다음 예제를 사용하여 동적 라우팅 게이트웨이를 만듭니다.
New-AzureVNetGateway -VNetName ClassicVNet -GatewayType DynamicRouting
Get-AzureVNetGateway cmdlet을 사용하여 게이트웨이의 상태를 확인할 수 있습니다.
RM VNet 게이트웨이 구성
RM VNet을 이미 만들었다고 가정합니다. 이 단계에서는 RM VNet에 대한 VPN Gateway를 만듭니다. 클래식 VNet의 게이트웨이에 대한 공용 IP 주소를 검색할 때까지 이 단계를 시작하지 않습니다.
PowerShell 콘솔에서 Azure 계정에 로그인합니다. 다음 cmdlet은 Azure 계정에 대한 로그인 자격 증명을 입력하라는 메시지를 표시합니다. 로그인한 다음, Azure PowerShell에 사용할 수 있도록 계정 설정이 다운로드됩니다. 필요에 따라 "Try It" 기능을 사용하여 브라우저에서 Azure Cloud Shell을 시작할 수 있습니다.
Azure Cloud Shell을 사용하는 경우 다음 cmdlet을 건너뜁니다.
Connect-AzAccount
올바른 구독을 사용하고 있는지 확인하려면 다음 cmdlet을 실행합니다.
Get-AzSubscription
둘 이상의 구독이 있는 경우 사용할 구독을 지정합니다.
Select-AzSubscription -SubscriptionName "Name of subscription"
로컬 네트워크 게이트웨이를 만듭니다. 가상 네트워크에서 로컬 네트워크 게이트웨이는 일반적으로 온-프레미스 위치를 가리킵니다. 이 경우에 로컬 네트워크 게이트웨이는 클래식 VNet을 가리킵니다. Azure에서 참조할 수 있는 이름을 지정하고 주소 공간 접두사를 지정합니다. Azure는 지정된 IP 주소 접두사를 사용하여 온-프레미스 위치로 보낼 트래픽을 식별합니다. 나중에 게이트웨이를 만들기 전에 여기서 정보를 조정하는 경우 값을 수정하고 샘플을 다시 실행할 수 있습니다.
-Name은 로컬 네트워크 게이트웨이에 참조하기 위해 할당하려는 이름입니다.
-AddressPrefix는 클래식 VNet에 대한 주소 공간입니다.
-GatewayIpAddress는 클래식 VNet 게이트웨이의 공용 IP 주소입니다. 다음 샘플 텍스트 "n.n.n.n"을 올바른 IP 주소를 반영하도록 변경해야 합니다.New-AzLocalNetworkGateway -Name ClassicVNetSite ` -Location "West US" -AddressPrefix "10.1.0.0/16" ` -GatewayIpAddress "n.n.n.n" -ResourceGroupName RMRG
리소스 관리자 VNet에 대한 가상 네트워크 게이트웨이에 할당할 공용 IP 주소를 요청합니다. 사용할 IP 주소를 지정할 수는 없습니다. IP 주소는 가상 네트워크 게이트웨이에 동적으로 할당됩니다. 그러나 이로 인해 IP 주소가 변경되지는 않습니다. 게이트웨이가 삭제되고 다시 만들어지는 경우에만 가상 네트워크 게이트웨이 IP 주소가 변경됩니다. 크기 조정, 다시 설정 또는 게이트웨이의 기타 내부 유지 관리/업그레이드를 변경하지 않습니다.
이 단계에서는 이후 단계에 사용되는 변수도 설정합니다.
$ipaddress = New-AzPublicIpAddress -Name rmgwpip ` -ResourceGroupName RMRG -Location 'EastUS' ` -AllocationMethod Dynamic
가상 네트워크에 게이트웨이 서브넷이 있는지 확인합니다. 게이트웨이 서브넷이 없다면 추가합니다. 게이트웨이 서브넷의 이름을 GatewaySubnet으로 지정해야 합니다.
$vnet = Get-AzVirtualNetwork -ResourceGroupName RMRG -Name RMVNet Add-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -AddressPrefix 192.168.255.0/27 -VirtualNetwork $vnet Set-AzVirtualNetwork -VirtualNetwork $vnet
다음 명령을 실행하여 게이트웨이에 사용된 서브넷을 검색 합니다. 이 단계에서는 다음 단계에서 사용할 변수도 설정합니다.
-Name은 리소스 관리자 VNet의 이름입니다.
-ResourceGroupName은 VNet과 연결된 리소스 그룹입니다. 제대로 작동하려면 게이트웨이 서브넷이 이 VNet에 이미 존재하고 이름을 GatewaySubnet 으로 지정해야 합니다.$subnet = Get-AzVirtualNetworkSubnetConfig -Name GatewaySubnet ` -VirtualNetwork (Get-AzVirtualNetwork -Name RMVNet -ResourceGroupName RMRG)
게이트웨이 IP 주소 지정 구성을 만듭니다. 게이트웨이 구성은 사용할 공용 IP 주소 및 서브넷을 정의합니다. 다음 샘플을 사용하여 게이트웨이 구성을 만듭니다.
-SubnetId 및 -PublicIpAddressId 매개 변수는 각각 서브넷 및 IP 주소 개체에서 ID 속성이 전달되어야 합니다. 간단한 문자열을 사용할 수 없습니다. 이러한 변수는 공용 IP를 요청하는 단계 및 서브넷을 검색하는 단계에서 설정됩니다.
$gwipconfig = New-AzVirtualNetworkGatewayIpConfig ` -Name gwipconfig -SubnetId $subnet.id ` -PublicIpAddressId $ipaddress.id
리소스 관리자 가상 네트워크 게이트웨이를 만듭니다.
-VpnType
는 RouteBased여야 합니다. 게이트웨이를 만드는 데에는 45분 이상이 걸릴 수 있습니다.New-AzVirtualNetworkGateway -Name RMGateway -ResourceGroupName RMRG ` -Location "EastUS" -GatewaySKU Standard -GatewayType Vpn ` -IpConfigurations $gwipconfig ` -EnableBgp $false -VpnType RouteBased
공용 IP 주소를 복사 합니다. 클래식 VNet에 대한 로컬 네트워크 설정을 구성할 때 사용합니다. 다음 cmdlet을 사용하여 공용 IP 주소를 검색할 수 있습니다. 공용 IP 주소가 IpAddress로 반환에 나열됩니다.
Get-AzPublicIpAddress -Name rmgwpip -ResourceGroupName RMRG
클래식 VNet 로컬 사이트 설정 수정
이 섹션에서는 클래식 VNet을 사용합니다. 리소스 관리자 VNet 게이트웨이에 연결하는 데 사용될 로컬 사이트 설정을 지정할 때 사용한 자리 표시자 IP 주소를 바꿉니다. 클래식 VNet으로 작업하므로 Azure Cloud Shell TryIt이 아닌 컴퓨터에 로컬로 설치된 PowerShell을 사용해야 합니다.
네트워크 구성 파일을 내보냅니다.
Get-AzureVNetConfig -ExportToFile C:\AzureNet\NetworkConfig.xml
텍스트 편집기를 사용하여 VPNGatewayAddress에 대한 값을 수정합니다. 자리 표시자 IP 주소를 Resource Manager 게이트웨이의 공용 IP 주소로 바꾼 후 변경 내용을 저장합니다.
<VPNGatewayAddress>13.68.210.16</VPNGatewayAddress>
수정된 네트워크 구성 파일을 Azure로 가져옵니다.
Set-AzureVNetConfig -ConfigurationPath C:\AzureNet\NetworkConfig.xml
게이트웨이 간의 연결 만들기
게이트웨이 간의 연결을 만들려면 PowerShell이 필요합니다. 클래식 버전의 PowerShell cmdlet을 사용하려면 Azure 계정을 추가해야 합니다. 이 작업에는 Add-AzureAccount를 사용합니다.
PowerShell 콘솔에서 공유 키를 설정합니다. 이러한 cmdlet을 실행하기 전에 Azure에 필요한 정확한 이름에 대해서는 다운로드한 네트워크 구성 파일을 참조하세요. 공백이 포함된 VNet의 이름을 지정할 때는 값을 작은따옴표로 묶습니다.
다음 예제에서 -VNetName은 클래식 VNet의 이름이고 -LocalNetworkSiteName은 로컬 네트워크 사이트에 대해 지정한 이름입니다. 이전에 다운로드한 네트워크 구성 파일에서 둘 다의 이름을 확인합니다.
-SharedKey는 사용자가 생성하고 지정하는 값입니다. 이 예제에서는 'abc123'을 사용했으나 좀 더 복잡한 항목을 생성하여 사용할 수 있습니다. 중요한 점은 여기에서 지정한 값이 연결을 만드는 다음 단계에서 지정한 것과 동일한 값이어야 한다는 것입니다. 반환 값에는 상태:성공이 표시됩니다.
Set-AzureVNetGatewayKey -VNetName ClassicVNet ` -LocalNetworkSiteName RMVNetSite -SharedKey abc123
다음 명령을 실행하여 VPN 연결을 만듭니다.
변수를 설정합니다.
$vnet01gateway = Get-AzLocalNetworkGateway -Name ClassicVNetSite -ResourceGroupName RMRG $vnet02gateway = Get-AzVirtualNetworkGateway -Name RMGateway -ResourceGroupName RMRG
연결을 만듭니다. -ConnectionType은 Vnet2Vnet이 아닌 IPsec입니다.
New-AzVirtualNetworkGatewayConnection -Name RM-Classic -ResourceGroupName RMRG ` -Location "East US" -VirtualNetworkGateway1 ` $vnet02gateway -LocalNetworkGateway2 ` $vnet01gateway -ConnectionType IPsec -RoutingWeight 10 -SharedKey 'abc123'
연결 확인
클래식 VNet에서 RM VNet으로
'Get-AzureVNetConnection' cmdlet을 사용하여 연결이 성공했는지 확인할 수 있습니다. 이 cmdlet은 컴퓨터에서 로컬로 실행해야 합니다.
일치하는 값을 구성하는 데 다음 cmdlet 예제를 사용합니다. 공백이 포함된 가상 네트워크의 이름은 따옴표로 묶어야 합니다. 네트워크 구성 파일에 있는 가상 네트워크의 이름을 사용합니다.
Get-AzureVNetConnection "ClassicVNet"
cmdlet이 완료되면 값을 봅니다. 다음 예에서는 연결 상태가 '연결됨'으로 표시되며 수신 및 송신 바이트를 볼 수 있습니다.
ConnectivityState : Connected EgressBytesTransferred : 0 IngressBytesTransferred : 0 LastConnectionEstablished : 4/25/2022 4:24:34 PM LastEventID : 24401 LastEventMessage : The connectivity state for the local network site 'RMVNetSite' changed from Not Connected to Connected. LastEventTimeStamp : 4/25/2022 4:24:34 PM LocalNetworkSiteName : RMVNetSite OperationDescription : OperationId : OperationStatus :
RM VNet에서 클래식 VNet으로
‘-Debug’를 사용하거나 사용하지 않고 ‘Get-AzVirtualNetworkGatewayConnection’ cmdlet을 사용하여 연결이 성공했는지 확인할 수 있습니다.
일치하는 값을 구성하는 데 다음 cmdlet 예제를 사용합니다. 메시지가 표시되면 '모두' 실행하기 위해 A를 선택합니다. 예제에서 '-Name'은 테스트하려는 연결의 이름을 나타냅니다.
Get-AzVirtualNetworkGatewayConnection -Name VNet1toSite1 -ResourceGroupName TestRG1
cmdlet이 완료되면 값을 봅니다. 다음 예에서는 연결 상태가 '연결됨'으로 표시되고 송/수신 바이트를 볼 수 있습니다.
"connectionStatus": "Connected", "ingressBytesTransferred": 33509044, "egressBytesTransferred": 4142431
다음 단계
VNet 간 연결에 대한 자세한 내용은 VPN Gateway FAQ를 참조하세요.