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.

Agregue una conexión VPN a través de la aplicación de configuración en Windows 10 u 11

Para crear una nueva conexión VPN en Windows, use el Add-VpnConnection cmdlet. 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.woshub.com” -PassThru

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

  • Tipo de túnel –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
  • Método de autentificación – un tipo de autenticación. Puedes usar: Pap, Chap, MSChapv2, Eap, MachineCertificate
  • Nivel de cifrado – configuración de cifrado ( NoEncryption, Optional, Required, Maximum, Custom )
  • SplitTunelización – establece si todo el tráfico de una computadora debe enviarse a través del túnel VPN (como Usar la puerta de enlace predeterminada en la red remota opción en la configuración del adaptador VPN)
  • UseWinlogonCredential –usar las credenciales de usuario actuales para autenticarse en un servidor VPN
  • AllUserConnection – permite usar la conexión VPN para todos los usuarios de computadoras
  • Recordar Credencial –permite usar las credenciales VPN guardadas (un nombre de usuario y una contraseña se guardan en el Administrador de credenciales de Windows después de la primera conexión exitosa)
  • Pasar a través de – 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.woshub.com" -TunnelType L2TP -L2tpPsk "My1pre-SharedKey2" -Force -EncryptionLevel "Required" -AuthenticationMethod MSChapv2 -UseWinlogonCredential -RememberCredential -AllUserConnection –PassThru
  • PPTP: Add-VpnConnection -Name "VPN_PPTP" -ServerAddress "vpn.woshub.com" TunnelType "PPTP" -EncryptionLevel "Required" -AuthenticationMethod MSChapv2 -SplitTunneling -PassThru
  • SSTP: en primer lugar, 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.woshub.com" -TunnelType "SSTP" -EncryptionLevel "Required" -AuthenticationMethod MSChapv2 -RememberCredential -SplitTunneling -PassThru
  • 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:LocalMachineMy -Password $password
    Import-Certificate -FilePath $ca_cert -CertStoreLocation Cert:LocalMachineRoot
    Add-VpnConnection -Name "VPN_IKEv2" -ServerAddress "vpn.woshub.com" -TunnelType Ikev2 -EncryptionLevel "Maximum" -AuthenticationMethod MachineCertificate -SplitTunneling $True -PassThru

Add-VpnConnection: crea una conexión VPN con PowerShell

Las conexiones VPN disponibles para todos los usuarios (creadas mediante la opción AllUserConnection) se muestran en el Centro de redes con Sistema como un Dueño. La conexión del usuario tendrá Nombre de dominio usuario listado aquí.

lista de conexiones de red en windows

Las conexiones VPN compartidas se guardan en un archivo de texto: %ProgramData%MicrosoftNetworkconnectionsPbkrasphone.pbk.

El archivo rasphone.pbk contiene configuraciones de conexión vpn

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

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

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

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

Puedes usar el VPNCredentialsHelper módulo 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"

rasdial - conecta vpn desde el símbolo del sistema

Para obtener los estados de todas las conexiones VPN:

Get-Vpnconnection | Select Name, Connectionstatus

Get-Vpnconnection: enumera los estados de conexión VPN en Windows

Artículos Interesantes