Používateľ hlási, že interná aplikácia funguje z jedného počítača a z iného zlyháva, zatiaľ čo ping spustený z brány uspeje v oboch prípadoch. Pri viacerých tuneloch s rovnakou cenou to nie je rozpor. Každý tok sa umiestni na vlastný ďalší skok, takže vaša sonda a používateľova relácia môžu jednoducho používať rôzne cesty. Nasledujúci rozbor tento výber reprodukuje ešte pred akoukoľvek zmenou.

Jeden ping, viacero možných ciest

Keď má trasa viac ako jeden ďalší skok s rovnakou cenou, smerovač musí pre každý paket vybrať jeden. Väčšina implementácií hašuje polia z paketu, zvyčajne zdrojovú a cieľovú adresu spolu s protokolom a portmi, aby odpovede zostali na tej istej ceste. Rôzne aplikácie, ba aj rôzne spojenia jednej aplikácie, vytvárajú rôzne haše.

Preto diagnostika z brány dokazuje tak málo. Vlastná sonda brány má vlastné adresy a porty, a teda vlastný haš. Môže skončiť na zdravom tuneli, zatiaľ čo používateľ ďalej končí na pokazenom.

Ako platforma vyberá ďalší skok

Výber reprodukujte, namiesto toho, aby ste ho hádali. Spýtajte sa jadra, ktorú trasu by použilo pre rovnaký zdroj a cieľ ako zlyhávajúca relácia. Toto hľadanie zahŕňa polia, ktoré bežné hľadanie podľa cieľa ignoruje. Spustite ho aj z fungujúceho klienta a porovnajte obe odpovede:

ip route get 10.20.5.7 from 10.20.0.14

Novšie vydania iproute2 prijímajú aj protokol a cieľový port, čo je dôležité, keď ich haš zahŕňa. Porovnajte tento výstup s rovnakým hľadaním z fungujúceho klienta a rozdiel je dôkaz, ktorý vám chýbal.

ObservationLikely causeFirst check
Ping works, application failsA different flow hash selects another tunnelPer-flow lookup from the client's address
Some users fail, others do notOne tunnel lacks a prefix or selectorCompare both tunnels' installed routes
Fails only at larger sizesTunnels have different effective MTUProbe the same size over each path
Fails after a reconnectStateful asymmetry between pathsSession state on both gateways

Sledujte zlyhávajúci tok, nie tabuľku trás

Tabuľka trás uvádza oba tunely a podľa definície vyzerá správne. Otázkou je, čo každý tunel robí s paketom po výbere. Overte, že oba nesú rovnaké chránené prefixy, rovnaké povolenie preposielania a spiatočnú cestu, ktorá dosiahne toho istého klienta.

Všímajte si stavové zariadenia v strede. Ak požiadavka odchádza jedným tunelom a odpoveď sa vracia druhým, firewall alebo NAT, ktorý pôvodný tok nikdy nevidel, ju zahodí. Oba tunely preposielajú prevádzku správne a spojenie napriek tomu zlyháva.

Skontrolujte aj MTU po jednotlivých cestách. Cesta s dodatočnou enkapsuláciou zmenšuje použiteľnú veľkosť a prenos, ktorý jedným tunelom prejde, sa na druhom zasekne presne na veľkosti, kde sa menší láme.

Porovnávajte jednu cestu po druhej

Tam, kde to návrh dovoľuje, vyraďte jeden tunel z prevádzky a zopakujte používateľovu úlohu. Ak porucha zmizne, problém patrí ceste, ktorú ste odobrali, a ďalším krokom je porovnať jej konfiguráciu so susednou, nie znova skúmať smerovaciu tabuľku.

Porovnávajte skutočnú aplikáciu, nie opakované pingy. Zaznamenajte, či porucha sleduje určitý ďalší skok, veľkosť paketu alebo prechod po opätovnom pripojení, pretože tieto tri vzorce ukazujú na rôzne opravy.

Na záver zapíšte, prečo sa cesty považujú za rovnocenné a ako má porucha jednu z nich vyradiť z prevádzky. Viaccestnosť je bezpečná len vtedy, keď sú cesty skutočne zameniteľné, a to je návrhové tvrdenie, ktoré stojí za overenie, nie za predpoklad.

Súvisiace články