Conexión de redes virtuales a partir de diferentes modelos de implementación con PowerShell

Este artículo muestra cómo conectar redes virtuales clásicas a redes virtuales de Resource Manager para permitir que los recursos que se encuentran en modelos de implementación independientes se comuniquen entre sí. En los pasos de este artículo se usa PowerShell.

Este artículo está pensado para los clientes que ya tienen una red virtual que se creó con el modelo de implementación clásica (heredada) y ahora quieren conectar la red virtual clásica a una red virtual de otro tipo que se creó con el modelo de implementación más reciente. Si no tiene ya una red virtual heredada, use el artículo Configuración de una conexión de VPN Gateway de red virtual a red virtual mediante Azure Portal en su lugar.

Architecture

La conexión de una red virtual clásica a una red virtual de Resource Manager es similar a la conexión de una red virtual a una ubicación de sitio local. Ambos tipos de conectividad usan una puerta de enlace de VPN para proporcionar un túnel seguro con IPsec/IKE. Puede crear una conexión entre redes virtuales que estén en diferentes suscripciones y en diferentes regiones. También puede conectar redes virtuales que tengan ya conexiones a redes locales, siempre que la puerta de enlace sea dinámica o basada en rutas. Para más información sobre las conexiones de red virtual a red virtual, consulte Preguntas más frecuentes sobre VPN Gateway.

Para esta configuración se crea una conexión de puerta de enlace VPN a través de un túnel VPN de IPsec/IKE entre las redes virtuales. Asegúrese de que ninguno de los intervalos de red virtual se superponga con otro o con cualquiera de las redes locales a las que se conectan.

En la tabla siguiente se muestra un ejemplo de cómo se definen los sitios locales y las redes virtuales de ejemplo:

Virtual Network Espacio de direcciones Region Se conecta a un sitio de red local
ClassicVNet (10.1.0.0/16) Oeste de EE. UU. RMVNetSite (192.168.0.0/16)
RMVNet (192.168.0.0/16) Este de EE. UU. ClassicVNetSite (10.1.0.0/16)

Requisitos previos

Los siguientes pasos le guiarán a través de los valores necesarios para configurar una puerta de enlace dinámica o basada en ruta para cada red virtual y crear una conexión VPN entre las puertas de enlace. Esta configuración no admite puertas de enlace estáticas o basadas en directivas.

En estos pasos se supone que tiene una red virtual clásica heredada y una red virtual de Resource Manager ya creada.

  • Compruebe que los intervalos de direcciones de las redes virtuales no se superpongan entre sí, o superpongan con cualquiera de los intervalos para otras conexiones a las que las puertas de enlace podrían estar conectadas.

  • En este artículo se usa PowerShell. Instale los cmdlets de PowerShell más recientes en el equipo para Resource Manager y Service Management.

    Aunque es posible ejecutar algunos de los comandos de PowerShell mediante el entorno de Azure Cloud Shell, debe instalar ambas versiones de los cmdlets para crear las conexiones correctamente.

    Para obtener más información, consulte Instalación y configuración de Azure PowerShell.

Configuración de ejemplo

Puede usar estos valores para comprender mejor los ejemplos.

Red virtual clásica

Nombre de la red virtual = RedVClásica
Grupo de recursos = Ubicación ClassicRG = Oeste de EE. UU.
Espacios de direcciones de la red virtual = 10.1.0.0/16
Subnet1 = 10.1.0.0/24
GatewaySubnet = 10.1.255.0/27
Nombre de la red local = RMVNetSite
Tipo de puerta de enlace = EnrutamientoDinámico

Red virtual de Resource Manager

Nombre de red virtual = RedRMV
Grupo de recursos = RMRG
Espacios de direcciones IP de red virtual = 192.168.0.0/16
Subnet1 = 192.168.1.0/24
GatewaySubnet = 192.168.255.0/27
Ubicación = Este de EE. UU.
Nombre IP público de puerta de enlace = rmgwpip
Puerta de enlace de red local = ClassicVNetSite
Nombre de la puerta de enlace de red virtual = PuertaDeEnlaceRM
Configuración de direccionamiento IP de puerta de enlace = configpeip

Configuración de la red virtual clásica

