Creación de una red virtual con una conexión VPN de sitio a sitio mediante PowerShell

Este artículo muestra cómo usar PowerShell para crear una conexión de puerta de enlace VPN de sitio a sitio desde la red local a la red virtual. Los pasos descritos en este artículo se aplican al modelo de implementación de Resource Manager. También se puede crear esta configuración con una herramienta o modelo de implementación distintos, mediante la selección de una opción diferente en la lista siguiente:

Se utiliza una conexión de puerta de enlace VPN de sitio a sitio para conectar su red local a una red virtual de Azure a través de un túnel VPN de IPsec/IKE (IKEv1 o IKEv2). Este tipo de conexión requiere un dispositivo VPN local que tenga una dirección IP pública asignada. Para más información acerca de las puertas de enlace VPN, consulte Acerca de VPN Gateway.

Diagram of site-to-site VPN Gateway cross-premises connections.

Antes de empezar

Antes de comenzar con la configuración, compruebe que se cumplen los criterios siguientes:

  • Asegúrese de tener un dispositivo VPN compatible y alguien que pueda configurarlo. Para más información acerca de los dispositivos VPN compatibles y su configuración, consulte Acerca de los dispositivos VPN.
  • Compruebe que tiene una dirección IPv4 pública externa para el dispositivo VPN.
  • Si no está familiarizado con los intervalos de direcciones IP ubicados en la red local, necesita trabajar con alguien que pueda proporcionarle estos detalles. Al crear esta configuración, debe especificar los prefijos del intervalo de direcciones IP al que Azure enrutará la ubicación local. Ninguna de las subredes de la red local puede superponerse con las subredes de la red virtual a la que desea conectarse.

Azure PowerShell

En este artículo se usan cmdlets de PowerShell. Para ejecutar los cmdlets, puede usar Azure Cloud Shell. Cloud Shell es un servicio de shell interactivo gratuito que se puede usar para ejecutar los pasos de este artículo. Tiene las herramientas comunes de Azure preinstaladas y configuradas para usarlas en la cuenta.

Para abrir Cloud Shell, seleccione Abrir Cloud Shell en la esquina superior derecha de un bloque de código. También puede abrir Cloud Shell en una pestaña independiente desde https://shell.azure.com/powershell. Seleccione Copiar para copiar los bloques de código, péguelos en Cloud Shell y, a continuación, seleccione la tecla Entrar para ejecutarlos.

También puede instalar y ejecutar los cmdlets de Azure PowerShell localmente en el equipo. Los cmdlets de PowerShell se actualizan con frecuencia. Si no ha instalado la última versión, los valores especificados en las instrucciones pueden dar lugar a errores. Para buscar las versiones de Azure PowerShell instaladas en el equipo, use el cmdlet Get-Module -ListAvailable Az. Para instalar la actualización, vea Instalación del módulo de Azure PowerShell.

Valores de ejemplo

Los ejemplos de este artículo utilizan los valores siguientes. Puede usar estos valores para crear un entorno de prueba o hacer referencia a ellos para comprender mejor los ejemplos de este artículo.

#Example values

VnetName                = VNet1
ResourceGroup           = TestRG1
Location                = East US 
AddressSpace            = 10.1.0.0/16 
SubnetName              = Frontend 
Subnet                  = 10.1.0.0/24 
GatewaySubnet           = 10.1.255.0/27
LocalNetworkGatewayName = Site1
LNG Public IP           = <On-premises VPN device IP address> 
Local Address Prefixes  = 10.0.0.0/24, 20.0.0.0/24
Gateway Name            = VNet1GW
PublicIP                = VNet1GWPIP
Gateway IP Config       = gwipconfig1 
VPNType                 = RouteBased 
GatewayType             = Vpn 
ConnectionName          = VNet1toSite1

1. Creación de una red virtual y una puerta de enlace

Si no tiene una red virtual, créela. Al crear una red virtual, compruebe que los espacios de direcciones especificados no se superponen con los espacios de direcciones que existen en la red local.

