다음을 통해 공유


빠른 시작: Azure PowerShell을 사용하여 Azure Virtual Network Manager로 메시 네트워크 토폴로지 만들기

가상 네트워크 연결을 관리하기 위해 Azure PowerShell을 사용하여 Azure Virtual Network Manager를 시작합니다.

이 빠른 시작에서는 세 개의 가상 네트워크를 배포하고 Azure Virtual Network Manager를 사용하여 메시 네트워크 토폴로지를 만듭니다. 그런 다음, 연결 구성이 적용되었는지 확인합니다.

Azure 가상 네트워크 관리자를 사용하여 메시 가상 네트워크 토폴로지에 배포된 리소스의 다이어그램.

필수 조건

  • 활성 구독이 있는 Azure 계정. 체험 계정을 만듭니다.
  • Azure Cloud Shell을 통해서가 아니라 로컬로 Powershell을 사용하여 이 빠른 시작을 수행합니다. Azure Cloud Shell의 Az.Network 버전은 현재 Azure Virtual Network Manager cmdlet을 지원하지 않습니다.
  • 동적 네트워크 그룹을 수정하려면 Azure RBAC 역할 할당을 통해서만 액세스 권한을 부여해야 합니다. 클래식 관리자/레거시 권한 부여는 지원되지 않습니다.

Azure 계정에 로그인하고 구독을 선택합니다.

구성을 시작하려면 Azure 계정에 로그인합니다.

Connect-AzAccount

그런 다음 구독에 연결합니다.

Set-AzContext -Subscription <subscription name or id>

Azure PowerShell 모듈 설치

다음 명령을 사용하여 최신 Az.Network Azure PowerShell 모듈을 설치합니다.

 Install-Module -Name Az.Network -RequiredVersion 5.3.0

리소스 그룹 만들기

Azure Virtual Network Manager 인스턴스를 만들려면 먼저 Network Manager를 호스트하는 리소스 그룹을 만들어야 합니다. New-AzResourceGroup을 사용하여 리소스 그룹을 만듭니다. 이 예제에서는 미국 서부 2 지역에 리소스 그룹이라는 리소스 그룹을 만듭니다.

# Create a resource group
$location = "West US 2"
$rg = @{
    Name = 'resource-group'
    Location = $location
}
New-AzResourceGroup @rg

범위 및 액세스 유형 정의

New-AzNetworkManagerScope를 사용하여 Azure Virtual Network Manager 인스턴스의 범위 및 액세스 유형을 정의합니다. 이 예제에서는 단일 구독으로 범위를 정의하고 액세스 유형을 연결로 설정합니다. <subscription_id>를 Azure Virtual Network Manager를 통해 관리하려는 구독의 ID로 바꿉니다.

$subID= <subscription_id>

[System.Collections.Generic.List[string]]$subGroup = @()  
$subGroup.Add("/subscriptions/$subID")

[System.Collections.Generic.List[String]]$access = @()  
$access.Add("Connectivity"); 

$scope = New-AzNetworkManagerScope -Subscription $subGroup

Virtual Network Manager 인스턴스 만들기

New-AzNetworkManager를 사용하여 Virtual Network Manager 인스턴스를 만듭니다. 이 예제에서는 미국 서부 2 지역에 network-manager라는 인스턴스를 만듭니다.

$avnm = @{
    Name = 'network-manager'
    ResourceGroupName = $rg.ResourceGroupName
    NetworkManagerScope = $scope
    NetworkManagerScopeAccess = $access
    Location = $location
}
$networkmanager = New-AzNetworkManager @avnm

세 개의 가상 네트워크 만들기

New-AzVirtualNetwork를 사용하여 세 개의 가상 네트워크를 만듭니다. 이 예제에서는 미국 서부 2 지역에 vnet-spoke-001, vnet-spoke-002vnet-hub-001이라는 가상 네트워크를 만듭니다. 메시 네트워크를 만들려는 가상 네트워크가 이미 있는 경우 다음 섹션으로 건너뛸 수 있습니다.

$vnetspoke001 = @{
    Name = 'vnet-spoke-001'
    ResourceGroupName = $rg.ResourceGroupName
    Location = $location
    AddressPrefix = '10.0.0.0/16'    
}

$vnet_spoke_001 = New-AzVirtualNetwork @vnetspoke001

$vnetspoke002 = @{
    Name = 'vnet-spoke-002'
    ResourceGroupName = $rg.ResourceGroupName
    Location = $location
    AddressPrefix = '10.1.0.0/16'    
}
$vnet_spoke_002 = New-AzVirtualNetwork @vnetspoke002

$vnethub001 = @{
    Name = 'vnet-hub-001'
    ResourceGroupName = $rg.ResourceGroupName
    Location = $location
    AddressPrefix = '10.2.0.0/16'    
}
$vnet_hub_001 = New-AzVirtualNetwork @vnethub001

각 가상 네트워크에 서브넷을 추가

가상 네트워크의 구성을 완료하려면 Add-AzVirtualNetworkSubnetConfig를 사용하고 서브넷 주소 접두사 /24를 사용하여 default라는 서브넷 구성을 만듭니다. 그런 다음 Set-AzVirtualNetwork를 사용하여 가상 네트워크에 서브넷 구성을 적용합니다.

$subnet_vnetspoke001 = @{
    Name = 'default'
    VirtualNetwork = $vnet_spoke_001
    AddressPrefix = '10.0.0.0/24'
}
$subnetConfig_vnetspoke001 = Add-AzVirtualNetworkSubnetConfig @subnet_vnetspoke001
$vnet_spoke_001 | Set-AzVirtualNetwork