En esta sección, configurará la red virtual clásica ya existente. Si la red virtual ya tiene una puerta de enlace, compruebe que esta se basa en rutas y, a continuación, vaya a la sección siguiente. Si la puerta de enlace no se basa en rutas, elimine la puerta de enlace antes de avanzar con los pasos siguientes. Tendrá la oportunidad de crear una nueva puerta de enlace más adelante.

1. Descarga del archivo de configuración de red

  1. Inicie sesión en su cuenta de Azure en la consola de PowerShell con derechos elevados. El siguiente cmdlet pide las credenciales de inicio de sesión de la cuenta de Azure. Después de iniciar la sesión, se descarga la configuración de la cuenta a fin de ponerla a disposición para Azure PowerShell. Los cmdlets clásicos de Azure PowerShell para Service Management (SM) clásicos se usan en esta sección.

    Add-AzureAccount
    

    Obtenga la suscripción a Azure.

    Get-AzureSubscription
    

    Si tiene varias suscripciones, seleccione la que quiera usar.

    Select-AzureSubscription -SubscriptionName "Name of subscription"
    
  2. Cree un directorio en el equipo. En este ejemplo, hemos creado AzureNet.

  3. Exporte el archivo de configuración de red de Azure mediante la ejecución del comando siguiente. Puede cambiar la ubicación del archivo que se va a exportar a una ubicación diferente si es necesario.

    Get-AzureVNetConfig -ExportToFile C:\AzureNet\NetworkConfig.xml
    
  4. Abra el archivo .xml que ha descargado para editarlo. Para obtener un ejemplo del archivo de configuración de red, consulte Esquema de configuración de red virtual.

  5. Tome nota del valor VirtualNetworkSite name=. Si creó la red virtual clásica mediante el portal, el nombre sigue un formato similar a "Group ClassicRG ClassicVNet", en lugar de "ClassicVNet" en el portal.

2. Comprobación de la subred de puerta de enlace

En el elemento VirtualNetworkSites, agregue una subred de puerta de enlace a la red virtual si no hay ya una creada. La puerta de enlace DEBE tener el nombre "GatewaySubnet" o Azure no podrá reconocerla y utilizarla como subred de puerta de enlace.

Importante

Cuando trabaje con subredes de puerta de enlace, evite asociar grupos de seguridad de red (NSG) a la subred de la puerta de enlace. La asociación de grupos de seguridad de red a esta subred podría causar que la puerta de enlace de la red virtual (puertas de enlace de ExpressRoute y VPN) dejase de funcionar como cabría esperar. Para más información acerca de los grupos de seguridad de red, consulte ¿Qué es un grupo de seguridad de red?

Ejemplo:

<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. Incorporación del sitio de red local

El sitio de red local que agregue representa la red virtual de RM a la que desea conectarse. Agregue un elemento LocalNetworkSites al archivo si aún no existe. En este punto de la configuración, el valor de VPNGatewayAddress puede ser cualquier dirección IP pública válida ya que todavía no se ha creado la puerta de enlace para la red virtual de Resource Manager. Una vez creada la puerta de enlace RM, esta dirección IP de marcador de posición se reemplaza por la dirección IP pública correcta que se ha asignado a la puerta de enlace de RM.

<LocalNetworkSites>
  <LocalNetworkSite name="RMVNetSite">
    <AddressSpace>
      <AddressPrefix>192.168.0.0/16</AddressPrefix>
    </AddressSpace>
    <VPNGatewayAddress>5.4.3.2</VPNGatewayAddress>
  </LocalNetworkSite>
</LocalNetworkSites>

4. Asociación de la red virtual con el sitio de red local

En esta sección, se especifica el sitio de red local con la que se desea conectar la red virtual. En este caso, es la red virtual de Resource Manager a la que se ha hecho referencia anteriormente. Asegúrese de que los nombres coincidan. En este paso no se crea una puerta de enlace. Se especifica la red local con la que se conectará la puerta de enlace.

<Gateway>
  <ConnectionsToLocalNetwork>
    <LocalNetworkSiteRef name="RMVNetSite">
      <Connection type="IPsec" />
    </LocalNetworkSiteRef>
  </ConnectionsToLocalNetwork>
</Gateway>

5. Guardado del archivo y carga

