OpenVPN pri pokretanju na Ubuntuu: NetworkManager ili systemd?
Prijenosnik i server bez ekrana trebaju različite putanje pokretanja. Uporedite sekundarnu vezu NetworkManagera sa openvpn-client@ i njegovom datotekom vjerodajnica.
Većina vodiča predstavlja ovaj izbor kao kozmetički: ili pustite NetworkManager da podigne tunel, ili omogućite instancu systemd i gotovo. Dvije putanje razlikuju se u jednoj stvari koja odlučuje ishod na mašini bez ekrana, a ona nema nikakve veze s tim koji je alat noviji. NetworkManager otključava tajne kroz sesiju; instanca systemd nema sesiju koju bi otključala. Odaberite onu čije se rukovanje tajnama poklapa s mašinom pred vama.
Sve ostalo, od instalacije ruta do ponašanja pri ponovnom povezivanju, slijedi iz te prve odluke.
Prsten ključeva je razlika koju niko ne spominje
Kada NetworkManager posjeduje VPN profil, lozinka može živjeti u prstenu ključeva za prijavu, koji se otključava kada se korisnik prijavi. To dobro radi na prijenosniku: osoba je prisutna, prsten se otvara, tunel se podiže. Na serveru koji se pokreće bez nadzora nema nikoga da bilo šta otključa, pa profil čeka tajnu koja nikada ne dolazi. Veza izgleda konfigurisano i nikada se ne aktivira.
Instanca systemd izbjegava taj problem čitanjem datoteke vjerodajnica s diska, što datoteku čini onim što štitite. chmod 400 plus vlasništvo roota je minimum, a datoteka treba ostati izvan sigurnosnih kopija i predložaka slika koje ne kontrolišete.
Povezivanje VPN-a s vezom nije garancija pokretanja
U nm-connection-editor odaberite žičanu ili bežičnu vezu, a ne VPN, otvorite karticu General, označite opciju za automatsko povezivanje s VPN-om i imenujte profil. NetworkManager tada aktivira VPN kao sekundarnu vezu kada primarna dostigne stanje povezanosti. To je zavisnost, a ne pravilo vatrozida. Paketi i dalje mogu izlaziti tokom sekundi prije nego što se tunel podigne, a sačuvana tajna koja se ne otključa ostavlja mašinu na mreži bez njega.
Ako je zahtjev da ništa ne izlazi bez tunela, recite to i napravite prekidač, jer ova postavka ga neće pružiti. Testirajte i suspenziju i nastavak, jer se sekundarna veza ponovno procjenjuje na povratku.
Instanca systemd treba ime datoteke koje se poklapa
Smjestite profil u klijentski direktorij koji paket očekuje, kao što je /etc/openvpn/client/office.conf, i iz njega uputite na datoteku vjerodajnica s auth-user-pass office.cred. Ime instance je ime datoteke bez sufiksa, pa openvpn-client@office čita office.conf. Omogućite je s sudo systemctl enable --now openvpn-client@office i potvrdite podudaranje s systemctl cat openvpn-client@office umjesto da vjerujete primjeru s bloga.
Putanje unutar profila razrješavaju se u odnosu na radni direktorij jedinice, a ne na sam profil, pa relativna linija ca ili auth-user-pass može pasti pri pokretanju dok radi kada je testirate ručno. Koristite apsolutne putanje za sve što jedinica mora pronaći. Zatim pročitajte journalctl -u openvpn-client@office -b nakon stvarnog pokretanja; jedinica koja izvještava da je aktivna bez tunela obično imenuje datoteku koja nedostaje u tom dnevniku.
Stariji paketi isporučuju drugačije ime predloška, pa systemctl list-unit-files 'openvpn*' rješava koje postoji na ovom hostu.
Ponašanje pri ponovnom povezivanju je zasebna odluka
Profil s ping-restart ponovno gradi tunel nakon pada, a jedinica s direktivom za restart čini nešto slično na nivou usluge. To su politike koje birate, a ne zadane vrijednosti koje nasljeđujete. Ako veza treba da se podiže samo na zahtjev, namjerno uklonite ponašanje restarta i zapišite zašto. Ako jedinica startuje prije nego što mreža postane upotrebljiva, potrebna joj je politika ponovnih pokušaja, jer se jedan neuspjeli pokušaj pri pokretanju ne ponavlja sam.
Zaustavljanje je jednako doslovno: sudo systemctl disable --now openvpn-client@office zaustavlja pokrenutu instancu i uklanja vezu za pokretanje. Samo onemogućavanje ostavlja tunel pokrenutim do sljedećeg restarta, što iznenadi svakoga ko testira tako što onemogući i gleda kako interfejs ostaje podignut.
Restartujte, pa provjerite četiri stvari po redu
Restartovanje usluge testira uslugu; restartovanje mašine testira putanju pokretanja. Nakon restarta potvrdite da se jedinica podigla, zatim da postoji ruta za udaljenu podmrežu, zatim koju adresu mašina predstavlja internetu, i na kraju da se imena razrješavaju kroz tunel. Te četiri provjere padaju tim redom kada nešto nije u redu, što prvi neuspjeh čini korisnim.
Jedinica koja je aktivna bez rute obično znači da se profil povezao ali server nije poslao nijednu rutu, ili je ruta instalirana na interfejsu koji je kasnije nestao. Ruta bez radnog pretraživanja imena upućuje na DNS konfiguraciju, a ne na sam tunel.
Unaprijed odlučite šta treba da se dogodi kada se tunel ne može podići. Vraćanje na običnu povezanost je politika i treba je zapisati, umjesto da se prepusti onom menadžeru koji je prvi startovao.