Nota:

Para que esta red virtual se conecte a una ubicación local, debe coordinarse con el administrador de la red local para delimitar un intervalo de direcciones IP que pueda usar específicamente para esta red virtual. Si existe un intervalo de direcciones duplicados en ambos lados de la conexión VPN, el tráfico no enruta la manera en que podría esperar que lo haga. Además, si desea conectar esta red virtual a otra red virtual, el espacio de direcciones no se puede superponer con otra red virtual. Por consiguiente, tenga cuidado al planear la configuración de red.

Acerca de la subred de puerta de enlace

La puerta de enlace de red virtual usa una subred concreta llamada la subred de la puerta de enlace. Esta subred forma parte del intervalo de direcciones IP de red virtual que se especifican al configurar una red virtual. Contiene las direcciones IP que usan los recursos y servicios de puerta de enlace de la red virtual. La subred debe llamarse "GatewaySubnet" para que Azure implemente los recursos de la puerta de enlace. No se puede especificar otra subred en la que implementar los recursos de la puerta de enlace. Si no dispone de una subred llamada "GatewaySubnet", al crear la puerta de enlace de VPN, se producirá un error.

Al crear la subred de puerta de enlace, especifique el número de direcciones IP que contiene la subred. El número de direcciones IP que se necesitan depende de la configuración de puerta de enlace de VPN que se desea crear. Algunas configuraciones requieren más direcciones IP que otras. Es aconsejable crear una subred de puerta de enlace que use /27 o /28.

Si ve un error en el que se indica que el espacio de direcciones se solapa con una subred o que la subred no se encuentra dentro del espacio de direcciones de la red virtual, compruebe el intervalo de direcciones de la red virtual. Es posible que no tenga suficientes direcciones IP disponibles en el intervalo de direcciones que creó para la red virtual. Por ejemplo, si la subred predeterminada engloba todo el intervalo de direcciones, no quedan direcciones IP para crear más subredes. Puede ajustar las subredes en el espacio de direcciones existente para liberar direcciones IP o especificar un intervalo de direcciones adicionales y crear en él la subred de la puerta de enlace.

Importante

Cuando trabaje con subredes de la puerta de enlace, evite asociar un grupo de seguridad de red (NSG) a la subred de la puerta de enlace. La asociación de un grupo de seguridad de red a esta subred puede causar que la puerta de enlace de la red virtual (VPN, puerta de enlace de ExpressRoute) deje 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?

Creación de una red virtual y una puerta de enlace

Este ejemplo crea una red virtual y una subred de la puerta de enlace. Si ya tiene una red virtual que necesite agregar a una subred de puerta de enlace, consulte Para agregar una subred de puerta de enlace a una red virtual que ya ha creado.

Cree un grupo de recursos:

New-AzResourceGroup -Name TestRG1 -Location 'East US'

Cree la red virtual.

  1. Establezca las variables.

    $subnet1 = New-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -AddressPrefix 10.1.255.0/27
    $subnet2 = New-AzVirtualNetworkSubnetConfig -Name 'Frontend' -AddressPrefix 10.1.0.0/24
    
  2. Cree la red virtual.

    New-AzVirtualNetwork -Name VNet1 -ResourceGroupName TestRG1 `
    -Location 'East US' -AddressPrefix 10.1.0.0/16 -Subnet $subnet1, $subnet2
    

Para agregar una subred de puerta de enlace a una red virtual que ya ha creado

Use los pasos de esta sección si ya tiene una red virtual, aunque deberá agregar una subred de puerta de enlace.

  1. Establezca las variables.

    $vnet = Get-AzVirtualNetwork -ResourceGroupName TestRG1 -Name VNet1
    
  2. Cree la subred de la puerta de enlace.

    Add-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -AddressPrefix 10.1.255.0/27 -VirtualNetwork $vnet
    
  3. Establezca la configuración.

    Set-AzVirtualNetwork -VirtualNetwork $vnet
    

2. Creación de la puerta de enlace de red local

La puerta de enlace de red local (LNG) suele hacer referencia a la ubicación local. No es lo mismo que una puerta de enlace de red. Asigne al sitio un nombre al que Azure pueda hacer referencia y, luego, especifique la dirección IP del dispositivo VPN local con la que creará una conexión. Especifique también los prefijos de dirección IP que se enrutarán a través de la puerta de enlace VPN al dispositivo VPN. Los prefijos de dirección que especifique son los prefijos que se encuentran en la red local. Puede actualizar fácilmente estos prefijos si cambia su red local.

Seleccione uno de los ejemplos siguientes. Los valores usados en los ejemplos son:

  • GatewayIPAddress es la dirección IP del dispositivo VPN local.
  • AddressPrefix es el espacio de direcciones local.

Ejemplo de prefijo de dirección único

New-AzLocalNetworkGateway -Name Site1 -ResourceGroupName TestRG1 `
-Location 'East US' -GatewayIpAddress '23.99.221.164' -AddressPrefix '10.0.0.0/24'

