OpenVPN starter ved pålogging, men ikke ved oppstart på Windows?
En oppstartsnarvei starter et skrivebordsprogram, ikke den automatiske tjenesten. Sjekk hvilken profkilde eieren leser før du flytter filer.
Tunneler som bare dukker opp etter at noen logger på, startes vanligvis av den personens økt, ikke av den automatiske tjenesten. Den vanlige årsaken er en oppstartsnarvei som starter openvpn-gui.exe, og det er ikke en ødelagt installasjon. Snarveien starter et skrivebordsprogram inne i en brukerøkt, med den brukerens profil, den brukerens sertifikatlagre og den brukerens evne til å svare på en forespørsel. Ingenting ved den gjør tilkoblingen uavhengig av et menneske som er logget på, og det er nettopp det en tunnel før pålogging krever.
Symptomet har vanligvis tre årsaker
Tre mønstre ser like ut fra utsiden og har forskjellige løsninger. Det første er en utførelseseier som er en brukerøkt i stedet for tjenesten, altså tilfellet med oppstartsnarveien. Det andre er en profil som ligger der tjenesten ikke ser, slik at tjenesten starter, ikke finner noe og avslutter rent. Det tredje er en profil som tjenesten finner og starter, men hvis påloggingsinformasjon krever en interaksjon som ingen tjeneste kan levere.
Å finne ut hvilket tilfelle som gjelder krever to lesninger: hva tjenesten er konfigurert til å kjøre, og hvilke filer den kan se. Begge er én kommando hver, og ingen av dem forstyrrer en tilkobling som kjører.
Hva den automatiske tjenesten faktisk leser
Den automatiske Community-tjenesten er en innpakning som skanner den konfigurerte autostart-katalogen, vanligvis config-auto under installasjonen, og starter en OpenVPN-prosess for hver samsvarende profil den finner. En profil som er synlig i en brukers GUI-meny ligger i stedet under den brukerens roamingprofil, i en katalog som tjenestekontoen ikke leser. Windows-tjenesteguiden beskriver den oppdagelsen, og den er verdt å lese før du kopierer noe, fordi målkatalogen er en egenskap ved installasjonen og ikke en fast konvensjon. Derfor endrer det ingenting for tjenesten å kopiere en fil inn i GUI-mappen, og å kopiere den inn i hver mappe som heter config lager duplikater i stedet for en løsning.
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'
Den siste kommandoen lister opp hva innpakningen faktisk vil se, som er den raskeste måten å bekrefte at en profil ligger på feil sted. Den andre linjen viser også kontoen tjenesten kjører som, og den kontoen avgjør hvilke filbaner og sertifikatlagre som i det hele tatt er tilgjengelige.
Hvorfor pålogging på skrivebordet virker og oppstart ved boot ikke gjør det
Suksess på skrivebordet kan skjule en inndataavhengighet lenge. Et GUI kan samle inn en nøkkelpassfrase, et kontopassord eller en andre faktor i en dialog, fordi det kjører i en interaktiv økt med et synlig skrivebord. En tjeneste kjører i en økt uten skrivebord, så en forespørsel om inndata har ingen steder å vises, og tilkoblingen feiler etter en tidsavbrudd som slett ikke ligner et påloggingsproblem.
Filtilgang følger samme regel. En privat nøkkel som er lagret under brukerens profil, eller et sertifikat i brukerens personlige lager, er ikke tilgjengelig for en tjeneste som kjører som maskinen. Sammenlign absolutte baner, tillatelser og sertifikatvalget hver side gjør i stedet for å anta at samme profilfil betyr samme miljø.
En planlagt oppgave som er satt til å kjøre uansett om en bruker er logget på, arver en lignende begrensning. Den kan starte GUI-kjørbarfilen med hell og likevel produsere en prosess som aldri får påloggingsinformasjon, så tilstedeværelsen av en prosess i oppgavebehandlingen er ikke bevis på en fungerende tunnel.
Velg én eier og test den virkelige livssyklusen
For en tilkobling som tilhører en pålogget person, bruk GUI-ens støttede autostart-atferd og hold tjenesten utenfor. For en tunnel som må eksistere før noen logger på, konfigurer tjenesten, plasser profilen der innpakningen leser den, og bruk en støttet uovervåket påloggingsmekanisme som en nøkkel uten interaktiv passfrase eller en dokumentert påloggingsfil.
Get-Content 'C:\Program Files\OpenVPN\log\openvpn.log' -Tail 40
Get-WinEvent -LogName Application -MaxEvents 20 | Where-Object ProviderName -like '*OpenVPN*'
Test livssyklusen som betyr noe: en omstart der ingen logger på, deretter en ny tilkobling etter en nettverksendring. Hold én eier for tilkoblingen, fordi to konkurrerende oppstartsmekanismer vanligvis produserer to forekomster som kjemper om de samme rutene og den samme serversesjonen, noe som er vanskeligere å diagnostisere enn hver mekanisme alene.