Inicio rápido: creación de una topología de red de malla con Azure Virtual Network Manager mediante Azure PowerShell

Introducción a Azure Virtual Network Manager mediante el uso de Azure PowerShell para administrar la conectividad de las redes virtuales.

En este artículo de inicio rápido, implementará tres redes virtuales y usará Azure Virtual Network Manager para crear una topología de red de malla. Después, compruebe si se ha aplicado la configuración de conectividad.

Diagrama de recursos implementados para una topología de red virtual en malla con el administrador de red virtual de Azure.

Requisitos previos

  • Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
  • Realice este inicio rápido mediante PowerShell local, no a través de Azure Cloud Shell. La versión de Az.Network en Azure Cloud Shell no admite actualmente los cmdlets de Azure Virtual Network Manager.
  • Para modificar los grupos de red dinámicos, solo debe tener acceso mediante la asignación de roles de RBAC de Azure. No se admite la administración clásica o la autorización heredada.

Iniciar sesión en la cuenta de Azure y seleccione la suscripción

Para empezar la configuración, inicie sesión en la cuenta de Azure:

Connect-AzAccount

Luego, conéctela a la suscripción:

Set-AzContext -Subscription <subscription name or id>

Instalación del módulo de Azure PowerShell

Instale el módulo Az.Network de Azure PowerShell más reciente mediante este comando:

 Install-Module -Name Az.Network -RequiredVersion 5.3.0

Crear un grupo de recursos

Para poder crear una instancia de Azure Virtual Network Manager, debe crear un grupo de recursos para hospedarlo. Cree un grupo de recursos con New-AzResourceGroup. En este ejemplo se crea un grupo de recursos denominado grupo de recursos en la región Oeste de EE. UU. 2 :

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

Definición del ámbito y el tipo de acceso

Defina el ámbito y el tipo de acceso para la instancia de Azure Virtual Network Manager mediante New-AzNetworkManagerScope. Este ejemplo define un ámbito con una suscripción única y establece el tipo de acceso en Conectividad. Reemplace <subscription_id> por el id. de la suscripción que desee administrar con Azure Virtual Network Manager.

$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

Creación de una instancia de Virtual Network Manager

Cree una instancia de Virtual Network Manager mediante New-AzNetworkManager. En este ejemplo se crea una instancia denominada Administrador de red en la región Oeste de EE. UU. 2 :

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

Crear tres redes virtuales

Cree tres redes virtuales mediante New-AzVirtualNetwork. En este ejemplo se crean redes virtuales denominadas vnet-spoke-001, vnet-spoke-002y vnet-hub-001 en la región oeste de EE. UU. 2. Si ya tiene redes virtuales con las que desea crear una red de malla, puede ir directamente a la sección siguiente.

$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

Agregue una subred a cada una de las redes virtuales.

Para completar la configuración de las redes virtuales, cree una configuración de subred denominada default con un prefijo de dirección de subred de /24 mediante Add-AzVirtualNetworkSubnetConfig. Luego, use Set-AzVirtualNetwork para aplicar la configuración de subred a la red virtual.

$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

Creación de un grupo de red

Virtual Network Manager aplica configuraciones a grupos de redes virtuales al colocarlos en grupos de redes. Cree un grupo de redes mediante New-AzNetworkManagerGroup. En este ejemplo se crea un grupo de red denominado grupo de red en la región Oeste de EE. UU. 2:

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

Definición de pertenencia a una configuración de malla

En esta tarea, agregará los miembros estáticos vnet-spoke-001 y vnet-spoke-002 al grupo de red grupo de red mediante New-AzNetworkManagerStaticMember.

Los miembros estáticos deben tener un nombre único cuyo ámbito sea el grupo de red. Se recomienda usar un hash coherente del id. de red virtual. Este enfoque usa la implementación uniqueString() de la plantilla de Azure Resource Manager.

    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

Creación de una configuración de conectividad

En esta tarea, creará una configuración de conectividad con el grupo de red grupo de red mediante New-AzNetworkManagerConnectivityConfiguration y New-AzNetworkManagerConnectivityGroupItem:

  1. Crear un elemento de grupo de conectividad:

    $gi = @{
        NetworkGroupId = $ng.Id
    }
    $groupItem = New-AzNetworkManagerConnectivityGroupItem @gi
    
  2. Crear un grupo de configuración y agregar un elemento de grupo de conectividad a él:

    [System.Collections.Generic.List[Microsoft.Azure.Commands.Network.Models.NetworkManager.PSNetworkManagerConnectivityGroupItem]]$configGroup = @()
    $configGroup.Add($groupItem)
    
  3. Crear la configuración de conectividad con el grupo de configuración:

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

Confirmación de la implementación

Confirme la configuración en las regiones de destino mediante Deploy-AzNetworkManagerCommit. Este paso activa la configuración para que empiece a surtir efecto.

[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

Limpieza de recursos

Si ya no necesita la instancia de Azure Virtual Network Manager y sus recursos asociados, elimine el grupo de recursos que los contiene. Al eliminar el grupo de recursos también se eliminan los recursos que creó.

  1. Elimine el grupo de recursos mediante Remove-AzResourceGroup:

    Remove-AzResourceGroup -Name $rg.ResourceGroupName -Force
    

Pasos siguientes

Ahora que ha creado una instancia de Azure Virtual Network Manager, aprenda a bloquear el tráfico mediante la configuración de un administrador de seguridad: