Proč se smazaný peer WireGuard po restartu vrací
Seznam peerů drží dva stavy: běžící rozhraní a to, co ho zapisuje při startu. Odstraňte ho z obou a než cokoli upravíte, zkontrolujte SaveConfig.
Identita zmizí z běžícího rozhraní a změna vypadá hotová. Po restartu služby se vrátí, což vypadá, jako by WireGuard příkaz ignoroval. Co se ve skutečnosti stalo, je jednodušší: konfigurace při startu peer stále obsahuje.
Ten seznam drží dva stavy. Odvolání je skutečné jen tehdy, když ho ztratí oba.
Co wg set skutečně mění
Příkaz wg set wg0 peer <public-key> remove upravuje běžící rozhraní v jádru. Na disk nezapisuje nic. Konfigurační soubor, profil NetworkManageru nebo uložený stav routeru zůstávají nedotčené. To je záměr, ne chyba.
To oddělení je úmyslné, protože nástroj netuší, kdo rozhraní vlastní. Příkaz za běhu musí být bezpečný vůči rozhraní, které spravuje něco jiného. Nemůže hádat, kde trvalá kopie žije. Důsledek lze snadno vyslovit: odstranění za běhu je svou konstrukcí dočasné.
Peer se tedy při dalším restartu vrátí, a vrátí se se svými původními povolenými prefixy. Vše, co se přes něj směruje, se také znovu vytvoří. Domněle odvolaná identita tak po znovunačtení může dosáhnout svých dřívějších cílů. Nic ve výstupu za běhu nikoho nevarovalo.
Najděte zapisovatele, než upravíte soubor
Rozhraní má vlastníka. Může jím být wg-quick čtoucí soubor, NetworkManager aplikující profil, vlastní konfigurace rozhraní routeru nebo vstupní bod kontejneru, který rozhraní při startu znovu vytvoří. Úprava souboru, který vlastník nikdy nečte, nepřinese žádnou trvalou změnu.
Začněte u běžícího rozhraní a určete veřejné klíče, protože jména a adresy jsou slabší identifikátory než samotný klíč. Potom tento seznam porovnejte s uloženou konfigurací, kterou vlastník skutečně čte.
wg show wg0 peers
wg show wg0 allowed-ips
systemctl status wg-quick@wg0 --no-pager
ls -l /etc/wireguard
Živé rozhraní, jehož seznam peerů a obsah souboru se neshodují, je celá diagnóza. Při startu vyhrává uložená konfigurace a stav za běhu prohrává. Porovnejte je, než změníte kterýkoli z nich.
Past SaveConfig
wg-quick přidává záhyb, který chytá lidi upravující soubory ručně. Když je SaveConfig zapnutý, jeho dokumentované chování při vypnutí zapíše aktuální stav za běhu přes konfigurační soubor.
To obrací obvyklý směr trvalosti. Odeberete peer ze souboru, pak se služba zastaví. Běžící stav se zapíše přes vaši úpravu a obnoví peer, který jste právě smazali.
Proto záleží na pořadí: upravte soubor, dokud je rozhraní vypnuté, nebo před úpravou zakažte SaveConfig, potom rozhraní znovu zapněte a ověřte, co se načetlo. Ruční úprava při zapnutém rozhraní je závod se zápisem při vypnutí.
Změňte oba stavy a znovu načtěte
Za běhu odeberte peer podle klíče. V uložené konfiguraci odeberte stejný blok podporovanou operací vlastníka, místo abyste upravovali okolo něj.
Potom si projděte, co peer nesl. Směrovaná síť, která patřila odvolané identitě, má být vědomě přidělena jinam nebo odstraněna, ne tiše zděděna peerem, který bude upraven příště.
Nechte otevřenou cestu pro obnovu, pokud brána nese i váš administrativní přístup. Restart, který odstraní špatný peer, je výpadek, který jste si způsobili sami. Totéž platí pro restart, který odstraní špatnou trasu.
Jak vypadá úspěšný test
Znovu načtěte nebo restartujte službu a potom znovu přečtěte seznam peerů. Starý klíč musí chybět a peery, které jste chtěli zachovat, musí být stále přítomné a funkční.
wg show wg0 peers
wg show wg0 allowed-ips
sudo wg-quick down wg0 && sudo wg-quick up wg0
wg show wg0 peers
Kde to situace dovolí, ověřte, že stará identita už nedosáhne na své dřívější zdroje. Uspořádaný výpis rozhraní před restartem je polovina testu. Druhou polovinou je, co identita potom ještě dokáže.
Pokud nějaký správce peer stále obnovuje, přestaňte opakovat odstranění na nízké úrovni. Opravte inventář, který tento zapisovatel čte, protože do té doby je každý restart další pozvánkou, aby se identita znovu objevila.