Príkaz funguje, keď ste prihlásený, tak ho dáte do spúšťacieho skriptu a idete domov. Na druhý deň ráno je stroj online a tunel nie. Mýtus je, že funkčné volanie znamená funkčnú službu. V praxi je rozdiel zvyčajne jedna z dvoch vecí: profil patrí vašej používateľskej relácii, nie systému, alebo tajomstvo odomyká niečo, čo existuje až po prihlásení. Oboje dokonale funguje pri ručnom teste a zlyhá presne v okamihu, keď sa nikto nepozerá.

Prečo prihlásenie spôsobí, že to funguje

Grafické prihlásenie spúšťa zbernicu relácie a agenta služby tajomstiev, a práve tam mnohí klienti orientovaní na plochu držia heslo profilu alebo prístupovú frázu súkromného kľúča. Aktivácia, ktorá sa po prihlásení spúšťa ako váš používateľ, môže tohto agenta požiadať o tajomstvo a uspieť. Tá istá aktivácia vykonaná jednotkou pri spustení nemá reláciu, zbernicu ani agenta, takže hľadanie zlyhá alebo sa zablokuje na výzve, ktorú nikto nevidí.

Spustite rovnaký profil pred prihlásením a po ňom a dostanete dva rôzne výsledky z jednej konfigurácie. To je podpis závislosti na prihlasovacích údajoch, nie na pokazenom tuneli, a vysvetľuje, prečo ručný test v termináli dokazuje menej, než sa zdá. Tunel je v poriadku; chýba to, čo odomyká jeho tajomstvo.

Rozhodnite, ktorý vlastník spúšťa tunel

Existujú dva podporované vzory a ich miešanie je druhý spôsob, ako to zlyhá. NetworkManager môže aktivovať pripojenie v systémovom rozsahu, čo je vhodné, keď stroj už tam centralizuje svoju sieť. Alternatívne samostatná jednotka systemd spúšťa VPN priamo a sama vlastní rozhranie.

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

Nespúšťajte oboch vlastníkov proti jednej konfigurácii. Ak NetworkManager spravuje rozhranie a jednotka ho tiež dvíha, budú bojovať o trasy a DNS a výsledný stav závisí od toho, kto skončil posledný.

Umiestnite tajomstvo tam, kde ho služba môže prečítať

Služba na pozadí nemôže odpovedať na výzvu. Prihlasovacie frázy certifikátov, heslá účtov a odkazované autentifikačné súbory potrebujú také usporiadanie úložiska, ku ktorému sa jednotka dostane bez človeka, ktoré vlastní účet spúšťajúci službu a ktoré je pre všetkých ostatných nečitateľné.

Lákavá skratka je urobiť súbor čitateľný pre všetkých, kým chyba oprávnení nezmizne. To vymení zlyhanie pri spustení za dlhodobé vystavenie prihlasovacích údajov a je to ten druh zmeny, ku ktorej sa nikto nevracia. Použite mechanizmus, ktorému nasadenie už dôveruje: obmedzený súbor s prihlasovacími údajmi, nešifrovaný kľúč chránený oprávneniami súboru alebo pripojenie v systémovom rozsahu s vlastným úložiskom tajomstiev.

Otestujte udalosť, ktorá skutočne nastane

Ručné spustenie služby po prihlásení netestuje takmer nič. Reštartujte alebo na jeden cyklus vypnite grafické prihlásenie a sledujte, ako jednotka sama naskočí. To je jediný test, ktorý súčasne precvičuje dostupnosť prihlasovacích údajov, pripravenosť siete a poradie jednotiek. Je to aj test, ktorý reprodukuje zlyhanie, ktoré používateľ nahlásil, čo ručné spustenie nikdy neurobí.

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

Poradie je rovnako dôležité ako prihlasovacie údaje. Jednotka, ktorá sa spustí skôr, než je nakonfigurované základné odchádzajúce spojenie, to vzdá, a niektoré distribúcie sa líšia v tom, či čakajú na konektivitu. Ak jednotka pri spustení hlási zlyhanie, ale pri ručnom spustení o tridsať sekúnd neskôr uspeje, našli ste problém poradia, nie problém tajomstva.

Overujte trasy a DNS, nielen rozhranie

Rozhranie, ktoré existuje, nie je funkčný tunel. Po spustení bez dozoru skontrolujte trasy, stav resolvera a jeden cieľ podľa adresy, skôr než skontrolujete názov. Potom skontrolujte aplikáciu, pre ktorú tunel existuje.

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'

Ak adresa funguje a názov nie, zostávajúci problém je politika DNS a nie tunel. Zapíšte, ktorý vlastník spúšťa službu a kde žije tajomstvo, pretože ďalší človek, ktorý tento stroj reštartuje, bude potrebovať obe skutočnosti.

Súvisiace články