Peer, který jste přidali pomocí wg set, odpovídá na ping celé odpoledne a po restartu je pryč. Nic se nepoškodilo: jádro tento peer nikdy nikam neuložilo kromě živého rozhraní a vše, co rozhraní při startu znovu vytváří, ho postavilo ze souboru, kterého jste se nedotkli. Oprava není další wg set. Je to zjištění, která komponenta rozhraní vlastní, úprava stavu této komponenty a následný důkaz, že peer přežije přesně tu událost životního cyklu, která ho odstranila.

Zopakujte to jednou, schválně

Neopravujte problém s restartem, dokud ho neuvidíte na vlastní oči. S dostupným přístupem přes konzoli nebo out-of-band si poznamenejte seznam peerů, restartujte přes službu, která rozhraní vlastní, a porovnejte. Pokud tam peer stále je, vaše změna už dosáhla trvalého stavu a ladíte špatnou událost.

Během toho si zapište tři skutečnosti: název rozhraní, unit nebo profil, který ho spustil, a zda se čítač handshake u přeživšího peeru resetoval. Resetovaný čítač znamená, že rozhraní bylo zničeno a znovu vytvořeno; nezměněný čítač s chybějícím peerem znamená, že někdo upravil konfiguraci pod vámi.

Kdo rozhraní vlastní?

Samotný WireGuard nemá žádného démona ani konfigurační soubor. Něco nad ním volá při startu wg a to něco je zdrojem pravdy. Obvyklí kandidáti jsou [email protected], profil připojení NetworkManageru, síťový unit specifický pro distribuci nebo správcovský panel, který si píše vlastní databázi.

Ptejte se systému, ne dokumentace své distribuce. systemctl status wg-quick@wg0 a nmcli connection show to obvykle vyřeší jedním příkazem každý. Pokud si na rozhraní dělají nárok oba, našli jste chybu ještě před jakoukoli úpravou: dva vlastníci přepisují stejné zařízení při každém startu a vyhrává ten, kdo se spustí poslední.

systemctl status wg-quick@wg0 --no-pager
grep -R "Address\|SaveConfig\|PostUp" /etc/wireguard/wg0.conf
nmcli -g NAME,TYPE connection show
wg show wg0 peers

Stav za běhu a stav při startu nejsou stejný soubor

wg set ovládá živé zařízení přes netlink. Nezapisuje /etc/wireguard/wg0.conf, profil NetworkManageru ani databázi panelu. Úspěšný wg show poté dokazuje, že jádro peer přijalo, ne že ho něco obnoví.

Existuje i druhá past v opačném směru. Volba SaveConfig v wg-quick zapisuje aktuální stav rozhraní zpět do konfiguračního souboru, když se rozhraní sundává. Když je zapnutá, úpravu souboru provedenou za běhu rozhraní může přepsat následné vypnutí a budete přísahat, že ten řádek tam byl. Pokud se peer stále vrací, čtěte soubor po zastavení, ne před ním.

NetworkManager se chová zase jinak: vlastní profil a uplatňuje ho při aktivaci, takže ručně upravený .conf vedle aktivního připojení NetworkManageru je jen dekorace. Zvolte pro rozhraní jednoho vlastníka a druhému správci dejte pokyn, aby ho nechal na pokoji.

Zařiďte, aby úprava dopadla na obě místa

Nejprve upravte trvalý stav, pak nechte vlastníka, aby ho použil, a potom ověřte živý stav. Takové pořadí znamená, že selhání v kterémkoli kroku ukazuje na jednu věc místo tří.

# 1. persistent state (wg-quick owner)
sudo vi /etc/wireguard/wg0.conf

# 2. apply through the owner, not by hand
sudo systemctl restart wg-quick@wg0

# 3. verify runtime matches the file
sudo wg show wg0
sudo wg showconf wg0

wg showconf vypisuje živou konfiguraci ve stejné syntaxi, jakou používá soubor, takže jsou obě přímo srovnatelné. Považujte tento výstup za tajný: obsahuje privátní klíče, takže ho nevkládejte do tiketu ani do chatovacího kanálu. Porovnejte veřejné klíče peerů a povolené IP adresy a zkontrolujte, že peer, kterého jste schválně odstranili, se nevrátil.

Dokažte, že přežije událost životního cyklu

Restartujte přes vlastníka podruhé a pak potvrďte tři oddělené věci: peer se objeví v wg show, čítač handshake roste po provozu a aplikace, která na tunelu závisí, skutečně odpovídá. Peer uvedený se zastaralým handshake je problém směrování nebo klíče, ne problém trvalosti, a toto rozlišení ušetří zbytečnou úpravu konfigurace.

Nakonec zkontrolujte, co restart obnovil. Restart, který vzkřísí peer, kterého jste schválně odstranili, je stejná chyba s opačným znaménkem a obvykle znamená, že se odněkud stále načítá stará kopie konfigurace. Zapište vlastníka, cestu k souboru, veřejný klíč peeru a ověřovací příkazy vedle konfigurace, aby to příští člověk znovu neobjevoval restartem produkčního hostitele.

Související články