En bruger rapporterer, at den interne applikation virker fra én maskine og fejler fra en anden, mens det ping, du kører fra gatewayen, lykkes i begge tilfælde. Med flere tunneler med samme pris er det ikke en selvmodsigelse. Hver strøm placeres på sit eget næste hop, så din test og brugerens session bruger måske blot forskellige veje. Gennemgangen nedenfor genskaber valget, før noget ændres.

Ét ping, flere mulige veje

Når en rute har mere end ét næste hop til samme pris, skal routeren vælge ét pr. pakke. De fleste implementeringer hasher felter fra pakken, typisk kilde- og destinationsadresserne sammen med protokollen og portene, så svar bliver på samme vej. Forskellige applikationer, eller endda forskellige forbindelser fra én applikation, giver forskellige hashes.

Derfor beviser en diagnostik fra gatewayen så lidt. Gatewayens egen test har sine egne adresser og porte og dermed sin egen hash. Den kan lande på den sunde tunnel, mens brugeren bliver ved med at lande på den ødelagte.

Sådan vælger platformen et næste hop

Genskab valget i stedet for at gætte det. Spørg kernen, hvilken rute den ville bruge til samme kilde og destination som den fejlende session. Det opslag omfatter felter, som et almindeligt destinationsopslag ignorerer. Kør det også fra en fungerende klient, og sammenlign de to svar:

ip route get 10.20.5.7 from 10.20.0.14

Nyere iproute2-udgivelser accepterer også protokollen og destinationsporten, hvilket betyder noget, når hashen omfatter dem. Sammenlign det output med det samme opslag fra en fungerende klient, og forskellen er det bevis, du manglede.

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

Følg den fejlende strøm, ikke rutetabellen

Rutetabellen viser begge tunneler og ser per definition rigtig ud. Spørgsmålet er, hvad hver tunnel gør ved pakken, når den er valgt. Bekræft, at begge bærer de samme beskyttede præfikser, den samme videresendelsestilladelse og en returvej, der når samme klient.

Vær opmærksom på stateful enheder i midten. Hvis en anmodning forlader gennem den ene tunnel, og svaret vender tilbage gennem den anden, vil en firewall eller NAT, der aldrig har set den oprindelige strøm, droppe den. De to tunneler videresender hver især trafik korrekt, og forbindelsen fejler stadig.

Kontroller også MTU pr. vej. En vej med en ekstra indkapsling krymper den brugbare størrelse, og en overførsel, der lykkes på den ene tunnel, går i stå på den anden præcis ved den størrelse, hvor den mindre knækker.

Sammenlign én vej ad gangen

Hvor designet tillader vedligeholdelse, tag en tunnel ud af drift, og gentag brugerens opgave. Hvis fejlen forsvinder, hører problemet til den vej, du fjernede, og næste skridt er at sammenligne dens konfiguration med naboens i stedet for at undersøge rutetabellen igen.

Sammenlign den rigtige applikation, ikke gentagne ping. Notér, om fejlen følger et bestemt næste hop, en pakkestørrelse eller en overgang efter genopkobling, fordi de tre mønstre peger på forskellige reparationer.

Skriv til sidst ned, hvorfor vejene anses for ækvivalente, og hvordan en fejl skal fjerne en af dem fra drift. Multipath er kun sikkert, når vejene virkelig kan udskiftes, og det er en designpåstand, der er værd at kontrollere i stedet for at antage.

Relaterede artikler