Jak rozeznat smyčku směrování od chvění trasy na VPN lokalitách
Smyčka směrování i chvějící se trasa působí stejné přerušované ztráty. Tři kontroly na branách je odliší dřív, než cokoli změníte.
Dvě lokality, jeden tunel a vzdálený prefix, který chvíli odpovídá a pak ztichne. Reflex je nazvat to smyčkou směrování, a někdy to tak přesně je. Ale smyčka a chvějící se trasa dávají stejnou stížnost a potřebují opačné opravy: jedna je rozhodnutí o předávání, které nikdy neskončí, druhá je prefix, který pořád opouští tabulku. Tři pozorování je oddělují a všechna tři můžete posbírat z příkazové řádky brány, než sáhnete na filtr nebo restartujete tunel.
Smyčka se rozhoduje skok za skokem. Lokalita A zvolí B jako další skok k cíli, B zvolí A pro stejný cíl a paket vyprší na TTL po dvou cestách tam a zpět. Chvění naopak rozhoduje směrovací protokol: prefix se stáhne, znovu nainstaluje nebo nahradí alternativním dalším skokem, takže některé pakety nemají žádnou trasu, zatímco jiné jdou po naprosto dobré.
Tři kontroly, které otázku vyřeší
K prvnímu verdiktu nepotřebujete zachycení paketů. Potřebujete stav prefixu na obou koncích, další skok, který každá strana volí, a počet skoků, který se buď opakuje, nebo ne. Pokud prefix zůstává nainstalovaný se stejným dalším skokem, zatímco provoz selhává, smyčka žije v předávací cestě. Pokud prefix mizí a vrací se, závada je nad předáváním a oprava patří směrovacímu protokolu, ne statické trase.
| Observation | Routing loop | Route flapping |
|---|---|---|
| Prefix in the table | Installed, same next hop throughout | Withdrawn and reinstalled, or next hop alternates |
| Hop count | Reaches zero at the same two gateways | Expires only while the prefix is missing |
| Failure shape | Consistent loss for that prefix from every source | Bursts, often after a link or peer event |
| Where the fix belongs | The site that owns the prefix, plus filters on the transit path | Advertisement, hold timers, or the flapping link |
Jedno varování, než začnete. Pokud to čtete přes tunel, který dělá smyčku, vaše relace zemře ve chvíli, kdy trasu změníte. Otevřete konzoli nebo cestu správy, která nezávisí na prefixu, který se chystáte opravit.
Kontrola první: je prefix stabilní, nebo se mrská
Ptejte se jádra, co nainstalovalo, ne co slibuje konfigurační soubor. Na linuxové bráně ip route get 10.20.30.40 provádí stejné vyhledání jako předávací cesta, včetně tabulek zásad, zatímco ip route show 10.20.30.0/24 ukazuje samotný záznam. ip monitor route vysílá každou změnu v okamžiku vzniku, což je nejrychlejší způsob, jak sledovat prefix přicházet a odcházet.
Na routeru s FRR nebo BIRD není zajímavá předávací tabulka. show ip bgp 10.20.30.0/24 vrací zvolenou cestu a její dobu běhu; doba běhu, která se každých pár minut resetuje, je chvění, které můžete pojmenovat, ne smyčka. show ip bgp summary ukazuje stav sousedů a počty prefixů, takže soused, který pořád padá, snímá vinu z předávací cesty.
Zapište odpověď, než cokoli změníte. Stabilita deset minut, zatímco pingy selhávaly, a zmizení čtyřikrát za deset minut vedou k různým dalším krokům. Druhý případ dělá každou teorii statické trasy irelevantní.
Kontrola druhá: míří další skok zpět do tunelu příchodu
Smyčka potřebuje, aby se dvě brány shodly. Na lokalitě, která paket přijímá, se podívejte na trasu, kterou paket použije k odchodu: ip route get 10.20.30.40 from 10.10.5.20 se skutečnou zdrojovou adresou, protože pravidlo zásad může odpovědět jinak než hlavní tabulka. Pak vyhledání zopakujte na lokalitě, která ho odeslala. Pokud každá strana volí tu druhou jako další skok pro stejný prefix, smyčka je dokázaná a žádné zachycení nic nepřidá.
Příčinou je téměř vždy oznámení, které nemělo tunelem projít. Výchozí trasa redistribuovaná do tunelu, agregát pokrývající vlastní podsíť vzdálené lokality nebo statická trasa ukazující na protějšek pro jistotu vytvářejí všechny stejný vzájemný další skok. Tunel může být plně zavedený a přesto vést provoz v kruhu; poznámky k předávání strongSwan popisují směrovací stránku tohoto požadavku.
WireGuard si zaslouží vlastní poznámku, protože není žádné oznámení, které by neslo vinu. wg show vypisuje AllowedIPs pro každý protějšek a jádro přijme cíl pro protějšek jen tehdy, když spadá do tohoto rozsahu. Smyčka je tam překrývající se rozsah AllowedIPs nebo statická trasa ukazující zpět přes rozhraní, takže oprava žije na těch dvou místech a nikde jinde.
Kontrola třetí: čtěte počet skoků, ne hvězdičky
traceroute -n -I 10.20.30.40 i mtr -n -r -c 20 10.20.30.40 ukazují cestu a režim ICMP často přežije filtrování, které požírá UDP sondy. Smyčka vypadá jako krátká opakující se posloupnost stejných dvou adres bran, přičemž TTL pokaždé roste. Výpadek vypadá jako hvězdičky za poslední branou, která odpověděla, a jeden tichý skok není důkazem ničeho.
Když je cesta nejednoznačná, čtěte TTL na drátě. tcpdump -ni any -vv icmp na obou branách ukazuje TTL každého paketu a zdrojovou adresu každé odpovědi o vypršení času. Pokud paket dorazí na vzdálenou lokalitu s TTL nižším, než je počet skoků, které cesta může obsahovat, něco přidává skoky, které vám traceroute neukazuje, a to se stává, když firewall jedné lokality odpovídá na sondy jménem druhé.
Opravte vlastníka prefixu a pak ověřte oba směry
Rozhodněte, která lokalita cíl vytváří a které tranzitní cesty jsou povolené, a pak změňte oznámení nebo statickou trasu u tohoto vlastníka. Opravovat přijímající lokalitu je lákavé a obvykle špatné: skryje smyčku pro jeden prefix a nechá špatné oznámení na místě pro ten další. Značky tras, distribuční seznamy a pravidla split-horizon existují, aby to zastavily u zdroje, a jsou levnější než filtr odpovídající jedinému prefixu.
Po změně ověřte zvlášť cestu tam a zpět, protože smyčka může být nahrazena černou dírou bez viditelného zlepšení příznaku. Spusťte ip route get z obou konců, pošlete provoz z hostitele, který není bránou, a nechte ip monitor route běžet alespoň jeden časovač podržení, aby se chvění nepletlo s opravou.
Než cokoli změníte, potvrďte těchto pět bodů: prefix je stabilní nebo se mrská, další skok na obou koncích míří na tunel, počet skoků se opakuje nebo ne, jedna lokalita vlastní prefix a máte cestu správy, která změnu přežije. Pokud je kterýkoli z pěti neznámý, ostatní čtyři jsou dohady.