Ejemplo de prefijo de varias direcciones

New-AzLocalNetworkGateway -Name Site1 -ResourceGroupName TestRG1 `
-Location 'East US' -GatewayIpAddress '23.99.221.164' -AddressPrefix @('20.0.0.0/24','10.0.0.0/24')

3. Solicitud de una dirección IP pública

Una puerta de enlace VPN tiene que tener una dirección IP pública. Primero se solicita el recurso de la dirección IP y, después, se hace referencia a él al crear la puerta de enlace de red virtual. La dirección IP se asigna dinámicamente al recurso cuando se crea la puerta de enlace VPN. La única vez que la dirección IP pública cambia es cuando la puerta de enlace se elimina y se vuelve a crear. No cambia cuando se cambia el tamaño, se restablece o se realizan actualizaciones u otras operaciones de mantenimiento interno de una puerta de enlace VPN.

Solicite una dirección IP pública para la puerta de enlace VPN de la red virtual.

$gwpip= New-AzPublicIpAddress -Name VNet1GWPIP -ResourceGroupName TestRG1 -Location 'East US' -AllocationMethod Static -Sku Standard

4. Creación de la configuración de direccionamiento IP de la puerta de enlace

La configuración de puerta de enlace define la subred ("GatewaySubnet") y la dirección IP pública que se van a usar. Use el ejemplo siguiente para crear la configuración de la puerta de enlace:

$vnet = Get-AzVirtualNetwork -Name VNet1 -ResourceGroupName TestRG1
$subnet = Get-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -VirtualNetwork $vnet
$gwipconfig = New-AzVirtualNetworkGatewayIpConfig -Name gwipconfig1 -SubnetId $subnet.Id -PublicIpAddressId $gwpip.Id

5. Creación de la puerta de enlace VPN

Cree la puerta de enlace VPN de la red virtual. La creación de una puerta de enlace suele tardar 45 minutos o más, según la SKU de la puerta de enlace seleccionada. Los valores siguientes se usan en el ejemplo:

  • El valor -GatewayType para una configuración de sitio a sitio es Vpn. El tipo de puerta de enlace siempre es específico de la configuración que se vaya a implementar. Por ejemplo, otras configuraciones de puerta de enlace podrían requerir -GatewayType ExpressRoute.
  • El valor de -VpnType puede ser RouteBased (la llamada puerta de enlace dinámica en algunos documentos) o PolicyBased (la llamada puerta de enlace estática en algunos documentos). Para más información sobre los tipos de Puertas de enlace de VPN, consulte Información acerca de VPN Gateway.
  • Seleccione la SKU de la puerta de enlace que desea utilizar. Hay limitaciones de configuración para determinadas SKU. Consulte SKU de puertas de enlace para más información. Si se produce un error al crear la puerta de enlace VPN con respecto a - GatewaySku, compruebe que tiene instalada la versión más reciente de los cmdlets de PowerShell.
New-AzVirtualNetworkGateway -Name VNet1GW -ResourceGroupName TestRG1 `
-Location 'East US' -IpConfigurations $gwipconfig -GatewayType Vpn `
-VpnType RouteBased -GatewaySku VpnGw2

6. Configurar el dispositivo VPN

Las conexiones de sitio a sitio a una red local requieren un dispositivo VPN. En este paso, se configura el dispositivo VPN. Para configurar el dispositivo VPN, necesita los elementos siguientes:

  • Una clave compartida. Se trata de la misma clave compartida que se especifica al crear la conexión VPN de sitio a sitio. En estos ejemplos se utiliza una clave compartida básica. Se recomienda que genere y utilice una clave más compleja.

  • La dirección IP pública de la puerta de enlace de red virtual. Puede ver la dirección IP pública mediante Azure Portal, PowerShell o la CLI. Para buscar la dirección IP pública de la puerta de enlace de red virtual con PowerShell, utilice el siguiente ejemplo. En este ejemplo, VNet1GWPIP es el nombre del recurso de dirección IP pública que creó en un paso anterior.

    Get-AzPublicIpAddress -Name VNet1GWPIP -ResourceGroupName TestRG1
    

Para descargar el script de configuración de dispositivos VPN:

En función del dispositivo VPN que tenga, es posible que pueda descargar un script de configuración del mismo. Para más información, consulte Descarga de scripts de configuración de dispositivos VPN para conexiones VPN S2S.

En los siguientes vínculos encontrará más información acerca de la configuración:

7. Creación de la conexión VPN

Ahora va a crear la conexión VPN de sitio a sitio entre la puerta de enlace de red virtual y el dispositivo VPN. Asegúrese de reemplazar los valores por los suyos. La clave compartida debe coincidir con el valor usado para la configuración del dispositivo VPN. Tenga en cuenta que el valor de '-ConnectionType' para la configuración sitio a sitio es IPsec.

  1. Establezca las variables.

    $gateway1 = Get-AzVirtualNetworkGateway -Name VNet1GW -ResourceGroupName TestRG1
    $local = Get-AzLocalNetworkGateway -Name Site1 -ResourceGroupName TestRG1
    
  2. Cree la conexión.

    New-AzVirtualNetworkGatewayConnection -Name VNet1toSite1 -ResourceGroupName TestRG1 `
    -Location 'East US' -VirtualNetworkGateway1 $gateway1 -LocalNetworkGateway2 $local `
    -ConnectionType IPsec -SharedKey 'abc123'
    

Pasado un momento, se establecerá la conexión.

8. Comprobación de la conexión VPN

Hay varias maneras diferentes de comprobar la conexión VPN.

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 aparece como "Conectado" y pueden verse los bytes de entrada y salida.

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

Para conectarse a una máquina virtual

Puede conectarse a una máquina virtual que esté implementada en la red virtual mediante la creación de una conexión de Escritorio remoto a la máquina virtual. La mejor manera de comprobar inicialmente que puede conectarse a la máquina virtual es hacerlo mediante su dirección IP privada, en lugar del nombre de equipo. Con este método prueba si puede conectarse, no si la resolución de nombres está configurada correctamente.

  1. Busque la dirección IP privada. Para buscar la dirección IP privada de una máquina virtual, examine sus propiedades en Azure Portal o use PowerShell.

    • Azure portal: Ubique la máquina virtual en Azure Portal. Vea las propiedades de la máquina virtual. Se enumera la dirección IP privada.

    • PowerShell: utilice el ejemplo para ver una lista de las máquinas virtuales y las direcciones IP privadas de los grupos de recursos. No es preciso modificar el ejemplo para usarlo.

      $VMs = Get-AzVM
      $Nics = Get-AzNetworkInterface | Where-Object VirtualMachine -ne $null
      
      foreach ($Nic in $Nics) {
      $VM = $VMs | Where-Object -Property Id -eq $Nic.VirtualMachine.Id
      $Prv = $Nic.IpConfigurations | Select-Object -ExpandProperty PrivateIpAddress
      $Alloc = $Nic.IpConfigurations | Select-Object -ExpandProperty PrivateIpAllocationMethod
      Write-Output "$($VM.Name): $Prv,$Alloc"
      }
      
  2. Compruebe que está conectado a la red virtual.

  3. Abra Conexión a Escritorio remoto, para lo que debe escribir RDP o Conexión a Escritorio remoto en el cuadro de búsqueda de la barra de tareas y, después, seleccione Conexión a Escritorio remoto. Luego, seleccione Conexión a Escritorio remoto. Conexión a Escritorio remoto también se puede abrir con el comando mstsc de PowerShell.

  4. En Conexión a Escritorio remoto, escriba la dirección IP privada de la máquina virtual. Puede seleccionar Mostrar opciones para ajustar parámetros adicionales y, después, conectarse.

Si tiene problemas para conectarse a una máquina virtual a través de su conexión VPN, compruebe los siguientes puntos:

  • Compruebe que la conexión VPN se ha establecido correctamente.
  • Compruebe que se conecta a la dirección IP privada de la máquina virtual.
  • Si puede conectarse a la máquina virtual mediante la dirección IP privada, pero no el nombre del equipo, compruebe que ha configurado el DNS correctamente. Para más información acerca de cómo funciona la resolución de nombres para las máquinas virtuales, consulte Resolución de nombres para las máquinas virtuales e instancias de rol.

Para más información acerca de las conexiones RDP, consulte Solución de problemas de conexiones del Escritorio remoto a una máquina virtual de Azure.

Para modificar los prefijos de dirección IP de una puerta de enlace de red local

Si cambian los prefijos de las direcciones IP que desea enrutar a una ubicación local, puede modificar la puerta de enlace de red local. Al usar estos ejemplos, modifique los valores para que coincidan con su entorno.

Para agregar prefijos de dirección adicionales:

  1. Establezca la variable para LocalNetworkGateway.

    $local = Get-AzLocalNetworkGateway -Name Site1 -ResourceGroupName TestRG1
    
  2. Modifique los prefijos. Los valores especificados sobrescriben los valores anteriores.

    Set-AzLocalNetworkGateway -LocalNetworkGateway $local `
    -AddressPrefix @('10.101.0.0/24','10.101.1.0/24','10.101.2.0/24')
    

