Tuneli koji se pojavljuju samo 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 autostartu 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, spremištima certifikata tog korisnika i sposobnošću tog korisnika da odgovori na upit. Ništa od toga ne čini vezu neovisnom o prijavljenom čovjeku, a upravo to tunel prije prijave zahtijeva.

Simptom obično ima tri uzroka

Tri obrasca izvana izgledaju isto i imaju različita rješenja. Prvi je izvršni vlasnik koji je korisnička sesija umjesto usluge, dakle slučaj prečice u autostartu. Drugi je profil koji se nalazi tamo gdje usluga ne gleda, pa se usluga pokrene, ne nađe ništa i čisto se zatvori. Treći je profil koji usluga nađe i pokrene, ali čiji akreditivi traže interakciju koju nijedna usluga ne može pružiti.

Da bi se utvrdilo koji slučaj vrijedi, potrebna su dva čitanja: što je usluga konfigurirana izvršavati i koje datoteke može vidjeti. Oba su po jedna naredba, i nijedno ne remeti vezu koja radi.

Što automatska usluga zapravo čita

Automatska usluga Community je omotač koji skenira konfigurirani direktorij za automatsko pokretanje, obično config-auto u instalaciji, i pokreće OpenVPN proces za svaki pronađeni odgovarajući profil. Profil vidljiv u GUI izborniku korisnika nalazi se umjesto toga pod roaming profilom tog korisnika, u direktoriju koji račun usluge ne čita. Vodič za Windows uslugu opisuje to otkrivanje, i vrijedi ga pročitati prije nego što bilo što kopirate, jer je ciljni direktorij svojstvo instalacije, a ne fiksna konvencija. Stoga kopiranje datoteke u GUI mapu ništa ne mijenja za uslugu, a kopiranje u svaku mapu nazvanu config stvara duplikate umjesto rješenja.

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 dostupne.

Zašto prijava na desktopu radi, a pokretanje pri podizanju ne

Uspjeh na desktopu može dugo sakriti ovisnost o unosu. GUI može prikupiti zaporku ključa, zaporku 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, a veza puca nakon isteka vremena koje uopće ne nalikuje problemu s akreditivima.

Pristup datotekama slijedi isto pravilo. Privatni ključ pohranjen pod korisničkim profilom, ili certifikat u korisničkom osobnom spremištu, nije dostupan usluzi koja radi kao računalo. Usporedite apsolutne putanje, dozvole i odabir certifikata koji svaka strana čini, umjesto da pretpostavite da ista profilna datoteka znači isto okruženje.

Planirani zadatak postavljen da se izvršava neovisno o tome je li korisnik prijavljen nasljeđuje slično ograničenje. Može uspješno pokrenuti GUI izvršnu datoteku i ipak stvoriti proces koji nikada ne dobije akreditive, pa prisutnost procesa u upravitelju zadataka nije dokaz tunela koji radi.

Odaberite jednog vlasnika i isprobajte stvarni životni ciklus

Za vezu koja pripada prijavljenoj osobi upotrijebite GUI podržano ponašanje automatskog pokretanja i ostavite uslugu izvan toga. Za tunel koji mora postojati prije nego se itko prijavi, konfigurirajte uslugu, smjestite profil tamo gdje ga omotač čita i upotrijebite podržani mehanizam akreditiva bez nadzora, poput ključa bez interaktivne zaporke ili dokumentirane datoteke s akreditivima.

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

Isprobajte životni ciklus koji je važan: ponovno podizanje bez ikoga prijavljenog, zatim ponovno povezivanje nakon promjene mreže. Držite jednog vlasnika veze, jer dva konkurentska mehanizma pokretanja obično stvaraju dvije instance koje se bore za iste rute i istu serversku sesiju, što je teže dijagnosticirati nego bilo koji mehanizam zasebno.

Povezani članci