O erro 789 nunha conexión L2TP de Windows significa que o túnel morreu dentro do intercambio de seguridade IPsec, o que ocorre moito antes de que Windows envíe un contrasinal de usuario a calquera parte. Volver tentar o contrasinal, ou restablecelo no directorio, non pode facer avanzar esa etapa. O que si a fai avanzar é reconstruír a conexión desde PowerShell coa proposta que a pasarela ofrece realmente, porque o asistente de Configuración escolle as transformacións IPsec en silencio e nunca lle mostra que elixiu. Este é o manual para iso: cree o perfil, fixe a proposta e despois use unha táboa de etapas para que o seguinte código lle diga algo.

Cree o perfil sen o asistente

Add-VpnConnection escribe unha entrada nativa da libreta de teléfonos, así que o resultado é o mesmo obxecto que a aplicación Configuración editará despois. Execúteo desde unha sesión elevada cando a conexión deba existir para cada conta da máquina, ou desde o contexto de usuario cando deba permanecer privada:

Add-VpnConnection -Name "Contoso L2TP" `
  -ServerAddress 203.0.113.10 `
  -TunnelType L2tp `
  -EncryptionLevel Required `
  -AuthenticationMethod MSChapv2 `
  -RememberCredential -Force

Faga coincidir -AuthenticationMethod co que ofrece a pasarela. MSChapv2, EAP e PAP non son intercambiables, e un perfil que esixe un método que o servidor non aceptará falla antes de que se consulte calquera rexistro de usuario. Manteña -EncryptionLevel Required para calquera cousa real; Optional permite que Windows acepte un túnel sen cifrar se o par ofrece un, o que é un atallo de laboratorio e non unha configuración para enviar.

Se pasa -L2tpPsk, esa clave precompartida escríbese no perfil do disco, desde onde calquera que poida ler o perfil nesa máquina pode recuperala. Use un certificado para autenticar o par cando a pasarela o admita, e cando unha PSK sexa inevitable, mantéñaa fóra do repositorio e do historial da shell en lugar de pegala en cada execución de aprovisionamento.

Fixe a proposta en lugar de aceptar os valores predeterminados

Windows enche as transformacións IPsec por si mesmo, e por iso dúas máquinas cunha conexión aparentemente idéntica poden fallar de forma distinta contra a mesma pasarela. Set-VpnConnectionIPsecConfiguration é a forma admitida de fixalas:

Set-VpnConnectionIPsecConfiguration -ConnectionName "Contoso L2TP" `
  -AuthenticationTransformConstants SHA256128 `
  -CipherTransformConstants AES128 `
  -EncryptionMethod AES128 `
  -IntegrityCheckMethod SHA256 `
  -DHGroup Group14 `
  -PfsGroup None `
  -PassThru -Force

Ese conxunto é unha disposición L2TP/IPsec habitual, non unha resposta universal. Cada parámetro acepta unha lista fixa de valores, e unha combinación que a plataforma non pode asignar volve como un erro do cmdlet en lugar dun perfil debilitado en silencio. Trate ese erro como unha afirmación sobre os valores, non sobre os seus permisos.

Copie a proposta da documentación da pasarela ou dos seus axustes activos de fase 1 e fase 2, e cambie un campo cada vez só mentres a pasarela rexistra as transformacións que rexeita. Percorrer cinco campos produce unha conexión que funciona por accidente e un rexistro que non explica nada á persoa seguinte.

Lea un fallo por etapa, non polo texto do erro

789 pertence a unha familia de códigos que no diálogo do cliente parecen todos iguais. Sitúe o código diante da etapa á que pertence antes de volver tocar o perfil:

What you seeStage that failedCheck first
Nothing happens, then a timeoutNo IKE response at allServer address, UDP 500 and 4500 reachability, NAT traversal on the gateway
Error 789IKE security exchangeProposal, pre-shared key, certificate trust and client clock
Error 691 or a repeated password promptUser authenticationAccount state, domain, RADIUS or NPS policy
Tunnel up, some hosts unreachableRouting or DNS after PPPSplit-tunnel routes, pushed DNS, remote subnet mask