Para quitar prefijos de dirección:

Omita los prefijos que ya no necesite. En este ejemplo, ya no necesitamos el prefijo 10.101.2.0/24 (del ejemplo anterior), por lo que se actualizará la puerta de enlace de red local y se excluirá ese prefijo.

  1. Establezca la variable para LocalNetworkGateway.

    $local = Get-AzLocalNetworkGateway -Name Site1 -ResourceGroupName TestRG1
    
  2. Establezca la puerta de enlace con los prefijos actualizados.

    Set-AzLocalNetworkGateway -LocalNetworkGateway $local `
    -AddressPrefix @('10.101.0.0/24','10.101.1.0/24')
    

Para modificar la dirección IP de una puerta de enlace de red local

Si el dispositivo VPN al que desea conectarse ha cambiado su dirección IP pública, debe modificar la puerta de enlace de red local para reflejar ese cambio. Al modificar este valor, también puede modificar al mismo tiempo los prefijos de dirección. Asegúrese de usar el nombre existente de la puerta de enlace de la red local para sobrescribir la configuración actual. Si usa otro nombre, creará una nueva puerta de enlace de red local, en lugar de sobrescribir la existente.

New-AzLocalNetworkGateway -Name Site1 `
-Location "East US" -AddressPrefix @('10.101.0.0/24','10.101.1.0/24') `
-GatewayIpAddress "5.4.3.2" -ResourceGroupName TestRG1

Para eliminar una conexión de puerta de enlace

Si no conoce el nombre de la conexión, puede encontrarlo mediante el cmdlet "Get-AzVirtualNetworkGatewayConnection".

Remove-AzVirtualNetworkGatewayConnection -Name VNet1toSite1 `
-ResourceGroupName TestRG1

Pasos siguientes