Miks võrdse kuluga marsruudid teevad VPN-i tõrkeid raskesti nähtavaks
Kui mitu tunnelit jagavad sama kulu, võib iga voog valida erineva. Edukas ping ei ütle midagi tee kohta, mida sinu rakendus tegelikult kasutab.
Kasutaja teatab, et sisemine rakendus töötab ühest masinast ja nurjub teisest, samal ajal kui lüüsist käivitatud ping õnnestub mõlemal juhul. Mitme võrdse kuluga tunneli puhul ei ole see vastuolu. Iga voog paigutatakse oma järgmisele hüppele, nii et sinu kontroll ja kasutaja sessioon võivad lihtsalt kasutada erinevaid teid. Alljärgnev ülevaade taasesitab selle valiku enne, kui midagi muudetakse.
Üks ping, mitu võimalikku teed
Kui marsruudil on sama kuluga rohkem kui üks järgmine hüpe, peab ruuter valima ühe paketi kohta. Enamik teostusi räsiib paketi välju, tavaliselt lähte- ja sihtkoha aadressid koos protokolli ja portidega, et vastused jääksid samale teele. Erinevad rakendused, isegi ühe rakenduse erinevad ühendused, annavad erinevad räsid.
Seepärast tõestab lüüsist tehtud diagnostika nii vähe. Lüüsi enda kontrollil on oma aadressid ja pordid ning seega oma räsi. See võib maanduda tervele tunnelile, samal ajal kui kasutaja maandub ikka katkisele.
Kuidas platvorm valib järgmise hüppe
Taasesita valik selle asemel, et seda oletada. Küsi tuumalt, millist marsruuti see kasutaks sama lähte ja sihtkoha jaoks nagu nurjuv sessioon. See otsing hõlmab välju, mida tavaline sihtkoha otsing eirab. Käivita see ka töötavast kliendist ja võrdle kahte vastust:
ip route get 10.20.5.7 from 10.20.0.14
Uuemad iproute2 versioonid aktsepteerivad ka protokolli ja sihtporti, mis loeb siis, kui räsi need sisaldab. Võrdle seda väljundit sama otsinguga töötavast kliendist, ja erinevus on tõend, millest sul puudu jäi.
| 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 |
Jälgi nurjuvat voogu, mitte marsruutitabelit
Marsruutitabel loetleb mõlemad tunnelid ja näeb definitsiooni järgi õige välja. Küsimus on, mida iga tunnel valitud paketiga teeb. Kontrolli, et mõlemad kannavad samu kaitstud prefikseid, sama edastusluba ja tagasiteed, mis jõuab sama kliendini.
Pööra tähelepanu olekuga seadmetele keskel. Kui päring väljub ühe tunneli kaudu ja vastus naaseb teise kaudu, siis tulemüür või NAT, kes algset voogu kunagi ei näinud, viskab selle kõrvale. Mõlemad tunnelid edastavad liiklust õigesti ja ühendus siiski nurjub.
Kontrolli ka MTU-d iga tee kohta. Lisakapseldusega tee vähendab kasutatavat suurust ja ülekanne, mis õnnestub ühe tunneli kaudu, takerdub teisel täpselt sellel suurusel, kus väiksem katki läheb.
Võrdle ühte teed korraga
Kus disain lubab hooldust, võta üks tunnel töölt välja ja korda kasutaja ülesannet. Kui tõrge kaob, kuulub probleem eemaldatud teele, ja järgmine samm on võrrelda selle seadistust naabri omaga, mitte marsruutimistabelit uuesti uurida.
Võrdle tegelikku rakendust, mitte korduvaid pinge. Pane kirja, kas tõrge järgib kindlat järgmist hüpet, paketi suurust või üleminekut pärast uuesti ühendamist, sest need kolm mustrit osutavad erinevatele parandustele.
Lõpuks pane kirja, miks teid peetakse samaväärseteks ja kuidas tõrge peaks ühe neist töölt välja viima. Mitmetee on turvaline ainult siis, kui teed on tõesti vahetatavad, ja see on disaini väide, mida tasub kontrollida, mitte eeldada.