OpenVPN s'inicia en l'inici de sessió però no en arrencar Windows?
Una drecera d'inici executa una aplicació d'escriptori, no el servei automàtic. Comproveu quina font de perfil llegeix el servei abans de moure fitxers.
Els túnels que només apareixen després que algú iniciï sessió normalment els llança la sessió d'aquesta persona, no el servei automàtic. El culpable habitual és una drecera d'inici que executa openvpn-gui.exe, i no és una instal·lació trencada. La drecera inicia una aplicació d'escriptori dins d'una sessió d'usuari, amb el perfil d'aquest usuari, els seus magatzems de certificats i la seva capacitat de respondre una indicació. Res d'això fa que la connexió sigui independent d'una persona que hagi iniciat sessió, i és exactament el que exigeix un túnel previ a l'inici de sessió.
El símptoma normalment té tres causes
Tres patrons semblen iguals des de fora i tenen solucions diferents. El primer és un propietari d'execució que és una sessió d'usuari en lloc del servei, que és el cas de la drecera d'inici. El segon és un perfil que viu on el servei no mira, així que el servei arrenca, no troba res i surt net. El tercer és un perfil que el servei troba i arrenca, però les credencials del qual necessiten una interacció que cap servei pot proporcionar.
Identificar quin s'aplica requereix dues lectures: què està configurat per executar el servei i quins fitxers pot veure. Totes dues són una ordre cadascuna, i cap no altera una connexió en curs.
Què llegeix realment el servei automàtic
El servei automàtic de Community és un embolcall que explora el seu directori d'inici automàtic configurat, normalment config-auto dins de la instal·lació, i llança un procés d'OpenVPN per a cada perfil coincident que troba. Un perfil visible al menú GUI d'un usuari viu, en canvi, sota el perfil mòbil d'aquest usuari, en un directori que el compte del servei no llegeix. La guia del servei de Windows descriu aquest descobriment, i val la pena llegir-la abans de copiar res, perquè el directori de destinació és una propietat de la instal·lació i no una convenció fixa. Copiar un fitxer a la carpeta del GUI, doncs, no canvia res per al servei, i copiar-lo a cada carpeta anomenada config crea duplicats en lloc d'una solució.
Get-Service OpenVPNService | Select-Object Status, StartType
Get-CimInstance Win32_Service | Where-Object Name -eq 'OpenVPNService' | Select-Object PathName, StartName
gci 'C:\Program Files\OpenVPN\config-auto'
L'última ordre llista què veurà realment l'embolcall, que és la manera més ràpida de confirmar que un perfil és al lloc equivocat. La segona línia també mostra el compte amb què s'executa el servei, i aquest compte decideix quines rutes de fitxers i magatzems de certificats són accessibles.
Per què funciona un inici de sessió d'escriptori i un inici d'arrencada no
L'èxit a l'escriptori pot amagar durant molt de temps una dependència d'entrada. Un GUI pot recollir una frase de contrasenya d'una clau, una contrasenya de compte o un segon factor en un diàleg, perquè s'executa en una sessió interactiva amb un escriptori visible. Un servei s'executa en una sessió sense escriptori, així que una petició d'entrada no té on aparèixer, i la connexió falla després d'un temps d'espera que no s'assembla gens a un problema de credencials.
L'accés als fitxers segueix la mateixa regla. Una clau privada desada sota el perfil de l'usuari, o un certificat al magatzem personal de l'usuari, no està disponible per a un servei que s'executa com a màquina. Compareu rutes absolutes, permisos i la selecció de certificat que fa cada part, en lloc de suposar que el mateix fitxer de perfil implica el mateix entorn.
Una tasca programada per executar-se tant si un usuari ha iniciat sessió com si no hereta una restricció similar. Pot iniciar l'executable del GUI amb èxit i tot i així produir un procés que mai obté credencials, així que la presència d'un procés al gestor de tasques no és prova d'un túnel que funcioni.
Trieu un propietari i proveu el cicle de vida real
Per a una connexió que pertany a una persona que ha iniciat sessió, feu servir el comportament d'inici automàtic compatible del GUI i deixeu el servei fora. Per a un túnel que ha d'existir abans que ningú iniciï sessió, configureu el servei, col·loqueu el perfil on l'embolcall el llegeix i feu servir un mecanisme de credencials desatès compatible, com ara una clau sense frase de contrasenya interactiva o un fitxer de credencials documentat.
Get-Content 'C:\Program Files\OpenVPN\log\openvpn.log' -Tail 40
Get-WinEvent -LogName Application -MaxEvents 20 | Where-Object ProviderName -like '*OpenVPN*'
Proveu el cicle de vida que importa: un reinici sense que ningú iniciï sessió i després una reconnexió després d'un canvi de xarxa. Manteniu un sol propietari per a la connexió, perquè dos mecanismes d'inici competidors solen produir dues instàncies que es barallen per les mateixes rutes i la mateixa sessió de servidor, cosa més difícil de diagnosticar que qualsevol dels mecanismes per separat.