openvpn3 session-start ignoriše tvoju datoteku sa podacima za prijavu
3.x klijent preuzima podatke za prijavu na početku sesije i ne čita sačuvanu datoteku. Koristi prompt ili autoload putanju i znaj šta svaki od njih čuva.
Poveži se sa 2.x klijentom i profil radi; daj istu datoteku 3.x klijentu i on se zaustavlja na promptu za lozinku. Daj --auth-user-pass creds.txt komandi openvpn3 session-start i rezultat je isti, jer noviji klijent nema fazu koja čita datoteku. Odbijanje je namjerno: podaci za prijavu pripadaju sesiji, a sesiju stvara servis, a ne proces u tvom terminalu. Izaberi između interaktivnog prompta i autoload pomoćnika i znaj šta svaki od njih čuva.
Zašto sačuvana datoteka nema kuda otići
U novijem dizajnu, upravljanje konfiguracijom i upravljanje sesijama su odvojeni servisi koji razgovaraju preko sistemske magistrale. To razdvajanje omogućava običnom korisniku da započne sesiju bez da privilegovani demon čita zaštitnu datoteku lozinki u njegovo ime. Podaci za prijavu zasnovani na datoteci nemaju mjesto u tom modelu, jer nema pokretanja na strani demona koje bi ih čitalo. Odbijanje je posljedica arhitekture, a ne funkcija koja nedostaje.
Stari obrazac vrijedi imenovati da bi ga lakše odvikli: profil upućuje na datoteku sa podacima za prijavu, a demon je čita kada tunel počne. U novom modelu podaci za prijavu pripadaju sesiji i dostavljaju se kada ta sesija počne. openvpn3 session-start --config work.ovpn ih traži, a --auth-user-pass creds.txt se odbija jer ništa na tom putu ne bi otvorilo datoteku. Svaki 2.x recept koji nađeš pretpostavlja fazu koje više nema.
Konfiguracija i lokalna podešavanja sajta su takođe odvojeni, što objašnjava drugo iznenađenje. Profil može izgledati potpun dok vezi koju stvara nedostaje konfiguracija rutiranja i rezolvera. Ti dijelovi se primjenjuju kao lokalna podešavanja sajta, odvojeno od uvezene datoteke.
Putanja prompta i sesija koju ostavlja
Davanje lozinke na početku sesije je predviđeni tok rada. Klijent pita jednom, preda podatke za prijavu pozadini sesije i nastavlja:
openvpn3 session-start --config work.ovpn
openvpn3 sessions-list
Tim putem se ništa ne zapisuje na disk. Sesija nastavlja da radi i nakon što se terminal zatvori, što iznenađuje ljude koji očekuju da proces umre sa njihovom ljuskom. Upravo je to smisao prebacivanja rukovanja sesijama u servis. Sesija živi duže od terminala koji ju je zatražio i mora se eksplicitno zaustaviti.
Za radnu stanicu sa čovjekom ispred, ovo je i najsigurnija opcija, jer nema sačuvane tajne koju treba zaštititi ili zaboraviti. Neodgovarajuća je samo tamo gdje nema nikoga da unese.
Automatizacija bez osobe za tastaturom
Tamo gdje mašina mora da se poveže bez osobe, projekat isporučuje openvpn3-autoload. On čita direktorijum profila i odgovarajući deskriptor za svaki profil, a deskriptor dostavlja podatke za prijavu u čistom tekstu. Pomoćnik je odvojena binarna datoteka, obično na /usr/sbin/openvpn3-autoload, a ne zastavica session-start. Njegovo podešavanje znači stvaranje direktorijuma, kopiranje profila pod imenom koje deskriptor očekuje i pisanje deskriptora.
Podešavanje po korisniku izgleda ovako, pokrenuto kao nalog koji će posjedovati sesiju. Režim direktorijuma drži druge lokalne korisnike napolju:
mkdir -m700 -p ~/.openvpn3/autoload
cp work.ovpn ~/.openvpn3/autoload/client.conf
$EDITOR ~/.openvpn3/autoload/client.autoload
Deskriptor imenuje podatke za prijavu i traži automatsko pokretanje. Drži vrijednost lozinke izvan kontrole verzija:
{
"autostart": true,
"user-auth": {
"autologin": true,
"username": "svc-vpn",
"password": "change-this-value"
}
}
Zatim pozovi pomoćnika jednom i potvrdi da se sesija pojavljuje. Druga komanda je provjera, a ne još jedan korak podešavanja:
/usr/sbin/openvpn3-autoload --directory ~/.openvpn3/autoload
openvpn3 sessions-list
Pri podizanju, pakovana jedinica po imenu openvpn3-autoload.service koristi sistemski direktorijum /etc/openvpn3/autoload, a ne onaj po korisniku. To mjesto zahtijeva root vlasništvo i stroži režim, a deskriptor još uvijek drži lozinku u čistom tekstu. Kompromis je eksplicitan: lozinka sada stoji na disku, pa tretiraj taj direktorijum kao tajnu, isključi ga iz rezervnih kopija van hosta i izaberi interaktivnu putanju kad god je osoba prisutna.
Kvarovi magistrale koji izgledaju kao kvarovi lozinke
Neki kvarovi koji se pripisuju podacima za prijavu nisu nikakvi takvi. Greška dozvola koja imenuje putanju aktivacije servisa znači jedno od dva: pozadina ne radi, ili pozivalac nema dozvolu da je aktivira. Nikakvo uređivanje profila neće promijeniti ni jedno. Provjeri stanje servisa i isporučenu politiku magistrale prije nego što dotakneš konfiguraciju.
Komande ispod razdvajaju to dvoje. Prva izvještava da li pozadina radi; druga prikazuje nedavne greške magistrale:
systemctl status openvpn3-service-client
journalctl -b -u openvpn3-service-client --no-pager | tail -20
Drugo često pogrešno čitanje je sesija koja se pojavi i odmah nestane. Taj obrazac obično znači da lokalna podešavanja sajta nikada nisu primijenjena, pa je tunel podignut bez ruta i promjena rezolvera koje ga čine korisnim. Čitaj slijed, a ne posljednju liniju: da li je sesija stvorena, da li je dostigla povezano stanje i da li je preživjela su tri odvojene činjenice.
Kada se stariji klijent još koristi
2.x klijent još prihvata datoteku sa podacima za prijavu, a privjesak ključeva može odgovoriti na njegov prompt bez da tajna ikada dođe na disk. Omotač rješava unos, pa datoteka imenuje pretragu, a ne lozinku. Ovaj raspored zavisi od otključanog privjeska ključeva, koji kontejner bez sesije prijave ili jedinica koja se pokreće prije nego se neko prijavi ne mogu pružiti. Alat za pretragu tada prijavljuje kolekciju u koju ne može pisati, pa greška izgleda kao kvar podataka za prijavu, iako je kvar privjeska ključeva.
Prije nego što bilo šta od ovoga izgradiš, provjeri da li keepalive podešavanje u profilu uklanja potrebu za ponovnim pokretanjem uopšte. Sesija koja ostane podignuta nikada ne dostiže prompt koji pokušavaš automatizovati.