Tunele, ki se pojavijo šele po tem, ko se nekdo prijavi, običajno zažene seja te osebe, ne samodejna storitev. Običajni krivec je bližnjica v samodejnem zagonu, ki zažene openvpn-gui.exe, in to ni pokvarjena namestitev. Bližnjica zažene namizno aplikacijo znotraj uporabniške seje, s profilom tega uporabnika, shrambami potrdil tega uporabnika in zmožnostjo tega uporabnika, da odgovori na poziv. Nič od tega povezave ne naredi neodvisne od prijavljenega človeka, in prav to tunel pred prijavo zahteva.

Simptom ima običajno tri vzroke

Trije vzorci so od zunaj videti enako in imajo različne rešitve. Prvi je lastnik izvajanja, ki je uporabniška seja namesto storitve, torej primer bližnjice v samodejnem zagonu. Drugi je profil, ki se nahaja tam, kamor storitev ne pogleda, zato se storitev zažene, ne najde ničesar in se čisto konča. Tretji je profil, ki ga storitev najde in zažene, vendar njegove poverilnice zahtevajo interakcijo, ki je nobena storitev ne more zagotoviti.

Ugotavljanje, kateri primer velja, zahteva dve branji: kaj je storitev nastavljena izvajati in katere datoteke lahko vidi. Oboje je en ukaz, in nobeno ne moti delujoče povezave.

Kaj samodejna storitev dejansko bere

Samodejna storitev Community je ovoj, ki preišče nastavljeno mapo za samodejni zagon, običajno config-auto v namestitvi, in za vsak najdeni ustrezni profil zažene proces OpenVPN. Profil, viden v uporabniškem meniju GUI, se namesto tega nahaja pod gostujočim profilom tega uporabnika, v mapi, ki je račun storitve ne bere. Vodnik po storitvi Windows opisuje to odkrivanje in vredno ga je prebrati pred kopiranjem česar koli, ker je ciljna mapa lastnost namestitve in ne fiksna konvencija. Zato kopiranje datoteke v mapo GUI za storitev nič ne spremeni, kopiranje v vsako mapo z imenom config pa ustvari dvojnike namesto rešitve.

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'

Zadnji ukaz našteje, kaj bo ovoj dejansko videl, kar je najhitrejši način za potrditev, da je profil na napačnem mestu. Druga vrstica prikaže tudi račun, pod katerim teče storitev, in ta račun odloča, katere poti do datotek in shrambe potrdil so sploh dosegljive.

Zakaj prijava na namizju deluje, zagon ob zagonu sistema pa ne

Uspeh na namizju lahko dolgo skrije odvisnost od vnosa. GUI lahko zbere geslo ključa, geslo računa ali drugi dejavnik v pogovornem oknu, ker teče v interaktivni seji z vidnim namizjem. Storitev teče v seji brez namizja, zato zahteva po vnosu nima kje prikazati, povezava pa odpove po časovni omejitvi, ki sploh ni podobna težavi s poverilnicami.

Dostop do datotek sledi istemu pravilu. Zasebni ključ, shranjen pod uporabniškim profilom, ali potrdilo v uporabnikovi osebni shrambi, ni na voljo storitvi, ki teče kot računalnik. Primerjajte absolutne poti, dovoljenja in izbiro potrdila, ki jo opravi vsaka stran, namesto da predpostavite, da ista datoteka profila pomeni isto okolje.

Načrtovana opravila, nastavljena za izvajanje ne glede na to, ali je uporabnik prijavljen, podedujejo podobno omejitev. Lahko uspešno zažene izvršljivo datoteko GUI in vseeno ustvari proces, ki nikoli ne pridobi poverilnic, zato prisotnost procesa v upravitelju opravil ni dokaz delujočega tunela.

Izberite enega lastnika in preizkusite resnični življenjski cikel

Za povezavo, ki pripada prijavljeni osebi, uporabite podprto vedenje samodejnega zagona v GUI in pustite storitev zunaj njega. Za tunel, ki mora obstajati, preden se kdorkoli prijavi, nastavite storitev, postavite profil tja, kjer ga bere ovoj, in uporabite podprt mehanizem poverilnic brez nadzora, kot je ključ brez interaktivnega gesla ali dokumentirana datoteka s poverilnicami.

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

Preizkusite življenjski cikel, ki je pomemben: ponovni zagon, ko se nihče ne prijavi, nato ponovna povezava po spremembi omrežja. Ohranite enega lastnika povezave, ker dva tekmujoča mehanizma zagona običajno ustvarita dva primerka, ki se borita za iste poti in isto sejo strežnika, kar je težje diagnosticirati kot kateri koli mehanizem posebej.

Sorodni članki