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.

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

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.

Artikuj të ngjashëm