Ejecute el comando siguiente para guardar el archivo e importarlo a Azure. Asegúrese de cambiar la ruta de acceso según sea necesario para su entorno.

Set-AzureVNetConfig -ConfigurationPath C:\AzureNet\NetworkConfig.xml

Verá un resultado similar que muestra que la importación se realizó correctamente.

OperationDescription        OperationId                      OperationStatus                                                
--------------------        -----------                      ---------------                                                
Set-AzureVNetConfig        e0ee6e66-9167-cfa7-a746-7casb9    Succeeded 

6. Creación de la puerta de enlace

Antes de ejecutar este ejemplo, consulte el archivo de configuración de red que ha descargado para consultar los nombres exactos que Azure espera ver. El archivo de configuración de red contiene los valores para las redes virtuales clásicas. Cuando se crea una red virtual clásica mediante el portal, el nombre de la red virtual es diferente en el archivo de configuración de red. Por ejemplo, si ha utilizado Azure Portal para crear una red virtual clásica llamada 'Classic VNet' y la ha creado en un grupo de recursos llamado 'ClassicRG', el nombre que se encuentra en el archivo de configuración de red se convierte en 'Group ClassicRG Classic VNet'. Use siempre el nombre contenido en el archivo de configuración de red cuando trabaje con PowerShell. Cuando especifique el nombre de una red virtual que contenga espacios, use expresiones de código delimitadas alrededor del valor.

Para crear una puerta de enlace de enrutamiento dinámico, utilice el siguiente ejemplo:

New-AzureVNetGateway -VNetName ClassicVNet -GatewayType DynamicRouting

Puede comprobar el estado de la puerta de enlace usando el cmdlet Get-AzureVNetGateway.

Configuración de la puerta de enlace de la red virtual de RM