As dúas funcións das credenciais importan aquí. Unha clave precompartida ou un certificado autentica os pares entre si, mentres que MSChapv2 ou EAP autentícao a vostede dentro do túnel. Restablecer un contrasinal de usuario non pode arranxar a primeira, un novo segredo compartido non pode arranxar a segunda, e cambiar ambas á vez destrúe a proba de cal estaba mal.

Na ruta do certificado, comprobe o reloxo do cliente, a cadea de confianza e a identidade que espera a pasarela antes de exporse relaxar a validación. Desactivar a validación converte un 789 visible nun túnel que se conecta confiando no par equivocado, e nada no cliente lle dirá que iso ocorreu. lista de erros de acceso remoto de Microsoft é a referencia para os propios códigos, e separa os fallos da capa de seguridade dos fallos de inicio de sesión.

Verifique desde ambos os extremos antes de darlo por arranxado

Volva ler o perfil, pero non espere a proposta na saída. Get-VpnConnection informa do nome, o enderezo do servidor, o tipo de túnel, o nivel de cifrado e o método de autenticación, e non sabe nada das transformacións, así que a lectura confirma que a entrada existe e apunta ao host correcto:

Get-VpnConnection -Name "Contoso L2TP" |
  Select-Object Name, ServerAddress, TunnelType, EncryptionLevel, AuthenticationMethod

Marque desde a liña de ordes para obter un número en lugar dun diálogo: rasdial "Contoso L2TP" devolve o mesmo código de fallo que devolvería a interface, e rasdial "Contoso L2TP" /disconnect bórrao entre intentos. Despois lea o lado da pasarela para ese mesmo intento. Un ipsec statusall de strongSwan ou un rexistro IKE do router indica que proposta chegou e cal foi rexeitada, e comparar iso cos valores do cmdlet é o único paso que demostra de verdade que ambos os extremos se puxeron de acordo.

Unha conexión correcta non é a liña de meta. Abra a aplicación que lle importa ao usuario, porque as rutas, o DNS empuxado e os axustes de túnel dividido fallan despois de que o túnel estea levantado e non producen ningún diálogo de erro.

Automatíceo e volva atrás limpiamente

A instalación desatendida é a razón para escribir un script disto, e o paso de marcado é onde se filtran as credenciais. rasdial cólleas na súa liña de ordes, onde outros usuarios locais e a maioría dos recolledores de rexistros poden lelas:

subprocess.run(["rasdial", "Contoso L2TP"], check=True)

Preira unha credencial limitada á conta que executa o traballo, ou deixe que o perfil a garde con -RememberCredential, en lugar de pasar un contrasinal como argumento nunha tarefa programada. Os propios comandos de aprovisionamento son seguros de repetir con -Force, pero superporán encantados unha proposta antiga, así que unha reexecución só axuda se o script leva os valores actuais.

Os perfís persisten entre reinicios e sobreviven á configuración de pasarela para a que se crearon. Cando a proposta da pasarela se move, elimine a entrada e volva creala en lugar de apilar un segundo conxunto de valores: Remove-VpnConnection -Name "Contoso L2TP" -Force, e despois repita os dous cmdlets co conxunto novo.

Pecha o bucle con catro comprobacións que viven xunto ao script: Get-VpnConnection mostra o tipo de túnel e o nivel de cifrado esperados; a pasarela rexistra unha fase 1 e unha fase 2 completadas para o enderezo do seu cliente; rasdial devolve éxito e a aplicación ábrese; e a proposta rexistrada no script coincide coa configuración actual da pasarela. Cando chegue o seguinte 789, esa comparación tarda minutos en lugar dunha tarde.

Artigos relacionados