$subnet_vnetspoke002 = @{
    Name = 'default'
    VirtualNetwork = $vnet_spoke_002
    AddressPrefix = '10.1.0.0/24'
}
$subnetConfig_vnetspoke002 = Add-AzVirtualNetworkSubnetConfig @subnet_vnetspoke002
$vnet_spoke_002 | Set-AzVirtualNetwork

$subnet_vnet_hub_001 = @{
    Name = 'default'
    VirtualNetwork = $vnet_hub_001
    AddressPrefix = '10.2.0.0/24'
}
$subnetConfig_vnet_hub_001 = Add-AzVirtualNetworkSubnetConfig @subnet_vnet_hub_001
$vnet_hub_001 | Set-AzVirtualNetwork

네트워크 그룹 만들기

Virtual Network Manager는 구성을 네트워크 그룹에 배치하여 가상 네트워크의 그룹에 적용합니다. New-AzNetworkManagerGroup을 사용하여 네트워크 그룹을 만듭니다. 이 예제에서는 미국 서부 2 지역에 네트워크 그룹이라는 네트워크 그룹을 만듭니다.

$ng = @{
        Name = 'network-group'
        ResourceGroupName = $rg.ResourceGroupName
        NetworkManagerName = $networkManager.Name
    }
    $ng = New-AzNetworkManagerGroup @ng

메시 구성에 대한 멤버 자격 정의

이 작업에서는 New-AzNetworkManagerStaticMember를 사용하여 정적 멤버 vnet-spoke-001vnet-spoke-002를 네트워크 그룹 네트워크 그룹에 추가합니다.

정적 멤버는 네트워크 그룹으로 범위가 지정된 고유한 이름이 있어야 합니다. 일관성 있는 가상 네트워크 ID의 해시를 사용하는 것이 좋습니다. 이 방법은 Azure Resource Manager 템플릿의 uniqueString() 구현을 사용합니다.

    function Get-UniqueString ([string]$id, $length=13)
    {
    $hashArray = (new-object System.Security.Cryptography.SHA512Managed).ComputeHash($id.ToCharArray())
    -join ($hashArray[1..$length] | ForEach-Object { [char]($_ % 26 + [byte][char]'a') })
    }
$sm_vnetspoke001 = @{
        Name = Get-UniqueString $vnet_spoke_001.Id
        ResourceGroupName = $rg.ResourceGroupName
        NetworkGroupName = $ng.Name
        NetworkManagerName = $networkManager.Name
        ResourceId = $vnet_spoke_001.Id
    }
    $sm_vnetspoke001 = New-AzNetworkManagerStaticMember @sm_vnetspoke001
$sm_vnetspoke002 = @{
        Name = Get-UniqueString $vnet_spoke_002.Id
        ResourceGroupName = $rg.ResourceGroupName
        NetworkGroupName = $ng.Name
        NetworkManagerName = $networkManager.Name
        ResourceId = $vnet_spoke_002.Id
    }
    $sm_vnetspoke002 = New-AzNetworkManagerStaticMember @sm_vnetspoke002

연결 구성 생성

이 작업에서는 New-AzNetworkManagerConnectivityConfiguration 및 New-AzNetworkManagerConnectivityGroupItem을 사용하여 네트워크 그룹 네트워크 그룹과 연결 구성을 만듭니다.

  1. 연결 그룹 항목을 만듭니다.

    $gi = @{
        NetworkGroupId = $ng.Id
    }
    $groupItem = New-AzNetworkManagerConnectivityGroupItem @gi
    
  2. 구성 그룹을 만들고 연결 그룹 항목을 추가합니다.

    [System.Collections.Generic.List[Microsoft.Azure.Commands.Network.Models.NetworkManager.PSNetworkManagerConnectivityGroupItem]]$configGroup = @()
    $configGroup.Add($groupItem)
    
  3. 구성 그룹을 사용하여 연결 구성을 만듭니다.

    $config = @{
        Name = 'connectivity-configuration'
        ResourceGroupName = $rg.ResourceGroupName
        NetworkManagerName = $networkManager.Name
        ConnectivityTopology = 'Mesh'
        AppliesToGroup = $configGroup
    }
    $connectivityconfig = New-AzNetworkManagerConnectivityConfiguration @config
        ```                        
    
    

배포 커밋

Deploy-AzNetworkManagerCommit를 사용하여 대상 지역에 구성을 커밋합니다. 이 단계를 수행하면 구성이 트리거되어 적용되기 시작합니다.

[System.Collections.Generic.List[string]]$configIds = @()  
$configIds.add($connectivityconfig.id) 
[System.Collections.Generic.List[string]]$target = @()   
$target.Add("westus2")     

$deployment = @{
    Name = $networkManager.Name
    ResourceGroupName = $rg.ResourceGroupName
    ConfigurationId = $configIds
    TargetLocation = $target
    CommitType = 'Connectivity'
}
Deploy-AzNetworkManagerCommit @deployment

리소스 정리

Azure Virtual Network Manager 인스턴스가 더 이상 필요하지 않고 리소스를 연결하는 경우 해당 인스턴스가 포함된 리소스 그룹을 삭제합니다. 리소스 그룹을 삭제하면 만든 리소스도 삭제됩니다.

  1. Remove-AzResourceGroup을 사용하여 리소스 그룹을 삭제합니다.

    Remove-AzResourceGroup -Name $rg.ResourceGroupName -Force
    

다음 단계

Azure Virtual Network Manager 인스턴스를 만들었으므로 이제 보안 관리자 구성을 사용하여 네트워크 트래픽을 차단하는 방법에 대해 알아봅니다.