빠른 시작: Azure PowerShell을 사용하여 Azure Virtual Network Manager로 메시 네트워크 토폴로지 만들기
가상 네트워크 연결을 관리하기 위해 Azure PowerShell을 사용하여 Azure Virtual Network Manager를 시작합니다.
이 빠른 시작에서는 세 개의 가상 네트워크를 배포하고 Azure Virtual Network Manager를 사용하여 메시 네트워크 토폴로지를 만듭니다. 그런 다음, 연결 구성이 적용되었는지 확인합니다.
필수 조건
- 활성 구독이 있는 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-002 및 vnet-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-001 및 vnet-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을 사용하여 네트워크 그룹 네트워크 그룹과 연결 구성을 만듭니다.
연결 그룹 항목을 만듭니다.
$gi = @{ NetworkGroupId = $ng.Id } $groupItem = New-AzNetworkManagerConnectivityGroupItem @gi
구성 그룹을 만들고 연결 그룹 항목을 추가합니다.
[System.Collections.Generic.List[Microsoft.Azure.Commands.Network.Models.NetworkManager.PSNetworkManagerConnectivityGroupItem]]$configGroup = @() $configGroup.Add($groupItem)
구성 그룹을 사용하여 연결 구성을 만듭니다.
$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 인스턴스가 더 이상 필요하지 않고 리소스를 연결하는 경우 해당 인스턴스가 포함된 리소스 그룹을 삭제합니다. 리소스 그룹을 삭제하면 만든 리소스도 삭제됩니다.
Remove-AzResourceGroup을 사용하여 리소스 그룹을 삭제합니다.
Remove-AzResourceGroup -Name $rg.ResourceGroupName -Force
다음 단계
Azure Virtual Network Manager 인스턴스를 만들었으므로 이제 보안 관리자 구성을 사용하여 네트워크 트래픽을 차단하는 방법에 대해 알아봅니다.