OpenVPN se pokreće pri prijavi, ali ne pri podizanju Windowsa?
Prečica u pokretanju pokreće desktop aplikaciju, a ne automatsku uslugu. Provjerite koji izvor profila usluga čita prije nego što premještate datoteke.
Tuneli koji se pojave tek nakon što se neko prijavi obično se pokreću iz sesije te osobe, a ne iz automatske usluge. Uobičajeni krivac je prečica u pokretanju koja pokreće openvpn-gui.exe, i to nije pokvarena instalacija. Prečica pokreće desktop aplikaciju unutar korisničke sesije, s profilom tog korisnika, njegovim spremištima certifikata i njegovom mogućnošću da odgovori na upit. Ništa od toga ne čini vezu neovisnom od prijavljene osobe, a upravo to tunel prije prijave zahtijeva.
Simptom obično ima tri uzroka
Tri obrasca izvana izgledaju isto i imaju različite popravke. Prvi je vlasnik izvršavanja koji je korisnička sesija umjesto usluge, što je slučaj prečice u pokretanju. Drugi je profil koji živi tamo gdje usluga ne gleda, pa usluga krene, ne nađe ništa i čisto izađe. Treći je profil koji usluga nađe i pokrene, ali čiji podaci za prijavu traže interakciju koju nijedna usluga ne može pružiti.
Prepoznavanje koji slučaj vrijedi traži dva čitanja: što je usluga konfigurirana pokretati i koje datoteke može vidjeti. Oba su po jedna naredba i nijedno ne ometa aktivnu vezu.
Šta automatska usluga zapravo čita
Community automatska usluga je omotač koji skenira svoj konfigurirani direktorij za automatsko pokretanje, obično config-auto unutar instalacije, i pokreće OpenVPN proces za svaki odgovarajući profil koji nađe. Profil vidljiv u korisničkom GUI izborniku živi umjesto toga pod roaming profilom tog korisnika, u direktoriju koji servisni račun ne čita. Vodič za Windows uslugu opisuje to otkrivanje i vrijedi ga pročitati prije kopiranja bilo čega, jer je ciljni direktorij svojstvo instalacije, a ne fiksna konvencija. Kopiranje datoteke u GUI mapu zato ništa ne mijenja za uslugu, a kopiranje u svaku mapu zvanu config stvara duplikate, a ne popravku.
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'
Posljednja naredba navodi što će omotač zapravo vidjeti, što je najbrži način da potvrdite da je profil na pogrešnom mjestu. Drugi redak pokazuje i račun pod kojim usluga radi, a taj račun odlučuje koje su putanje datoteka i spremišta certifikata uopće dostupna.
Zašto prijava na desktop radi, a pokretanje pri podizanju ne
Uspjeh na desktopu može dugo skrivati ovisnost o unosu. GUI može prikupiti frazu za ključ, lozinku računa ili drugi faktor u dijalogu jer radi u interaktivnoj sesiji s vidljivim desktopom. Usluga radi u sesiji bez desktopa, pa zahtjev za unos nema gdje se pojaviti i veza padne nakon isteka vremena koje uopće ne sliči problemu s podacima za prijavu.
Pristup datotekama slijedi isto pravilo. Privatni ključ pohranjen pod korisničkim profilom ili certifikat u korisnikovom osobnom spremištu nije dostupan usluzi koja radi kao računalo. Usporedite apsolutne putanje, dopuštenja i odabir certifikata koji svaka strana čini umjesto da pretpostavljate da ista datoteka profila znači isto okruženje.
Planirani zadatak postavljen da radi bez obzira na to je li korisnik prijavljen nasljeđuje slično ograničenje. Može uspješno pokrenuti GUI izvršnu datoteku i ipak stvoriti proces koji nikad ne dobije podatke za prijavu, pa prisutnost procesa u upravitelju zadataka nije dokaz ispravnog tunela.
Odaberite jednog vlasnika i testirajte stvarni životni ciklus
Za vezu koja pripada prijavljenoj osobi upotrijebite podržano automatsko pokretanje GUI-ja i ostavite uslugu po strani. Za tunel koji mora postojati prije nego se iko prijavi, konfigurirajte uslugu, smjestite profil tamo gdje ga omotač čita i upotrijebite podržani mehanizam bez nadzora, poput ključa bez interaktivne fraze ili dokumentirane datoteke s podacima za prijavu.
Get-Content 'C:\Program Files\OpenVPN\log\openvpn.log' -Tail 40
Get-WinEvent -LogName Application -MaxEvents 20 | Where-Object ProviderName -like '*OpenVPN*'
Testirajte životni ciklus koji je važan: ponovno pokretanje bez prijave ikoga, a zatim ponovno povezivanje nakon promjene mreže. Držite jednog vlasnika veze, jer dva suprotstavljena mehanizma pokretanja obično stvaraju dvije instance koje se otimaju za iste rute i istu serversku sesiju, što je teže dijagnosticirati od bilo kojeg pojedinačnog mehanizma.