Para los requisitos previos, se supone que ya ha creado una red virtual de RM. En este paso, creará una puerta de enlace de VPN para la red virtual de RM. No empiece con los pasos hasta que haya recuperado la dirección IP pública de la puerta de enlace de la red virtual clásica.

  1. Inicie sesión en su cuenta de Azure en la consola de PowerShell. El siguiente cmdlet pide las credenciales de inicio de sesión de la cuenta de Azure. Después de iniciar la sesión, se descarga la configuración de la cuenta para que esté disponible para Azure PowerShell. Asimismo, tiene la opción de usar la característica "Pruébelo" para iniciar Azure Cloud Shell en el explorador.

    Si usa Azure Cloud Shell, omita el siguiente cmdlet:

    Connect-AzAccount
    

    Para comprobar que está usando la suscripción correcta, ejecute el siguiente cmdlet:

    Get-AzSubscription
    

    Si tiene varias suscripciones, seleccione la que quera usar.

    Select-AzSubscription -SubscriptionName "Name of subscription"
    
  2. Cree una puerta de enlace de red local. En una red virtual, la puerta de enlace de red local suele hacer referencia a la ubicación local. En este caso, la puerta de enlace de red local hace referencia a la red virtual clásica. Asígnele un nombre que sirva de referencia a Azure y especifique también el prefijo de espacio de direcciones. Azure usa el prefijo de dirección IP que especifique para identificar qué tráfico enviar a la ubicación local. Si necesita ajustar la información aquí posteriormente, antes de crear la puerta de enlace, puede modificar los valores y volver a ejecutar el ejemplo.

    -Name es el nombre de referencia que quiere asignar a la puerta de enlace de la red local.
    -AddressPrefix es el espacio de direcciones para la red virtual clásica.
    -GatewayIpAddress es la dirección IP pública de la puerta de enlace de la red virtual clásica. Asegúrese de cambiar el texto de ejemplo "n.n.n.n" para que refleje la dirección IP correcta.

    New-AzLocalNetworkGateway -Name ClassicVNetSite `
    -Location "West US" -AddressPrefix "10.1.0.0/16" `
    -GatewayIpAddress "n.n.n.n" -ResourceGroupName RMRG
    
  3. Solicite que se asigne una dirección IP pública a la puerta de enlace de la red virtual para Azure Resource Manager. No puede especificar la dirección IP que desea usar. La dirección IP se asigna dinámicamente a la puerta de enlace de red virtual. Sin embargo, esto no significa que la dirección IP vaya a cambiar. La única vez que cambia la dirección IP de la puerta de enlace virtual es cuando se elimina y se vuelve a crear la puerta de enlace. No cambiará al modificar el tamaño, restablecer o realizar otro tipo de mantenimiento interno o actualizaciones de la puerta de enlace.

    En este paso, también se establece una variable que se utilizará en un paso posterior.

    $ipaddress = New-AzPublicIpAddress -Name rmgwpip `
    -ResourceGroupName RMRG -Location 'EastUS' `
    -AllocationMethod Dynamic
    
  4. Compruebe que la red virtual tenga una subred de puerta de enlace. Si no existe ninguna subred de puerta de enlace, agregue una. Asegúrese de que la subred de puerta de enlace tenga el nombre GatewaySubnet.

    $vnet = Get-AzVirtualNetwork -ResourceGroupName RMRG -Name RMVNet
    Add-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -AddressPrefix 192.168.255.0/27 -VirtualNetwork $vnet
    Set-AzVirtualNetwork -VirtualNetwork $vnet
    
  5. Recupere la subred usada para la puerta de enlace mediante la ejecución del comando siguiente. En este paso, también se establece una variable que se utilizará en el paso siguiente.

    -Name es el nombre de la red virtual de Resource Manager.
    -ResourceGroupName es el grupo de recursos con el que está asociado la red virtual. La subred de puerta de enlace debe existir para esta red virtual y su nombre tiene que ser GatewaySubnet para que funcione correctamente.

    $subnet = Get-AzVirtualNetworkSubnetConfig -Name GatewaySubnet `
    -VirtualNetwork (Get-AzVirtualNetwork -Name RMVNet -ResourceGroupName RMRG)
    
  6. Cree la configuración de direccionamiento IP de la puerta de enlace. La configuración de puerta de enlace define la subred y la dirección IP pública. Use el ejemplo siguiente para crear la configuración de la puerta de enlace.

    En este paso, debe pasarse la propiedad de Id de la subred y los objetos de la dirección IP respectivamente a los parámetros -SubnetId y -PublicIpAddressId. No puede usar una cadena sencilla. Estas variables se establecen en el paso para solicitar una dirección IP pública y el paso para recuperar la subred.

    $gwipconfig = New-AzVirtualNetworkGatewayIpConfig `
    -Name gwipconfig -SubnetId $subnet.id `
    -PublicIpAddressId $ipaddress.id
    
  7. Cree la puerta de enlace de la red virtual de Resource Manager mediante la ejecución del comando siguiente. -VpnType debe ser RouteBased. La puerta de enlace puede tardar hasta 45 o más minutos en crearse.

    New-AzVirtualNetworkGateway -Name RMGateway -ResourceGroupName RMRG `
    -Location "EastUS" -GatewaySKU Standard -GatewayType Vpn `
    -IpConfigurations $gwipconfig `
    -EnableBgp $false -VpnType RouteBased
    
  8. Copie la dirección IP pública una vez creada la instancia de VPN Gateway. Utilícela cuando configure la red local para la red virtual implementada con el modelo clásico. Puede utilizar el siguiente cmdlet para recuperar la dirección IP pública. La dirección IP pública aparece devuelta como IpAddress.

    Get-AzPublicIpAddress -Name rmgwpip -ResourceGroupName RMRG
    

Modificación de la configuración del sitio local de la red virtual clásica

En esta sección trabajará con la red virtual clásica. Reemplace la dirección IP de marcador de posición que ha utilizado al especificar la configuración del sitio local que se usará para conectarse a la puerta de enlace de la red virtual de Resource Manager. Puesto que está trabajando con la red virtual clásica, use la instancia de PowerShell que tiene instalada de forma local en el equipo y no la opción Pruébelo de Azure Cloud Shell.

  1. Exporte un archivo de configuración de red.

    Get-AzureVNetConfig -ExportToFile C:\AzureNet\NetworkConfig.xml
    
  2. Con un editor de texto, modifique el valor de VPNGatewayAddress. Reemplace la dirección IP de marcador de posición por la dirección IP pública de la puerta de enlace de la red virtual de Resource Manager.

    <VPNGatewayAddress>13.68.210.16</VPNGatewayAddress>
    
  3. Importe el archivo de configuración de red modificado a Azure.

    Set-AzureVNetConfig -ConfigurationPath C:\AzureNet\NetworkConfig.xml
    

