Miks traceroute sureb VPN-tunnelis ühes suunas
Jälg, mis ühes suunas lõpeb ja teises prindib tähti, on tavaliselt diagnostikaprobleem. Võrrelge sondimeetodeid, tagasiteid ja tegelikku päringut.
Traceroute’i väljund, mis lõpeb ühes suunas ja prindib teises tähtede ridu, näeb välja nagu asümmeetriline edastamine, ja tavaliselt see seda ei ole. Iga kuvatud hüpe eeldab, et sond kohale jõuab, et ruuter otsustab vastata ja et vastus sõidab tagasi ning sobitatakse sondiga. Katkesta ükskõik milline neist lülidest ja rida muutub täheks, samal ajal kui tunnel jätkab andmete kandmist.
Jälg on tõestus diagnostika kohta enne, kui see on tõestus transpordi kohta. Küsimus, mida tasub küsida, on see, milline kolmest lülist ebaõnnestus, ja vastus tuleb pakettidest, mitte väljundi kujust.
Täht on puuduv vastus, mitte puuduv hüpe
Traceroute liigub väljapoole, saates sonde, mille TTL aegub igal ringil ühe ruuteri võrra kaugemal. Ruuter, mis viskab aegunud sondi ära, peaks tagastama ICMP Time Exceeded teate, mis nimetab teda ennast, ja tööriist prindib selle nime. See, mida tööriist tegelikult ootab, on selle teate saabumine ajapiiri jooksul. Kui ruuter vastab teisest lähteaadressist, piirab vigade tekitamise sagedust või viskab sondi sõnatult ära, ei anna ring midagi trükitavat.
Ükski neist tulemustest ei ütle, et edasine tee on katki. Täht on aruanne vastamata posti kohta, mitte tühja tee kohta.
Sondimeetod otsustab, millise filtriga kohtud
Linuxis on vaikemeetodiks tavaliselt suure numbriga UDP-sihtport, Windowsi tracert saadab ICMP kajasid ja Linuxile saab käskida kasutada selle asemel ICMP-d või TCP-d. Igaüks neist näeb olekupõhise tulemüüri või pilve turvagrupi jaoks erinevat tüüpi liiklusena. UDP jälje võrdlemine ühelt poolt ICMP jäljega teiselt poolt võrdleb kahte erinevat katset. Kinnitage meetod, aadressiperekond, lähteaadress ja ajapiir enne, kui nimetate tulemusi erinevuseks.
Õiglaseks võrdlemiseks käivitage jälg hostidelt, mis liiklust tegelikult kannavad, mitte lüüsilt, mis nende eest edastab. Ruuteri genereeritud jälg kasutab ruuteri enda lähteaadressi ja väljundpoliitikat, mis võivad olla rangemad kui miski, mida klient näeb. Kirjutage täpne käsk üles, et järgmine inimene saaks seda korrata.
Ajapiiri väärtus on katse teine pool ja seda on lihtne märkmetest välja jätta. Kahesekundiline ootus ummistunud teel teatab tähtedest seal, kus viiesekundiline ootus teatab hüpetest. Hoidke väärtus kõigis käivitustes samana, et võrdlus jääks võrgu kohta.
Tagasitee on omaette marsruut
ICMP viga on tavaline pakett oma lähte ja sihiga ning see vajab tagasiteed jälitajani. Kui tunneli poliitika kannab LAN-i prefikseid, aga mitte ruuteri aadressi, mis vea tekitas, lahkub teade teel, mis ei suuda teieni jõuda. Vastuste filtreerimine võib selle ära visata ka siis, kui marsruut on olemas, sest pakett saabub ootamatult aadressilt ootamatule liidesele. See on lahknevus diagnostika tasandil, mitte rakenduse tõrge.
Iga valija laiendamine, kuni jälg lõpeb, teeb pildi ilusamaks ja poliitika halvemaks. Parandage konkreetne diagnostikaaadress või leppige tähega ja testige rakendust muul viisil.
Kinnitage tunnel tegeliku päringuga
TCP käepigistus teenuse enda pordil harjutab edastamist, tagasimarsruutimist ja filtreerimist suunas, mis loeb. Allolevad käsud jooksevad mõlemas otsas ja võrdlevad, mida kumbki pool avada saab. Asendage teenuse port ja tunneli liidese nimi oma seadistusest.
traceroute -I -n -w 2 203.0.113.40
traceroute -T -p 443 -n -w 2 203.0.113.40
curl -sS -o /dev/null -w '%{http_code} %{time_total}\n' --max-time 5 http://203.0.113.40:8080/health
ss -tan state established
Lugege kõigepealt kahte traceroute’i käivitust: kui ICMP käivitus näitab hüppeid ja TCP käivitus mitte, on erinevus meetodis, mitte teel. Seejärel võtke curl tulemus rakendustasandi vastusena, sest lõpetatud vahetus mõistliku olekukoodiga tähendab, et edasi- ja tagasitee töötavad tegeliku liikluse jaoks. Soketite loend näitab, kas ühendus on üldse loodud, mida ükski jälg teile öelda ei saa.
Tunnel, mis kannab interaktiivset sessiooni mõlemas suunas, samal ajal kui üks traceroute prindib tähti, on terve ja lihtsalt mittefotogeeniline. Hoidke kummagi poole käsuväljundit kirjena ja käsitlege puuduvaid hüppeid avatud küsimusena diagnostika kohta, mitte otsusena VPN-i kohta.