Odstranění zastaralého záznamu VPN z databáze resolvconf
Na hostiteli, kde stav vlastní resolvconf z Debianu, je smazání položky snadné. Nejprve dokažte, že záznam je zastaralý a bez vlastníka, potom zkontrolujte přepis.
Interní název se ještě den po zavření tunelu překládá na server VPN a soubor resolveru se s tímto záznamem stále vrací. Tam, kde stav vlastní resolvconf z Debianu, se tento soubor skládá ze záznamů dodavatelů a jeden z nich je pozůstatek. Smazání záznamu trvá minutu; dokázat, že je bezpečné ho smazat, je skutečná práce. Tyto brány jdou po pořadí a neúspěšná brána proceduru ukončí, místo aby vás poslala k dalšímu kroku.
Potvrďte, že stav vlastní resolvconf
Nejprve určete vlastníka, protože stejný příznak pod systemd-resolved vyžaduje jiné příkazy a jinou opravu. Balíček resolvconf drží databázi pod /run/resolvconf a ukazuje /etc/resolv.conf na soubor, který z této databáze sestavuje. Dvě čtení otázku rozhodnou: cíl symbolického odkazu a to, zda je balíček nainstalovaný a aktivní. Cíl pod /run/systemd/resolve znamená jiný návrh, kde nic níže neplatí.
dpkg -l resolvconf | tail -1
ls -l /etc/resolv.conf
systemctl is-active resolvconf.service
Pokud odkaz míří jinam nebo balíček chybí, zastavte se zde. Kompatibilní obal, který si jméno vypůjčil a dodává ho jiný správce resolveru, tuto databázi nevlastní.
Databáze drží vstupy, ne odpověď
Databáze drží vstupy a soubor je výstup, takže výpis vstupů je jediný způsob, jak zjistit, který program nainstaloval položku, kterou chcete pryč. Záznamy jsou krátké a jejich klíče jsou držadla, která budete později potřebovat. Přečtěte si je, než rozhodnete, který je zastaralý, protože jméno, které vypadá jako rozhraní VPN, může patřit jinému klientovi. Držte soukromé adresy a interní vyhledávací domény mimo sdílenou diagnostiku; obvykle stačí samotný klíč k určení záznamu.
sudo resolvconf --list
sudo resolvconf -i
První příkaz vypíše dodané záznamy, aniž by je zpracoval, a druhý vypíše rozhraní, která právě poskytují konfiguraci DNS. Klíče se obvykle sestavují z názvu rozhraní plus dodávajícího programu. Manuál resolvconf popisuje databázi, na kterou tyto klíče míří.
Zkopírujte klíč z výstupu, místo abyste ho znovu sestavovali. Položka se nejmenuje tun0 jen proto, že starý skript použil tento název.
Dokažte, že záznam nemá vlastníka
Záznam je bezpečné smazat, když ho nenainstalovalo žádné živé připojení. Spojte klíč s připojením, které ho vytvořilo, a potom potvrďte, že toto připojení zmizelo. Toto spojení je celá brána a je to krok, který se cestou k příkazu pro smazání nejčastěji přeskakuje. Pokud jsou důkazy nejednoznačné, považujte záznam za živý a zastavte se.
Názvy procesů jsou slabý důkaz. OpenConnect volá vpnc-script, takže kontrola procesu vpnc nic neříká o tom, který záznam je aktuální. Nové připojení může také znovu použít název rozhraní, který po sobě nechalo staré, což dělá klíč starším, než je. Porovnejte adresu serveru uvnitř záznamu s adresami tunelů, které jsou stále nahoře, a pokud se shodují, zastavte se.
Normální odpojení přes vlastnícího správce je první lék. Odebere to, co připojení nainstalovalo, a ostatní dodavatele nechá nedotčené.
Zkontrolujte odstranění a přepis
Když je záznam potvrzeně zastaralý, smažte ho podle přesného klíče a potom výsledek přečtěte, místo abyste ho předpokládali. Příkaz mění stav resolveru pro každou aplikaci na hostiteli, proto ho spouštějte v okně, které ovládáte. Klíč dejte do uvozovek, protože obsahuje znaky, které by shell jinak rozvinul. Zástupný text v bloku označuje klíč, který jste zkopírovali ze seznamu, ne doslovný řetězec.
sudo resolvconf -d "RECORD_KEY_FROM_THE_LIST"
sudo resolvconf --list
resolvectl query host.corp.example || getent hosts host.corp.example
Smazání spustí aktualizační skripty, když je aktualizace povolena; při vypnutých aktualizacích aktualizaci odloží, takže smazaný záznam a přepsaný soubor jsou oddělené události. Přečtěte seznam znovu a potvrďte, že klíč zmizel, než se podíváte na soubor. Potom se zeptejte na jedno jméno, které by se mělo stále překládat přes zbývající dodavatele, a na jedno veřejné jméno, a obě porovnejte s tím, co jste viděli před změnou. Pokud se soukromé jméno přestane překládat úplně, ten záznam ho stále nesl.
resolvconf -u spouští pouze tyto aktualizační skripty. Nikdy nezjistí ani nesmaže zastaralý záznam a opětovné sestavení ze zastaralých vstupů vytvoří stejný nežádoucí soubor.
Zabitý odpojovací hook nechá záznam za sebou
Jednorázové vyčištění obnoví dnešní stav a další přerušené vypnutí záznam vrátí. Projděte cestu rozebrání: odpojovací hook klienta, pomocník, kterého tento hook volá, a co se stane, když je kterýkoli z nich zabit. Přerušené vypnutí je obvyklý původ, protože hook vůbec neběžel. Zaznamenejte návratový stav hooku jednou a budete vědět, zda tiše selhává.
Držte nastavení a úklid pod jedním vlastníkem. Druhý skript, který hádá názvy rozhraní, nakonec smaže záznam jiného připojení, což je horší než zastaralá položka, se kterou jste začali. Vlastník má také rozhodovat, kdy je záznam zastaralý, protože ví, které připojení ho nainstalovalo.
Potom procvičte životní cyklus: připojte se, odpojte se, znovu vypište záznamy. Zmizení položky samo od sebe je jediný důkaz, že oprava drží.