Tunely, ktoré sa objavia až po niekoho prihlásení, zvyčajne spúšťa relácia tejto osoby, nie automatická služba. Zvyčajným vinníkom je zástupca v automatickom spustení, ktorý spúšťa openvpn-gui.exe, a nie je to pokazená inštalácia. Zástupca spustí desktopovú aplikáciu v používateľskej relácii, s profilom tohto používateľa, úložiskami certifikátov tohto používateľa a schopnosťou tohto používateľa odpovedať na výzvu. Nič z toho nerobí pripojenie nezávislým od prihláseného človeka, a presne to tunel pred prihlásením vyžaduje.

Príznak má zvyčajne tri príčiny

Tri vzory vyzerajú zvonku rovnako a majú rôzne opravy. Prvý je vlastník vykonávania, ktorým je používateľská relácia namiesto služby, teda prípad zástupcu v automatickom spustení. Druhý je profil, ktorý sa nachádza tam, kam sa služba nepozerá, takže služba sa spustí, nič nenájde a čisto skončí. Tretí je profil, ktorý služba nájde a spustí, ale ktorého prihlasovacie údaje potrebujú interakciu, ktorú žiadna služba nedokáže poskytnúť.

Zistenie, ktorý prípad platí, si vyžaduje dve čítania: čo je služba nakonfigurovaná spúšťať a ktoré súbory vidí. Obe sú jeden príkaz, a ani jedno neprerušuje bežiace pripojenie.

Čo automatická služba skutočne číta

Automatická služba Community je obal, ktorý prehľadáva nakonfigurovaný adresár automatického spustenia, zvyčajne config-auto v inštalácii, a pre každý nájdený zodpovedajúci profil spustí proces OpenVPN. Profil viditeľný v ponuke GUI používateľa sa namiesto toho nachádza pod roamingovým profilom tohto používateľa, v adresári, ktorý servisný účet nečíta. Príručka služby Windows opisuje toto zisťovanie a stojí za prečítanie pred kopírovaním čohokoľvek, pretože cieľový adresár je vlastnosťou inštalácie, nie pevnou konvenciou. Preto kopírovanie súboru do priečinka GUI pre službu nič nemení, a kopírovanie do každého priečinka s názvom config vytvára duplikáty namiesto opravy.

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'

Posledný príkaz uvádza, čo obal skutočne uvidí, čo je najrýchlejší spôsob, ako potvrdiť, že profil je na nesprávnom mieste. Druhý riadok tiež ukazuje účet, pod ktorým služba beží, a tento účet rozhoduje o tom, ktoré cesty k súborom a úložiská certifikátov sú vôbec dostupné.

Prečo prihlásenie na desktope funguje a spustenie pri štarte nie

Úspech na desktope môže dlho skrývať závislosť od vstupu. GUI dokáže zhromaždiť prístupovú frázu ku kľúču, heslo účtu alebo druhý faktor v dialógu, pretože beží v interaktívnej relácii s viditeľným desktopom. Služba beží v relácii bez desktopu, takže požiadavka na vstup nemá kde sa objaviť, a pripojenie zlyhá po časovom limite, ktorý vôbec nepripomína problém s prihlasovacími údajmi.

Prístup k súborom sa riadi rovnakým pravidlom. Súkromný kľúč uložený v používateľskom profile alebo certifikát v osobnom úložisku používateľa nie je dostupný službe, ktorá beží ako počítač. Porovnajte absolútne cesty, povolenia a výber certifikátu, ktorý robí každá strana, namiesto predpokladu, že rovnaký profilový súbor znamená rovnaké prostredie.

Naplánovaná úloha nastavená na spustenie bez ohľadu na to, či je používateľ prihlásený, dedí podobné obmedzenie. Môže úspešne spustiť spustiteľný súbor GUI a napriek tomu vytvoriť proces, ktorý nikdy nezíska prihlasovacie údaje, takže prítomnosť procesu v správcovi úloh nie je dôkazom fungujúceho tunela.

Vyberte jedného vlastníka a otestujte skutočný životný cyklus

Pre pripojenie, ktoré patrí prihlásenej osobe, použite podporované správanie automatického spustenia v GUI a nechajte službu mimo neho. Pre tunel, ktorý musí existovať predtým, než sa niekto prihlási, nakonfigurujte službu, umiestnite profil tam, kde ho obal číta, a použite podporovaný mechanizmus prihlasovacích údajov bez dozoru, napríklad kľúč bez interaktívnej prístupovej frázy alebo zdokumentovaný súbor s prihlasovacími údajmi.

Get-Content 'C:\Program Files\OpenVPN\log\openvpn.log' -Tail 40
Get-WinEvent -LogName Application -MaxEvents 20 | Where-Object ProviderName -like '*OpenVPN*'

Otestujte životný cyklus, na ktorom záleží: reštart, pri ktorom sa nikto neprihlási, a potom opätovné pripojenie po zmene siete. Udržujte jedného vlastníka pripojenia, pretože dva konkurujúce mechanizmy spustenia zvyčajne vytvoria dve inštancie bojujúce o rovnaké trasy a rovnakú reláciu servera, čo sa diagnostikuje ťažšie než ktorýkoľvek mechanizmus samostatne.

Súvisiace články