WireGuard: žiadna trasa k peerovi po zmene podsiete — dve cesty von
Zmena podsiete rozbije WireGuard na dvoch miestach: AllowedIPs a spiatočná cesta. Porovnajte prečíslovanie na mieste s prestavbou rozhrania.
Podanie ruky je v wg show čerstvé, koncový bod je správny, kľúče sa nikdy nezmenili — a ping napriek tomu hlási, že k peerovi nie je trasa. Podsieť tunela ste zmenili pred hodinou. Ten príznak je podpis nesúladu prefixu a nie problém s kľúčmi: WireGuard dokončil podanie ruky a potom dáta zahodil, pretože zdrojová adresa už nezodpovedá tomu, čo prijímajúci peer prijme. Zmenu podsiete možno vykonať dvoma rozumnými spôsobmi a každý zlyháva inde.
Dve cesty, ako zmenu vykonať, a čo každá stojí
Možnosť A je prečíslovanie na mieste: upravte adresu rozhrania, rozsahy peerov, trasy a každú kópiu konfigurácie, potom znova načítajte. Možnosť B je postaviť druhé rozhranie na novom prefixe vedľa starého, preniesť peery a staré rozhranie odstrániť, až keď prevádzka naozaj prešla.
| A: renumber in place | B: parallel interface | |
|---|---|---|
| Downtime | The reload window, per host | None if peers are added to both |
| Rollback | Re-apply the previous files | Point peers back at the old interface |
| Risk | Half-applied change: new address, old ranges | Two live interfaces with overlapping intent |
| Effort | Small, if the deployment has one owner | Higher, and needs a cleanup step |
| Fits | Two or three peers you control | Many peers, remote sites, or no maintenance window |
Práve napoly vykonaný stav robí možnosť A nebezpečnou, pretože nevyzerá pokazený. Rozhranie naskočí, podanie ruky prebehne a zlyhá len dátová cesta. Možnosť B stojí viac práce, ale drží funkčnú cestu živú, kým nenájdete každý odkaz.
Čo sa musí hýbať spolu na vašej strane
Štyri veci na lokálnom hostiteľovi opisujú tú istú podsieť a zmena jednej je zmenou všetkých: adresa rozhrania, AllowedIPs každého peera, trasa, ktorú systém používa pre tieto ciele, a čokoľvek, čo za vás nainštaluje správca. S wg-quick sa posledné dve generujú z konfigurácie pri každom naskočení rozhrania, takže zastaraná kópia potichu vráti starý prefix.
Porovnajte, čo je nakonfigurované, s tým, čo je živé, namiesto toho, aby ste verili jednému:
wg show
wg showconf wg0
ip addr show wg0
ip route get 10.90.0.5Vyhľadanie trasy je krok, ktorý ľudia preskakujú. Odpovedá, čo by jadro pre cieľ naozaj urobilo, vrátane konkrétnejšej trasy, ktorú zanechal správca alebo runtime kontajnerov. Ak ukáže iné rozhranie než tunel, konfigurácia nie je problém.
Pri bežiacom rozhraní použite upravený súbor bez toho, aby ste tunel zhodili:
wg syncconf wg0 <(wg-quick strip wg0)Tým sa aktualizujú peery a rozsahy na mieste. Neaktualizuje sa adresa rozhrania ani trasy, pretože to nie sú nastavenia WireGuard — prečíslovanie teda stále potrebuje znova vytvoriť rozhranie alebo zmeniť adresu pomocou ip a potom znova skontrolovať smerovanie.
Čo sa musí hýbať spolu na vzdialenej strane
Tu zmena podsiete zvyčajne umiera. AllowedIPs nie je len náznak smerovania; je to aj zoznam zdrojových adries, ktoré peer smie predložiť. Keď prečíslujete klientov a necháte AllowedIPs servera na starom prefixe, server prijme podanie ruky, dostane zašifrované pakety a zahodí ich, pretože vnútorný zdroj nezodpovedá žiadnemu rozsahu, ktorý s tým peerom spája. Žiadna chyba sa nezaloguje a klient vidí vypršanie času.
Preto aktualizujte prijímaciu stranu vedome: záznam peera na serveri musí uvádzať nový prefix klienta, vlastná spiatočná trasa servera musí pre ten prefix ukazovať na tunel a každá naväzujúca sieť za serverom sa musí naučiť novú cestu. Pravidlá firewallu, ktoré pomenúvali starý rozsah, potrebujú rovnaké zaobchádzanie, a rovnako všetko, čo robí výber podľa zdroja.
Diagnostika, ktorá oba druhy zlyhania oddelí, je lacná. Čerstvé podanie ruky bez dát znamená, že tunel stojí a vnútorné adresovanie nesúhlasí. Žiadne podanie ruky znamená, že sa pozeráte na dosiahnuteľnosť alebo kľúče. Nemeňte kľúče pre problém s prefixom; resetuje to jedinú vec, ktorá fungovala.
Zastarané kópie, ktoré prežijú vašu úpravu
Upraviť súbor nie je to isté ako zmeniť bežiaci systém a kópií je viac, než ľudia čakajú: unit alebo správca, ktorému rozhranie patrí, druhý profil s rovnakým menom v inom adresári, kontajner s konfiguráciou zapečenou v image, rozhranie routera s vlastnou upravenou verziou a klientska aplikácia, ktorá pri štarte znova importuje uložený tunel. Každá z nich môže po zdanlivo dokončenej zmene vrátiť starý prefix.
Aj mená cestujú. Ak číselná trasa funguje a názov hostiteľa nie, interný záznam DNS alebo konfigurácia služby stále ukazuje na starú adresu tunela. Opravte odkaz namiesto rozširovania každého rozsahu peera, čo by skutočný problém len zakrylo a zároveň zväčšilo zdrojový ACL.
Kým pracujete, majte otvorenú jednu cestu obnovy: druhý spôsob vstupu na hostiteľa, sériovú konzolu alebo naplánované vrátenie konfiguračných súborov. Zmena tunela, ktorá vás zamkne von z počítača, ktorý meníte, je najčastejší spôsob, ako sa z tejto úlohy stane večer.
Voľba medzi oboma cestami a overenie prepnutia
Zvoľte A, keď vlastníte každého peera, počet je malý a krátky výpadok je prijateľný. Zvoľte B, keď sú peery vzdialené ruky, ktoré neovládate, keď musí spojenie medzi lokalitami zostať, alebo keď nemôžete zaručiť, že sa každá kópia aktualizuje v jednom prechode. V tom prípade pridajte nový prefix na obe rozhrania, presúvajte peery po jednom, sledujte prevádzku na novom a až potom odstráňte staré rozhranie a jeho trasy.
Pri oboch možnostiach je zmena hotová, keď prejdú štyri kontroly: podanie ruky je čerstvé, vyhľadanie trasy pre cieľ s novým prefixom pomenuje tunel, záťaž niekoľkých stoviek bajtov prejde oboma smermi a to isté platí po reštarte hostiteľa alebo správcu. Oficiálny manuál wg(8) je referenciou k tomu, čo AllowedIPs znamená v každom smere, a vyplatí sa ho znova prečítať, kým rozšírite rozsah, aby príznak zmizol.
- Čerstvé podanie ruky a žiadne dáta: pozrite sa na AllowedIPs u príjemcu, kým sa dotknete kľúčov.
- Vyhľadanie trasy ukazuje na nesprávne rozhranie: trasu vlastní správca alebo kontajner, nie váš súbor.
- Číselná adresa v poriadku a názov hostiteľa pokazený: starý odkaz, nie slučka smerovania.
- Zmena je dokončená len vtedy, keď sa po reštarte stále používa nový prefix.