다음을 통해 공유


빠른 시작: 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

리소스 그룹 만들기

이 작업에서는 네트워크 관리자 인스턴스를 호스트할 리소스 그룹을 만듭니다. New-AzResourceGroup을 사용하여 리소스 그룹을 만듭니다. 이 예제에서는 미국 서부 2 지역에 리소스 그룹이라는 리소스 그룹을 만듭니다.

# Create a resource group
$location = "westus2"
$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.Name
    NetworkManagerScope = $scope
    NetworkManagerScopeAccess = $access
    Location = $location
}
$networkmanager = New-AzNetworkManager @avnm

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

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

$vnet_00 = @{
    Name = 'vnet-00'
    ResourceGroupName = $rg.Name
    Location = $location
    AddressPrefix = '10.0.0.0/16'    
}

$vnet_00 = New-AzVirtualNetwork @vnet_00

$vnet_01 = @{
    Name = 'vnet-01'
    ResourceGroupName = $rg.Name
    Location = $location
    AddressPrefix = '10.1.0.0/16'    
}
$vnet_01 = New-AzVirtualNetwork @vnet_01

$vnet_02 = @{
    Name = 'vnet-02'
    ResourceGroupName = $rg.Name
    Location = $location
    AddressPrefix = '10.2.0.0/16'    
}
$vnet_02 = New-AzVirtualNetwork @vnet_02

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

이 작업에서는 Add-AzVirtualNetworkSubnetConfig를 사용하여 /24서브넷 주소 접두사를 사용하여 기본값이라는 서브넷 구성을 만듭니다. 그런 다음 Set-AzVirtualNetwork를 사용하여 가상 네트워크에 서브넷 구성을 적용합니다.

$subnet_vnet_00 = @{
    Name = 'default'
    VirtualNetwork = $vnet_00
    AddressPrefix = '10.0.0.0/24'
}
$subnetConfig_vnet_00 = Add-AzVirtualNetworkSubnetConfig @subnet_vnet_00
$vnet_00 | Set-AzVirtualNetwork

$subnet_vnet_01 = @{
    Name = 'default'
    VirtualNetwork = $vnet_01
    AddressPrefix = '10.1.0.0/24'
}
$subnetConfig_vnet_01 = Add-AzVirtualNetworkSubnetConfig @subnet_vnet_01
$vnet_01 | Set-AzVirtualNetwork

$subnet_vnet_02 = @{
    Name = 'default'
    VirtualNetwork = $vnet_02
    AddressPrefix = '10.2.0.0/24'
}
$subnetConfig_vnet_02 = Add-AzVirtualNetworkSubnetConfig @subnet_vnet_02
$vnet_02 | Set-AzVirtualNetwork

네트워크 그룹 만들기

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

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

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

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

정적 멤버는 네트워크 그룹으로 범위가 지정된 고유한 이름이 있어야 합니다. 일관성 있는 가상 네트워크 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_vnet_00 = @{
        Name = Get-UniqueString $vnet_00.Id
        ResourceGroupName = $rg.Name
        NetworkGroupName = $ng.Name
        NetworkManagerName = $networkManager.Name
        ResourceId = $vnet_00.Id
    }
    $sm_vnet_00 = New-AzNetworkManagerStaticMember @sm_vnet_00
$sm_vnet_01 = @{
        Name = Get-UniqueString $vnet_01.Id
        ResourceGroupName = $rg.Name
        NetworkGroupName = $ng.Name
        NetworkManagerName = $networkManager.Name
        ResourceId = $vnet_01.Id
    }
    $sm_vnet_01 = New-AzNetworkManagerStaticMember @sm_vnet_01

연결 구성 생성

이 작업에서는 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.Name
        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.Name
    ConfigurationId = $configIds
    TargetLocation = $target
    CommitType = 'Connectivity'
}
Deploy-AzNetworkManagerCommit @deployment

리소스 정리

Azure Virtual Network Manager 인스턴스 및 해당 리소스가 더 이상 필요하지 않은 경우 다음 단계에 따라 리소스가 포함된 리소스 그룹을 삭제하여 삭제합니다.

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

    Remove-AzResourceGroup -Name $rg.Name -Force
    

다음 단계

이 단계에서는 보안 관리자 구성을 사용하여 네트워크 트래픽을 차단하는 방법을 알아봅니다.