Naredba radi kad ste prijavljeni, pa je stavite u skriptu za pokretanje i odete kući. Sljedećeg jutra računalo je na mreži, a tunel nije. Mit je da radni poziv znači radna usluga. U praksi je razlika obično jedna od dvije stvari: profil pripada vašoj korisničkoj sesiji, a ne sustavu, ili tajnu otključava nešto što postoji tek nakon što se prijavite. Oboje savršeno radi u ručnom testu i zakaže točno u trenutku kad nitko ne gleda.

Zašto prijava to omogućuje

Grafička prijava pokreće sabirnicu sesije i agenta usluge tajni, i tu mnogi klijenti orijentirani na radnu površinu drže lozinku profila ili zaporku privatnog ključa. Aktivacija koja se nakon prijave izvodi kao vaš korisnik može od tog agenta zatražiti tajnu i uspjeti. Ista aktivacija koju izvodi jedinica pri podizanju nema sesiju, sabirnicu ni agenta, pa pretraga zakaže ili se blokira na upitu koji nitko ne vidi.

Pokrenite isti profil prije i poslije prijave i dobit ćete dva različita ishoda iz jedne konfiguracije. To je potpis ovisnosti o vjerodajnicama, a ne pokvarenog tunela, i objašnjava zašto ručni test u terminalu dokazuje manje nego što se čini. Tunel je u redu; nedostaje ono što otključava njegovu tajnu.

Odlučite koji vlasnik pokreće tunel

Postoje dva podržana obrasca, a njihovo miješanje je drugi način na koji ovo zakaže. NetworkManager može aktivirati vezu na razini sustava, što je prikladno kad računalo već tamo centralizira svoje umrežavanje. Alternativno, namjenska systemd jedinica pokreće VPN izravno i sama posjeduje sučelje.

systemctl list-unit-files 'openvpn*'
systemctl list-unit-files 'wg-quick*'
nmcli connection show --active
systemctl enable --now wg-quick@wg0

Ne pokrećite oba vlasnika na istoj konfiguraciji. Ako NetworkManager upravlja sučeljem, a jedinica ga također podiže, sukobit će se oko ruta i DNS-a, a rezultirajuće stanje ovisi o tome tko je završio posljednji.

Stavite tajnu tamo gdje je usluga može pročitati

Pozadinska usluga ne može odgovoriti na upit. Lozinke certifikata, lozinke računa i navedene datoteke za autentifikaciju trebaju takav raspored pohrane do kojeg jedinica može doći bez čovjeka, koji posjeduje račun koji pokreće uslugu i koji je svima ostalima nečitljiv.

Primamljiv prečac je učiniti datoteku čitljivom svima dok pogreška dopuštenja ne nestane. To zamjenjuje neuspjeh pri pokretanju dugotrajnim izlaganjem vjerodajnica i to je vrsta promjene kojoj se nitko ne vraća. Koristite mehanizam kojem implementacija već vjeruje: ograničenu datoteku vjerodajnica, nešifrirani ključ zaštićen dopuštenjima datoteke ili vezu na razini sustava s vlastitom pohranom tajni.

Testirajte događaj koji se stvarno događa

Ručno pokretanje usluge nakon prijave ne testira gotovo ništa. Ponovno pokrenite računalo ili na jedan ciklus isključite grafičku prijavu i gledajte kako se jedinica sama podiže. To je jedini test koji istovremeno provjerava dostupnost vjerodajnica, spremnost mreže i redoslijed jedinica. To je i test koji reproducira neuspjeh koji je korisnik prijavio, što ručno pokretanje nikad ne čini.

systemctl is-enabled wg-quick@wg0
journalctl -u wg-quick@wg0 -b --no-pager
systemctl status systemd-networkd-wait-online --no-pager

Redoslijed je jednako važan kao i vjerodajnice. Jedinica koja se pokrene prije nego što je osnovna uzlazna veza konfigurirana odustat će, a neke distribucije se razlikuju po tome čekaju li povezanost. Ako jedinica prijavi neuspjeh pri podizanju, ali uspije kad je trideset sekundi kasnije pokrenete ručno, pronašli ste problem redoslijeda, a ne tajne.

Provjerite rute i DNS, ne samo sučelje

Sučelje koje postoji nije radni tunel. Nakon nadziranog pokretanja provjerite rute, stanje razrješivača i jedno odredište po adresi prije provjere imena. Zatim provjerite aplikaciju zbog koje tunel postoji.

ip -4 route show
resolvectl status
ping -c 3 10.61.0.1
curl -sS --max-time 5 https://internal.example/ -o /dev/null -w '%{http_code}\n'

Ako adresa radi, a ime ne, preostali problem je DNS politika, a ne tunel. Zapišite koji vlasnik pokreće uslugu i gdje živi tajna, jer sljedećoj osobi koja ponovno pokrene ovo računalo trebat će obje činjenice.

Povezani članci