Creación de una conexión entre las puertas de enlace

La creación de una conexión entre las puertas de enlace requiere PowerShell. Es posible que tenga que agregar su cuenta de Azure para usar la versión clásica de los cmdlets de PowerShell. Para ello, use Add-AzureAccount.

  1. En la consola de PowerShell, establezca la clave compartida. Antes de ejecutar los cmdlets, consulte el archivo de configuración de red que ha descargado para consultar los nombres exactos que Azure espera ver. Al especificar el nombre de una red virtual que contiene espacios, utilice comillas simples alrededor del valor.

    En el ejemplo siguiente, -VNetName es el nombre de la red virtual clásica y -LocalNetworkSiteName es el nombre especificado para el sitio de la red local. Compruebe los nombres de ambos en el archivo de configuración de red que descargó anteriormente.

    -SharedKey es un valor que se puede generar y especificar. En este ejemplo, hemos utilizado 'abc123' pero puede generar y usar algo más complejo. Lo importante es que el valor que especifique aquí debe ser el mismo que el que va a especificar en el paso siguiente, cuando cree la conexión. El valor devuelto para este ejemplo muestra Estado: Correcto.

    Set-AzureVNetGatewayKey -VNetName ClassicVNet `
    -LocalNetworkSiteName RMVNetSite -SharedKey abc123
    
  2. Ejecute los comandos siguientes para crear la conexión de VPN:

    Establezca las variables.

    $vnet01gateway = Get-AzLocalNetworkGateway -Name ClassicVNetSite -ResourceGroupName RMRG
    $vnet02gateway = Get-AzVirtualNetworkGateway -Name RMGateway -ResourceGroupName RMRG
    

    Cree la conexión. Tenga en cuenta que -ConnectionType es IPsec y no Vnet2Vnet.

    New-AzVirtualNetworkGatewayConnection -Name RM-Classic -ResourceGroupName RMRG `
    -Location "East US" -VirtualNetworkGateway1 `
    $vnet02gateway -LocalNetworkGateway2 `
    $vnet01gateway -ConnectionType IPsec -RoutingWeight 10 -SharedKey 'abc123'
    

Comprobación de las conexiones

Red virtual clásica a red virtual de RM

Puede comprobar que la conexión se realizó correctamente mediante el cmdlet "Get-AzureVNetConnection". Este cmdlet debe ejecutarse localmente en el equipo.

  1. Puede usar el siguiente ejemplo de cmdlet, configurando los valores para que coincidan con los tuyos. Si el nombre de la red virtual contiene espacios, debe estar entre comillas. Use el nombre de la red virtual, como se encuentra en el archivo de configuración de red.

    Get-AzureVNetConnection "ClassicVNet"
    
  2. Cuando el cmdlet haya finalizado, consulte los valores. En el ejemplo siguiente, el estado de conectividad se muestra como "Conectado" y puede ver bytes de entrada y salida.

    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           :
    

Red virtual de RM a red virtual clásica

Puede comprobar que la conexión se realizó correctamente mediante el uso del cmdlet "Get-AzVirtualNetworkGatewayConnection", con o sin "-Debug".

  1. Puede usar el siguiente ejemplo de cmdlet, configurando los valores para que coincidan con los tuyos. Cuando se le pida, seleccione "A" para ejecutar "todo". En el ejemplo, " -Name" hace referencia al nombre de la conexión que desea probar.

    Get-AzVirtualNetworkGatewayConnection -Name VNet1toSite1 -ResourceGroupName TestRG1
    
  2. Cuando el cmdlet haya finalizado, consulte los valores. En el ejemplo siguiente, el estado de conexión se muestra como "Conectado" y puede ver bytes de entrada y salida.

    "connectionStatus": "Connected",
    "ingressBytesTransferred": 33509044,
    "egressBytesTransferred": 4142431
    

Pasos siguientes

Para más información sobre las conexiones de red virtual a red virtual, consulte Preguntas más frecuentes sobre VPN Gateway.