Miért nehéz észrevenni a VPN hibáit az azonos költségű útvonalaktól
Amikor több alagút azonos költséget oszt meg, minden folyam másikat választhat. Egy sikeres ping semmit sem mond arról az útvonalról, amelyet az alkalmazás valóban használ.
Egy felhasználó jelenti, hogy a belső alkalmazás egyik gépről működik, egy másikról viszont meghiúsul, miközben az átjáróról indított ping mindkét esetben sikeres. Több azonos költségű alagútnál ez nem ellentmondás. Minden folyam a saját következő ugrására kerül, így a vizsgálat és a felhasználó munkamenete egyszerűen különböző útvonalakat használhat. Az alábbi végigvezetés bármilyen változtatás előtt újra előállítja ezt a választást.
Egy ping, több lehetséges útvonal
Ha egy útvonalnak egynél több következő ugrása van azonos költségen, a forgalomirányítónak csomagonként egyet kell választania. A legtöbb megvalósítás a csomag mezőit hasheli, jellemzően a forrás- és célcímet a protokollal és a portokkal együtt, hogy a válaszok ugyanazon az útvonalon maradjanak. A különböző alkalmazások, sőt egy alkalmazás különböző kapcsolatai is különböző hasheket adnak.
Ezért bizonyít olyan keveset az átjáróról végzett diagnosztika. Az átjáró saját vizsgálatának saját címei és portjai vannak, és így saját hash-e. Előfordulhat, hogy az egészséges alagútra kerül, miközben a felhasználó továbbra is a hibásra kerül.
Hogyan választ a platform következő ugrást
Állítsa elő a választást ahelyett, hogy kitalálná. Kérdezze meg a kernelt, melyik útvonalat használná ugyanahhoz a forráshoz és célhoz, mint a meghiúsuló munkamenet. Ez a lekérdezés olyan mezőket is tartalmaz, amelyeket egy egyszerű célkeresés figyelmen kívül hagy. Futtassa egy működő kliensről is, és hasonlítsa össze a két választ:
ip route get 10.20.5.7 from 10.20.0.14
Az iproute2 újabb kiadásai a protokollt és a célportot is elfogadják, aminek akkor van jelentősége, ha a hash tartalmazza őket. Hasonlítsa össze ezt a kimenetet ugyanazzal a lekérdezéssel egy működő kliensről, és a különbség az a bizonyíték, amely hiányzott.
| Observation | Likely cause | First check |
|---|---|---|
| Ping works, application fails | A different flow hash selects another tunnel | Per-flow lookup from the client's address |
| Some users fail, others do not | One tunnel lacks a prefix or selector | Compare both tunnels' installed routes |
| Fails only at larger sizes | Tunnels have different effective MTU | Probe the same size over each path |
| Fails after a reconnect | Stateful asymmetry between paths | Session state on both gateways |
A hibás folyamot kövesse, ne az útvonaltáblát
Az útvonaltábla mindkét alagutat felsorolja, és definíció szerint helyesnek tűnik. A kérdés az, mit tesz az egyes alagút a csomaggal, miután kiválasztották. Ellenőrizze, hogy mindkettő ugyanazokat a védett előtagokat, ugyanazt a továbbítási engedélyt és ugyanahhoz a klienshez eljutó visszautat hordozza.
Figyeljen a középen lévő állapottartó eszközökre. Ha egy kérés az egyik alagúton távozik, és a válasz a másikon tér vissza, egy tűzfal vagy NAT, amely soha nem látta az eredeti folyamot, eldobja. Mindkét alagút helyesen továbbítja a forgalmat, és a kapcsolat mégis meghiúsul.
Ellenőrizze az MTU-t útvonalanként is. A további beágyazást tartalmazó útvonal csökkenti a használható méretet, és az egyik alagúton sikeres átvitel a másikon pontosan akkora méretnél akad meg, ahol a kisebb eltörik.
Egyszerre egy útvonalat hasonlítson össze
Ahol a tervezés karbantartást enged, vegye ki az egyik alagutat a forgalomból, és ismételje meg a felhasználó feladatát. Ha a hiba eltűnik, a probléma az eltávolított útvonalhoz tartozik, és a következő lépés a konfigurációjának összehasonlítása a szomszédéval, nem pedig az útvonaltábla újbóli vizsgálata.
A valódi alkalmazást hasonlítsa össze, ne ismételt pingeket. Jegyezze fel, hogy a hiba egy adott következő ugrást, csomagméretet vagy újracsatlakozás utáni átmenetet követ-e, mert ez a három minta különböző javításokra mutat.
Végül írja le, miért tekinthetők az útvonalak egyenértékűnek, és hogyan kellene egy hibának az egyiket kivonnia a forgalomból. A többutas útválasztás csak akkor biztonságos, ha az útvonalak valóban felcserélhetők, és ez olyan tervezési állítás, amelyet érdemes ellenőrizni, nem pedig feltételezni.