Dva peery uvádzajú rozsahy, ktoré sa dotýkajú, a prevádzka sa dostane k nesprávnemu. Nič nie je poškodené: WireGuard vyberá peer porovnaním cieľa s nakonfigurovanými rozsahmi a vyhráva najkonkrétnejšia zhoda. Skôr než čokoľvek rozšírite, rozhodnite, ktorý peer má vlastniť ktorý prefix.

Najdlhší prefix vyhráva vo vnútri WireGuardu

Každý záznam peera nesie množinu cieľových prefixov. Keď je paket smerovaný do rozhrania, implementácia hľadá záznam s najkonkrétnejším zodpovedajúcim prefixom — to isté pravidlo, ktoré uplatňuje smerovacia tabuľka. Preto /24 poráža /16, ktorý ho obsahuje, a užší peer dostane prevádzku.

Zostavy road-warrior to používajú zámerne. Jeden peer vlastní široký rozsah pre lokalitu a jednotliví hostitelia sa vyčleňujú záznamami /32, ktoré patria iným peerom. Vzor funguje preto, že vyčlenenia sú konkrétnejšie, nie pre poradie.

Zapíšte vlastníctvo ako tabuľku prefixu a peera. Ak dva záznamy opisujú ten istý prefix, konfigurácia už nevyjadruje zámer, ale preteky.

Operačný systém vyberá najprv rozhranie

WireGuard vyberá iba spomedzi peerov na jednom rozhraní. Ktoré rozhranie paket dostane, sa rozhoduje skôr, smerovacou tabuľkou hostiteľa, a druhá predvolená trasa alebo zastaraná trasa môže poslať prevádzku niekam, kde ju zoznam peerov nikdy nevidí. Preto môže byť diagnóza na úrovni peera správna a napriek tomu nevysvetliť zlyhanie. Skontrolujte trasu k cieľu skôr, než začnete čítať konfiguráciu peera, pretože trasa ukazujúca na fyzické rozhranie obchádza celú otázku.

Nástroj zvyčajne inštaluje tieto trasy z rozsahov peerov, čo znamená, že zmena v zozname jedného peera môže potichu presmerovať prevádzku, ktorá predtým patrila inému. Úprava peera je preto smerovacia zmena v prestrojení. Prezrite obe naraz, inak jedno opravíte a druhé pokazíte.

Prichádzajúce pakety sa kontrolujú podľa zdroja

Zoznam rozsahov plní dvojitú úlohu. Pre odchádzajúcu prevádzku vyberá peera podľa cieľa a pre prichádzajúcu prevádzku autorizuje zdrojovú adresu. Paket prichádzajúci z adresy mimo rozsahov daného peera sa zahodí skôr, než ho uvidí akýkoľvek firewall.

Túto asymetriu ľahko prehliadnete, keď čítate jednu stranu konfigurácie. Peer, ktorý dosiahne na podsiet, tým nie je oprávnený odosielať z tejto podsiete, a oba smery vynucujú rôzne kontroly.

Úzke vlastníctvo zdroja z toho robí výhodu. Dajte každému peerovi /32 pre jeho vlastnú adresu a firewall nižšie má spoľahlivý zdroj na porovnanie, namiesto rozsahu pre celú skupinu, ktorý by si mohol nárokovať ktorýkoľvek člen.

Duplicitné rozsahy nie sú failover

Priradenie rovnakého prefixu dvom peerom nevytvára vyrovnávač zaťaženia ani záložnú cestu. Neexistuje kontrola stavu ani afinita relácie: víťazný záznam určuje vnútorné poradie implementácie, čo nie je zmluva, na ktorú by ste mali navrhovať. Ak potrebujete alternatívne východy, vyjadrite ich tam, kde je výber definovaný. Smerovacia politika, metrika alebo dvojica odlišných prefixov s dokumentovaným vlastníkom každého z nich dávajú správanie, ktoré môžete predvídať a testovať.

Rozšírenie rozsahu na opravu nesúvisiaceho zlyhania je druhá častá chyba. Odvedie prevádzku od peera, ktorý fungoval, a nový príznak prichádza skôr, než je starý pochopený.

Pred úpravou overte výber

Tri príkazy odpovedajú na tri otázky v poradí. Prvý vypíše rozsahy, ktoré si každý peer nárokuje. Druhý ukáže, ktoré rozhranie by hostiteľ použil pre cieľ. Tretí ukáže živý stav peerov po tom, čo prevádzka prešla.

wg show wg0 allowed-ips
ip route get 10.66.8.20
wg show wg0
ip rule show

Spustite ich pred zmenou a po nej a porovnajte. Ak sa výstup trasy zmenil, ale prevádzka stále dorazí k nesprávnemu peerovi, zoznamy prefixov sa prekrývajú spôsobom, ktorý ste ešte nezapísali. Ak sa výstup trasy nezmenil, konfigurácia peera nebola to, na čo sa pýtalo.

Zapíšte do tiketu cieľ, zvolené rozhranie a zvoleného peera. Práve táto trojica robí prekryv neskôr preskúmateľným a je oveľa užitočnejšia ako snímka obrazovky konfigurácie.

Súvisiace články