Rukování je v wg show čerstvé, koncový bod je správný, klíče se nikdy nezměnily — a ping přesto hlásí, že k protějšku není trasa. Podsíť tunelu jste změnili před hodinou. Ten příznak je podpis nesouladu prefixu, ne problému s klíči: WireGuard dokončil rukování a pak data zahodil, protože zdrojová adresa už neodpovídá tomu, co přijímající protějšek přijme. Změnu podsítě lze provést dvěma rozumnými způsoby a každý selhává jinde.

Dvě cesty, jak změnu provést, a co každá stojí

Možnost A je přečíslování na místě: upravte adresu rozhraní, rozsahy protějšků, trasy a každou kopii konfigurace, pak znovu načtěte. Možnost B je postavit druhé rozhraní na novém prefixu vedle starého, přenést protějšky a staré rozhraní odstranit, až provoz skutečně přejde.

A: renumber in placeB: parallel interface
DowntimeThe reload window, per hostNone if peers are added to both
RollbackRe-apply the previous filesPoint peers back at the old interface
RiskHalf-applied change: new address, old rangesTwo live interfaces with overlapping intent
EffortSmall, if the deployment has one ownerHigher, and needs a cleanup step
FitsTwo or three peers you controlMany peers, remote sites, or no maintenance window

Právě napůl provedený stav dělá možnost A nebezpečnou, protože nevypadá rozbitě. Rozhraní naskočí, rukování proběhne a selže jen datová cesta. Možnost B stojí víc práce, ale drží funkční cestu živou, dokud nenajdete každý odkaz.

Co se musí hýbat společně na vaší straně

Čtyři věci na místním hostiteli popisují stejnou podsíť a změna jedné je změnou všech: adresa rozhraní, AllowedIPs každého protějšku, trasa, kterou systém pro tyto cíle používá, a cokoli, co za vás instaluje správce. S wg-quick se poslední dvě generují z konfigurace při každém nahození rozhraní, takže zastaralá kopie tiše vrátí starý prefix.

Porovnejte, co je nakonfigurované, s tím, co je živé, místo abyste věřili jednomu:

wg show
wg showconf wg0
ip addr show wg0
ip route get 10.90.0.5

Vyhledání trasy je krok, který lidé přeskakují. Odpovídá, co by jádro pro cíl skutečně udělalo, včetně konkrétnější trasy, kterou zanechal správce nebo runtime kontejnerů. Pokud ukáže jiné rozhraní než tunel, konfigurace není problém.

U běžícího rozhraní použijte upravený soubor, aniž byste tunel bourali:

wg syncconf wg0 <(wg-quick strip wg0)

Tím se aktualizují protějšky a rozsahy na místě. Neaktualizuje to adresu rozhraní ani trasy, protože to nejsou nastavení WireGuard — přečíslování tedy stále potřebuje rozhraní znovu vytvořit nebo změnit adresu pomocí ip a potom znovu zkontrolovat směrování.

Co se musí hýbat společně na vzdálené straně

Tady změna podsítě obvykle umírá. AllowedIPs není jen náznak směrování; je to také seznam zdrojových adres, které protějšek smí předložit. Když přečíslujete klienty a necháte AllowedIPs na serveru na starém prefixu, server rukování přijme, přijme šifrované pakety a zahodí je, protože vnitřní zdroj neodpovídá žádnému rozsahu, který s tím protějškem spojuje. Žádná chyba se nezaloguje a klient vidí vypršení.

Aktualizujte proto přijímající stranu vědomě: záznam protějšku na serveru musí uvádět nový prefix klienta, vlastní zpáteční trasa serveru musí pro tento prefix ukazovat na tunel a každá navazující síť za serverem se musí naučit novou cestu. Pravidla firewallu, která pojmenovávala starý rozsah, potřebují stejné ošetření, a stejně tak cokoli, co dělá výběr podle zdroje.

Diagnostika, která oba druhy selhání oddělí, je levná. Čerstvé rukování a žádná data znamenají, že tunel stojí a vnitřní adresování nesouhlasí. Žádné rukování znamená, že se díváte na dostupnost nebo klíče. Neměňte klíče kvůli problému s prefixem; resetuje to jedinou věc, která fungovala.

Zastaralé kopie, které přežijí vaši úpravu

Upravit soubor není totéž jako změnit běžící systém a kopií je víc, než lidé čekají: unit nebo správce, kterému rozhraní patří, druhý profil se stejným jménem v jiném adresáři, kontejner s konfigurací zapečenou v image, rozhraní routeru s vlastní upravenou verzí a klientská aplikace, která při startu znovu importuje uložený tunel. Každá z nich může po zdánlivě dokončené změně vrátit starý prefix.

I jména cestují. Pokud číselná trasa funguje a jméno hostitele ne, interní záznam DNS nebo konfigurace služby stále ukazuje na starou adresu tunelu. Opravte odkaz, místo abyste rozšiřovali každý rozsah protějšku, což by skutečný problém jen zakrylo a zároveň zvětšilo zdrojový ACL.

Dokud pracujete, mějte otevřenou jednu cestu obnovy: druhý způsob vstupu na hostitele, sériovou konzoli nebo naplánovaný návrat konfiguračních souborů. Změna tunelu, která vás zamkne ven z počítače, který měníte, je nejčastější způsob, jak se z tohoto úkolu stane večer.

Volba mezi oběma cestami a ověření přepnutí

Zvolte A, když vlastníte každý protějšek, počet je malý a krátký výpadek je přijatelný. Zvolte B, když jsou protějšky vzdálené ruce, které neovládáte, když musí spojení mezi lokalitami zůstat, nebo když nemůžete zaručit, že se každá kopie aktualizuje v jednom průchodu. V tom případě přidejte nový prefix na obě rozhraní, přesouvejte protějšky po jednom, sledujte provoz na novém a teprve potom odstraňte staré rozhraní a jeho trasy.

U obou možností je změna hotová, když projdou čtyři kontroly: rukování je čerstvé, vyhledání trasy pro cíl s novým prefixem jmenuje tunel, zátěž o několika stovkách bajtů přejde oběma směry a totéž platí po restartu hostitele nebo správce. Oficiální manuál wg(8) je referencí k tomu, co AllowedIPs v každém směru znamená, a vyplatí se ho znovu přečíst, než rozšíříte rozsah, aby příznak zmizel.

  • Čerstvé rukování a žádná data: podívejte se na AllowedIPs na přijímači, než sáhnete na klíče.
  • Vyhledání trasy ukazuje na špatné rozhraní: trasu vlastní správce nebo kontejner, ne váš soubor.
  • Číselná adresa v pořádku a jméno hostitele rozbité: starý odkaz, ne smyčka směrování.
  • Změna je dokončená, jen když po restartu stále používá nový prefix.

Související články