Pse rrugët me kosto të njëjtë i bëjnë defektet e VPN të vështira për t’u parë
Kur disa tunele ndajnë të njëjtën kosto, çdo rrjedhë mund të marrë një tjetër. Një ping i suksesshëm nuk thotë asgjë për rrugën që aplikacioni juaj përdor në të vërtetë.
Një përdorues raporton se aplikacioni i brendshëm funksionon nga një makinë dhe dështon nga një tjetër, ndërsa ping-u që ekzekutoni nga porta e hyrjes ka sukses në të dyja rastet. Me disa tunele me kosto të njëjtë, kjo nuk është kontradiktë. Çdo rrjedhë vendoset në hapin e vet të radhës, kështu që kontrolli juaj dhe sesioni i përdoruesit thjesht mund të përdorin rrugë të ndryshme. Shpjegimi më poshtë e riprodhon atë zgjedhje para se të ndryshohet diçka.
Një ping, disa rrugë të mundshme
Kur një rrugë ka më shumë se një hap të radhës me të njëjtën kosto, router-i duhet të zgjedhë një për çdo paketë. Shumica e implementimeve hashojnë fusha të paketës, zakonisht adresat e burimit dhe të destinacionit së bashku me protokollin dhe portat, në mënyrë që përgjigjet të mbeten në të njëjtën rrugë. Aplikacione të ndryshme, apo edhe lidhje të ndryshme të një aplikacioni, prodhojnë hashe të ndryshme.
Kjo është arsyeja pse një diagnostikim nga porta e hyrjes provon kaq pak. Kontrolli i vetë portës ka adresat dhe portat e veta, dhe për rrjedhojë hash-in e vet. Ai mund të ulet në tunelin e shëndoshë ndërsa përdoruesi vazhdon të ulet në atë të prishur.
Si e zgjedh platforma hapin e radhës
Riprodhoni zgjedhjen në vend që ta hamendësoni. Pyetni kernel-in se cilën rrugë do të përdorte për të njëjtin burim dhe destinacion si sesioni që dështon. Ai kërkim përfshin fusha që një kërkim i thjeshtë destinacioni i injoron. Ekzekutoni atë edhe nga një klient që funksionon dhe krahasoni dy përgjigjet:
ip route get 10.20.5.7 from 10.20.0.14
Versionet më të reja të iproute2 pranojnë edhe protokollin dhe portën e destinacionit, gjë që ka rëndësi kur hashi i përfshin ato. Krahasoni atë dalje me të njëjtin kërkim nga një klient që funksionon, dhe ndryshimi është prova që ju mungonte.
| 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 |
Ndiqni rrjedhën që dështon, jo tabelën e rrugëve
Tabela e rrugëve rendit të dy tunelet dhe sipas përkufizimit duket e saktë. Pyetja është çfarë bën çdo tunel me paketën pasi zgjidhet. Verifikoni që të dy mbajnë të njëjtat prefikse të mbrojtura, të njëjtën leje përcjelljeje dhe një rrugë kthimi që arrin te i njëjti klient.
Kushtojini vëmendje pajisjeve me gjendje në mes. Nëse një kërkesë del përmes një tuneli dhe përgjigja kthehet përmes tjetrit, një firewall ose NAT që nuk e ka parë kurrë rrjedhën origjinale do ta hedhë poshtë. Të dy tunelet e përcjellin trafikun saktë, dhe lidhja prapëseprapë dështon.
Kontrolloni edhe MTU-në për çdo rrugë. Një rrugë me inkapsulim shtesë zvogëlon madhësinë e përdorshme, dhe një transferim që ka sukses në një tunel ngec në tjetrin pikërisht në madhësinë ku thyhet më i vogli.
Krahasoni një rrugë në një herë
Aty ku projektimi lejon mirëmbajtje, hiqni një tunel nga shërbimi dhe përsëritni detyrën e përdoruesit. Nëse defekti zhduket, problemi i përket rrugës që hoqët, dhe hapi tjetër është të krahasoni konfigurimin e saj me atë të fqinjit në vend që të rishqyrtoni tabelën e rrugëzimit.
Krahasoni aplikacionin e vërtetë, jo ping të përsëritura. Shënoni nëse defekti ndjek një hap të caktuar të radhës, një madhësi pakete apo një kalim pas rilidhjes, sepse këto tre modele tregojnë riparime të ndryshme.
Së fundi, shënoni pse rrugët konsiderohen ekuivalente dhe si një defekt duhet të heqë njërën prej tyre nga shërbimi. Rruga e shumëfishtë është e sigurt vetëm kur rrugët janë vërtet të këmbyeshme, dhe kjo është një deklaratë projektimi që ia vlen të kontrollohet, jo të supozohet.