Miksi traceroute kuolee yhteen suuntaan VPN-tunnelissa
Jälki, joka täydentyy yhteen suuntaan ja tulostaa tähtiä toiseen, on yleensä diagnostiikkaongelma. Vertaa koetintapoja, paluureittejä ja todellista pyyntöä.
Tracerouten tuloste, joka täydentyy yhteen suuntaan ja tulostaa tähtirivejä toiseen, näyttää epäsymmetriseltä edelleenlähetykseltä, eikä yleensä ole sitä. Jokainen näytetty hyppy vaatii, että koetin saapuu, että reititin päättää vastata ja että vastaus kulkee takaisin ja kohdistetaan koettimeen. Katkaise mikä tahansa näistä lenkeistä, niin rivistä tulee tähti, kun taas tunneli jatkaa datan kuljettamista.
Jälki on todiste diagnostiikasta ennen kuin se on todiste siirrosta. Kysymys, joka kannattaa esittää, on mikä kolmesta lenkistä petti, ja vastaus tulee paketeista, ei tulosteen muodosta.
Tähti on puuttuva vastaus, ei puuttuva hyppy
Traceroute etenee ulospäin lähettämällä koettimia, joiden TTL vanhenee joka kierroksella yhden reitittimen kauemmas. Reitittimen, joka hylkää vanhentuneen koettimen, pitäisi palauttaa ICMP Time Exceeded -viesti, joka nimeää itsensä, ja työkalu tulostaa sen nimen. Se, mitä työkalu todella odottaa, on että viesti saapuu aikakatkaisun sisällä. Jos reititin vastaa toisesta lähdeosoitteesta, rajoittaa virheiden tuottamisen tiheyttä tai pudottaa koettimen sanaakaan sanomatta, kierros ei tuota mitään tulostettavaa.
Mikään näistä tuloksista ei sano, että menosuunnan polku on rikki. Tähti on raportti vastaamattomasta postista, ei tyhjästä tiestä.
Koetinmenetelmä ratkaisee, mihin suodattimeen törmäät
Linuxin oletusmenetelmä on yleensä korkean numeron UDP-kohdeportti, Windowsin tracert lähettää ICMP-kaikuja, ja Linuxille voidaan käskeä käyttää sen sijaan ICMP:tä tai TCP:tä. Jokainen niistä näyttää tilallisen palomuurin tai pilven suojausryhmän silmissä erilaiselta liikenteeltä. UDP-jäljen vertaaminen toiselta puolelta ICMP-jälkeen toiselta puolelta vertaa kahta eri koetta. Kiinnitä menetelmä, osoiteperhe, lähdeosoite ja aikakatkaisu ennen kuin kutsut tuloksia eroksi.
Reilua vertailua varten aja jälki isänniltä, jotka todella kuljettavat liikennettä, älä yhdyskäytävältä, joka välittää niiden puolesta. Reitittimen tuottama jälki käyttää reitittimen omaa lähdeosoitetta ja lähtöpolitiikkaa, jotka voivat olla tiukempia kuin mikään, mitä asiakas näkee. Kirjaa tarkka komento, jotta seuraava henkilö voi toistaa sen.
Aikakatkaisun arvo on kokeen toinen puoli, ja se on helppo jättää muistiinpanoista pois. Kahden sekunnin odotus ruuhkaisella polulla raportoi tähtiä siellä, missä viiden sekunnin odotus raportoi hyppyjä. Pidä arvo samana kaikissa ajoissa, jotta vertailu pysyy verkosta kertovana.
Paluupolku on oma reittinsä
ICMP-virhe on tavallinen paketti, jolla on oma lähde ja kohde, ja se tarvitsee reitin takaisin jäljittäjälle. Jos tunnelipolitiikka kuljettaa LAN-etuliitteet mutta ei virheen tuottaneen reitittimen osoitetta, viesti lähtee polulle, joka ei voi tavoittaa sinua. Vastausten suodatus voi pudottaa sen, vaikka reitti olisi olemassa, koska paketti saapuu odottamattomasta osoitteesta odottamattomaan rajapintaan. Se on epäjohdonmukaisuus diagnostiikkatasossa, ei sovellusvirhe.
Jokaisen valitsimen levittäminen, kunnes jälki täydentyy, tekee kuvasta kauniimman ja politiikasta huonomman. Korjaa tietty diagnostiikkaosoite tai hyväksy tähti ja testaa sovellusta toisella tavalla.
Vahvista tunneli todellisella pyynnöllä
TCP-kättely palvelun omassa portissa harjoittaa edelleenlähetystä, paluureititystä ja suodatusta siinä suunnassa, jolla on merkitystä. Alla olevat komennot ajetaan molemmissa päissä, ja ne vertaavat, mitä kumpikin puoli voi avata. Korvaa palvelun portti ja tunnelin rajapinnan nimi omalla kokoonpanollasi.
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
Lue ensin kaksi traceroute-ajoa: jos ICMP-ajo näyttää hyppyjä eikä TCP-ajo näytä, ero on menetelmässä, ei polussa. Ota sitten curl-tulos sovellustason vastauksena, koska järkevällä tilakoodilla täydentynyt vaihto tarkoittaa, että meno- ja paluupolut toimivat todelliselle liikenteelle. Socket-luettelo näyttää, onko yhteys ylipäätään muodostettu, mitä mikään jälki ei voi kertoa sinulle.
Tunneli, joka kuljettaa interaktiivista istuntoa molempiin suuntiin samalla kun yksi traceroute tulostaa tähtiä, on terve ja vain epävalokuvauksellinen. Säilytä kummankin puolen komentotuloste tallenteena ja kohtele puuttuvia hyppyjä avoimena kysymyksenä diagnostiikasta, älä VPN:ää koskevana tuomiona.