Búsqueda de sitios web

Administrar conexiones VPN con PowerShell en Windows


En la GUI de Windows 10/11, solo está disponible la interfaz liviana para configurar conexiones VPN, lo que no le permite configurar algunos ajustes de VPN. Puede usar tanto la interfaz de configuración de conexión VPN clásica en el Panel de control como la aplicación de configuración de red moderna en el panel Configuración (la

ms-settings:network-vpn

Comando URI para la configuración de acceso rápido) para configurar la configuración de su conexión VPN. En esta publicación, veremos cómo administrar las conexiones VPN en Windows usando PowerShell: cómo crear/cambiar/eliminar una conexión VPN y conectarse/desconectarse de un servidor VPN.

Para crear una nueva conexión VPN en Windows, utilice el cmdlet Add-VpnConnection. En el caso más simple, debe ingresar un nombre de conexión y una dirección de servidor VPN.

Add-VpnConnection -Name VPNname1 -ServerAddress "vpn.a-d.site” -PassThru

Para configurar ajustes personalizados para una conexión VPN, use las siguientes opciones (las más populares):

  • TunnelType: tipo de túnel VPN. Están disponibles los siguientes tipos:

    • Automatic

      - Windows intenta detectar un tipo de túnel VPN por sí mismo

    • IKEv2

      — Intercambio de claves de Internet

    • PPTP

      - Protocolo de tunelización punto a punto

    • L2TP

      - Protocolo de tunelización de capa 2/IPsec con un certificado o una clave precompartida

    • SSTP

      - Protocolo de tunelización de sockets seguros

  • L2TPPsk: clave precompartida para la autenticación (solo L2TP). Si la opción no está configurada, se utiliza un certificado para la autenticación L2TP

  • AuthenticationMethod: un tipo de autenticación. Puedes usar:

    Pap

    ,

    Chap

    ,

    MSChapv2

    ,

    Eap

    ,

    MachineCertificate
  • EncryptionLevel: configuración de cifrado (

    NoEncryption

    ,

    Optional

    ,

    Required

    ,

    Maximum

    ,

    Custom 

    )

  • Tunneling dividido: establece si todo el tráfico de una computadora debe enviarse a través del túnel VPN (como la opción Usar la puerta de enlace predeterminada en la red remota en la configuración del adaptador VPN)

  • UseWinlogonCredential : use las credenciales de usuario actuales para autenticarse en un servidor VPN

  • AllUserConnection: permite usar la conexión VPN para todos los usuarios de computadoras

  • RememberCredential: permite usar las credenciales VPN guardadas (un nombre de usuario y una contraseña se guardan en Windows Credential Manager después de la primera conexión exitosa)

  • PassThru: permite mostrar una salida de comando (se recomienda usar para todos los comandos)

Estos son algunos ejemplos de comandos de PowerShell para crear diferentes tipos de conexiones VPN.

  • L2TP/IPsec:

    Add-VpnConnection -Name "VPN_L2TP" -ServerAddress "vpn.a-d.site" -TunnelType L2TP -L2tpPsk "My1pre-SharedKey2" -Force -EncryptionLevel "Required" -AuthenticationMethod MSChapv2 -UseWinlogonCredential -RememberCredential -AllUserConnection -PassThru
  • PPTP:

    Add-VpnConnection -Name "VPN_PPTP" -ServerAddress "vpn.a-d.site" TunnelType "PPTP" -EncryptionLevel "Required" -AuthenticationMethod MSChapv2 -SplitTunneling -PassThru
  • SSTP: antes que nada, debe importar una CA raíz de un servidor VPN al almacén de certificados de la computadora y usar el FQDN del servidor VPN especificado en el certificado (CN: nombre común o nombre alternativo del sujeto) como su dirección:

    Add-VpnConnection -Name "VPN_SSTP" -ServerAddress "vpn.a-d.site" -TunnelType "SSTP" -EncryptionLevel "Required" -AuthenticationMethod MSChapv2 -RememberCredential -SplitTunneling -PassThru 

    Al usar certificados autofirmados, puede agregar varios nombres (SAN) a un certificado mediante PowerShell.

  • IKEv2: primero debe importar la CA raíz al almacén de certificados raíz de confianza de Windows e importar el certificado del equipo al almacén de certificados personales:

    Import-PfxCertificate -FilePath $comp_certificate -CertStoreLocation Cert:\LocalMachine\My\ -Password $password
    Import-Certificate -FilePath $ca_cert -CertStoreLocation Cert:\LocalMachine\Root\
    Add-VpnConnection -Name "VPN_IKEv2" -ServerAddress "vpn.a-d.site" -TunnelType Ikev2 -EncryptionLevel "Maximum" -AuthenticationMethod MachineCertificate -SplitTunneling $True -PassThru

Las conexiones VPN disponibles para todos los usuarios (creadas con la opción AllUserConnection) se muestran en el Centro de redes con el Sistema como Propietario. La conexión del usuario tendrá dominio\nombre de usuario aquí.

Las conexiones VPN compartidas se guardan en un archivo de texto:

%ProgramData%\Microsoft\Network\connections\Pbk\rasphone.pbk

Para cambiar la configuración de una conexión VPN existente, use el comando Set-VpnConnection:

Set-VpnConnection -Name "VPN_SSTP" -splittunneling $false -PassThru

Si desea cambiar las opciones de IPsec para una conexión VPN existente, use el cmdlet Set-VpnConnectionIpsecConfiguration (solo para IKEv2 o L2TP VPN):

Set-VpnConnectionIPsecConfiguration -ConnectionName "VPN_IKEv2" -AuthenticationTransformConstants SHA256128 -CipherTransformConstants AES256 -DHGroup Group14 -EncryptionMethod AES256 -IntegrityCheckMethod SHA256 -PfsGroup PFS2048 -PassThru

Puede usar el módulo VPNCredentialsHelper para guardar las credenciales para una conexión VPN.

Instale el módulo en su computadora desde la Galería de PowerShell (también puede instalar un módulo de PowerShell sin conexión):

Install-Module -Name VPNCredentialsHelper

Luego podrá guardar un nombre de usuario y una contraseña para su conexión VPN en el Administrador de credenciales de Windows:

$user = "vpn_username1"
$plainpass = "vpn_password1"
Set-VpnConnectionUsernamePassword -connectionname "VPN_SSTP" -username $user -password $plainpass

En las versiones modernas de Windows, puede agregar dinámicamente rutas estáticas a la tabla de enrutamiento cuando se conecta a una VPN.

Add-VpnConnectionRoute -ConnectionName "VPN" -DestinationPrefix 192.168.31.0/24 -PassThru

La ruta se habilitará solo después de una conexión exitosa a un servidor VPN.

Para mostrar una lista de todas las conexiones VPN disponibles para un usuario:

Get-VpnConnection

Para eliminar una conexión VPN:

Remove-VpnConnection -Name "VPN_SSTP"

Para conectarse a un servidor VPN usando un perfil VPN configurado anteriormente:

rasdial "VPN_SSTP"

Para obtener los estados de todas las conexiones VPN:

Get-Vpnconnection | Select Name, Connectionstatus

Aquí hay algunos artículos útiles para resolver problemas típicos con las conexiones VPN en Windows:

  • Error de VPN: es posible que deba cambiar la configuración de red

  • Sin acceso a Internet cuando la VPN está activa

  • No se puede conectar al servidor L2TP/IPsec detrás del dispositivo NAT-T

  • La resolución DNS de Windows a través de la conexión VPN no funciona

Artículos relacionados