Ukaz deluje, ko ste prijavljeni, zato ga vstavite v zagonsko skripto in odidete domov. Naslednje jutro je stroj povezan, tunel pa ne. Mit je, da delujoč klic pomeni delujočo storitev. V praksi je razlika običajno ena od dveh stvari: profil pripada vaši uporabniški seji in ne sistemu, ali pa skrivnost odklene nekaj, kar obstaja šele po vaši prijavi. Oboje odlično deluje pri ročnem preizkusu in odpove točno v trenutku, ko nihče ne gleda.

Zakaj prijava omogoči delovanje

Grafična prijava zažene sejno vodilo in agenta storitve skrivnosti, in tam mnogi odjemalci, usmerjeni na namizje, hranijo geslo profila ali geslo zasebnega ključa. Aktivacija, ki se po prijavi izvaja kot vaš uporabnik, lahko tega agenta prosi za skrivnost in uspe. Ista aktivacija, ki jo izvede zagonska enota, nima seje, vodila in agenta, zato iskanje odpove ali se blokira na pozivu, ki ga nihče ne vidi.

Zaženite isti profil pred prijavo in po njej ter dobite dva različna izida iz ene konfiguracije. To je podpis odvisnosti od poverilnic, ne pokvarjenega tunela, in pojasnjuje, zakaj ročni preizkus v terminalu dokaže manj, kot se zdi. Tunel je v redu; manjka tisto, kar odklene njegovo skrivnost.

Odločite, kateri lastnik zažene tunel

Obstajata dva podprta vzorca, njuno mešanje pa je drugi način, kako to odpove. NetworkManager lahko aktivira povezavo na sistemski ravni, kar je primerno, ko stroj že tam centralizira svoje omrežje. Druga možnost je namenska enota systemd, ki zažene VPN neposredno in sama poseduje vmesnik.

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

Ne zaženite obeh lastnikov na isti konfiguraciji. Če NetworkManager upravlja vmesnik in ga enota tudi dvigne, se bosta prepirala glede poti in DNS, nastalo stanje pa je odvisno od tega, kdo je končal zadnji.

Postavite skrivnost tja, kjer jo storitev lahko prebere

Storitev v ozadju ne more odgovoriti na poziv. Gesla certifikatov, gesla računov in navedene datoteke za preverjanje pristnosti potrebujejo takšno ureditev shranjevanja, do katere enota pride brez človeka, ki je v lasti računa, ki zažene storitev, in je neberljiva za vse ostale.

Mamljiva bližnjica je narediti datoteko berljivo vsem, dokler napaka dovoljenj ne izgine. To zamenja neuspeh ob zagonu za dolgotrajno izpostavljenost poverilnic in je vrsta spremembe, h kateri se nihče ne vrne. Uporabite mehanizem, ki mu namestitev že zaupa: omejeno datoteko s poverilnicami, nešifriran ključ, zaščiten z dovoljenji datoteke, ali povezavo na sistemski ravni z lastno shrambo skrivnosti.

Preizkusite dogodek, ki se resnično zgodi

Ročni zagon storitve po prijavi ne preizkusi skoraj ničesar. Znova zaženite ali za en cikel onemogočite grafično prijavo in opazujte, kako se enota dvigne sama. To je edini preizkus, ki hkrati preverja razpoložljivost poverilnic, pripravljenost omrežja in vrstni red enot. Je tudi preizkus, ki poustvari napako, ki jo je prijavil uporabnik, česar ročni zagon nikoli ne naredi.

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

Vrstni red je enako pomemben kot poverilnice. Enota, ki se zažene, preden je konfigurirana osnovna vzpenjajoča povezava, bo obupala, nekatere distribucije pa se razlikujejo v tem, ali čakajo na povezljivost. Če enota ob zagonu poroča o napaki, a uspe, ko jo trideset sekund pozneje zaženete ročno, ste našli težavo z vrstnim redom in ne s skrivnostjo.

Preverjajte poti in DNS, ne le vmesnika

Obstoječi vmesnik ni delujoč tunel. Po nenadzorovanem zagonu preverite poti, stanje razreševalnika in en cilj po naslovu, preden preverite ime. Nato preverite aplikacijo, za katero tunel obstaja.

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'

Če naslov deluje in ime ne, je preostali problem politika DNS in ne tunel. Zapišite, kateri lastnik zažene storitev in kje živi skrivnost, ker bo naslednja oseba, ki bo znova zagnala ta stroj, potrebovala obe dejstvi.

Sorodni članki