Pakettien haaroittimen perustiedot verkon vianmäärityksessä

Pakettikaappausten suorittaminen haarukan avulla voi olla erittäin tehokas tapa diagnosoida monimutkaisia ongelmia. Kun kaikki muu epäonnistuu, on usein hyödyllistä tarkastella langan yli lähetettäviä raakatietoja. Paketit eivät valehtele, ja sovellusliikenteen analysointi matalalla tasolla voi paljastaa ongelman syvemmät oireet (tai paljastaa ongelman, jonka et edes tiennyt olevan olemassa).

Tässä artikkelissa Käsittelen joitain CLI-pohjaisen tcpdump -työkalun käytön perusteita.

Nuuskijaperusteet

Joten ensin asiat ensin: Mitä tarkoitamme, kun sanomme ”pakettien nuuskija”? Pakettien nuuskija on yksinkertaisesti ohjelmisto, jonka avulla voit siepata paketteja verkkoon. Tcpdump ja Wireshark ovat esimerkkejä pakettien nuuskaajista. Tcpdump tarjoaa CLI-pakettien haarukan ja Wireshark tarjoaa monipuolisen graafisen käyttöliittymän pakettien nuuskaamiseen ja analysointiin.

Oletusarvoisesti tcpdump toimii epäselvässä tilassa. Tämä tarkoittaa yksinkertaisesti sitä, että kaikki isäntään saapuvat paketit lähetetään tarkastukseen tcpdump. Tämä asetus sisältää jopa liikenteen, jota ei ole tarkoitettu tietylle isännälle, jota olet kaappaamassa, kuten lähetys- ja monilähetysliikenne. tcpdump ei tietenkään ole mikään maaginen ohjelmisto: Se voi kaapata vain ne paketit, jotka tavoittavat jotenkin jonkin koneesi fyysisestä rajapinnasta.

Asentaminen tcpdump on yksinkertainen. Se on saatavana Red Hat -järjestelmän vakiopakettivarastoissa, ja voit asentaa sen nimellä:

Yleiset pakettien haistamisskenaariot

Kaikkien koneellesi tulevan liikenteen sieppaaminen voi kuulostaa käsitteellisesti siistiltä, mutta se kuulostaa myös melko alhaiselta monille toiminnoille, joita teemme päivittäisessä työssämme järjestelmänvalvojina. Joten milloin käytät pakettien sieppaustyökalua? Käännyin yleensä pakettien haarukan puoleen, kun olen vianetsinnässä verkkosovelluksen ongelmaa ja olen käyttänyt kaikki muut vaihtoehdot loppuun. Usein olen jo suorittanut verkon perusvianmäärityksen ja tarkistanut kaikki sovelluslokitiedostot, mutta en silti pääse ongelman loppuun. Tässä vaiheessa pakettien nuuskaimen purkaminen johtoon lähetettävän datan tarkkailemiseksi voi olla opettavaista.

Toinen hyvä pakettien nuuskaimen käyttötapa on pedagoginen. Sovelluksenvaihtoon osallistuvien pakettien katselu voi viedä paljon eteenpäin ymmärrystä taustalla olevista protokollista. Esimerkiksi voi olla korvaamatonta havaita rekursiivisen DNS-kyselyn koko pakettivirta yrittäessäsi ymmärtää, miten DNS toimii.

Peruspakettikaappausten suorittaminen

Paras tapa oppia on sukeltamalla vain sisään, joten aloitetaan joidenkin pakettikaappausten kanssa. Kokeile ensin tcpdump ilman erityisiä vaihtoehtoja. Huomaa, että sinun on oltava pääkäyttäjä pakettikaappausten suorittamiseksi (teknisesti voit suorittaa sen tavallisesta tilistä erityisominaisuuksilla, mutta yleensä on helpompaa suorittaa se juurina). Käytä Ctrl + C tai lähetä SIGTERM tcpdump -prosessin tunnukseen (PID) pysäyttääksesi sieppauksen.

Oletusarvoinen tcpdump

katso tcpdump: n oletuslähtö, kirjoita komento:

Huomaa: Sen sijaan, että paljon lähtöä lentäisi ennen kuin painat Ctrl + C, voit määrittää kuinka monta pakettia haluat nähdä -c -lipulla. Yllä oleva komento voi sen sijaan olla tcpdump -c 6, jotta saat samat tulokset (kuusi pakettia siepattu).

Tulos tcpdump voi olla aluksi hieman pelottava, mutta totut katsomaan sitä, kun olet käyttänyt tätä työkalua muutaman kerran. Jaetaan kentät vasemmalta oikealle:

Tietyn käyttöliittymän nuuskaaminen

Huomaa, että edellisen esimerkin lähdön yläosassa näkyy käyttöliittymä, joka tcpdump aloittaa sieppauksen (eth0), ja sieppauksen alaosassa on yhteenvetotilastot siepatuista paketeista.

Ensimmäinen asia, jonka luultavasti haluat tehdä käyttäessäsi tcpdump on määritettävä tietty käyttöliittymä sieppausten suorittamista varten. Oletuksena tcpdump valitsee pienimmän numeroidun käyttöliittymän, joka on ”ylös”. Monilla palvelimilla on useita käyttöliittymiä, ja sinun kannattaa kertoa selkeästi käyttöliittymästä, jota käytät sieppaamiseen. Lisäksi jotkut ”erityiset” liitäntätyypit, kuten netfilter -liitäntä, voivat kellua luettelon kärkeen. Tämä toiminta voi aiheuttaa sekaannusta, joten on parasta määrittää käyttöliittymä, josta olet kiinnostunut.

Aloitetaan katsomalla kaappaamiseen käytettävissä olevat käyttöliittymät:

Luettelolla käytössämme olevista rajapinnoista, voimme nyt määrittää kuunneltavan käyttöliittymän -i -lipulla.Huomaa, että joko käyttöliittymän nimeä tai --list-interfaces -komennon numeroa voidaan käyttää:

Yllä olevien sieppausten tarkasteleminen antaa meille perustietoa paketeistamme, jotka kulkevat meidän verkkoon. Näyttää siltä, että nämä paketit sisältävät Spanning Tree Protocol (STP) -lähdön, kenties ylävirran kytkimestä. Teknisesti nämä eivät ole paketteja, ne ovat kaksi kerrosta. Kuulet kuitenkin termit, joita käytetään vaihdettavasti keskustellessasi pakettien sieppauksista.

Lisätietojen saaminen

Edellisen esimerkin yksinkertainen vianmääritystulos voi olla hieno ilmeisten ongelmien tunnistamiseen, mutta joskus tarvitsemme lisätietoja todella monimutkaisen ongelman selvittämiseksi. Sieppauksen tarkkuuden säätäminen on tärkeää, koska sen avulla voit kaivautua syvemmälle pakettien sisältämiin todellisiin tietoihin.

tcpdump ohjataan lisäämällä yksi ja kolme -v -merkkiä komentoon:

Huomaa, että määrittelemällä sanaisuuden enimmäistason näen paljon enemmän tietoja paketin runko. Edellä on lisätietoja STP-paketin tiedoista, kuten juurisillan tunnus ja juuripolun hinta. Jos et ole perehtynyt STP: hen, älä huoli siitä. Tärkeää huomata tässä on, että lisäämällä sanatarkkuutta voimme saada lisätietoja verkkoliikenteestämme.

Pakettien tarkkojen tavujen tarkasteleminen

Sanaisuuden lisääminen on kätevää, mutta me en vieläkään näe pakettien sisällön lihaa. Jos todella haluat nähdä tarkat paketeissa olevat tavut, voit käyttää lippuja -x ja -X. Lippu -x tulostaa jokaisen paketin tiedot heksadesimaalisena, kun taas -X -lippu tulostaa tiedot myös ASCII-muodossa. Tässä on tulos, joka käyttää -x:

Ja tässä on tulos, joka käyttää -X:

Huomaa hex- ja ASCII-tiedot yllä olevista esimerkeistä. Tässä tapauksessa suoritin DNS A -tietokyselyn kohteelle . Huomaa myös, että käytin -c -lippua määritettäessä siepattavien pakettien lukumäärän, ja annoin sieppaussuodattimen port 53. Keskustelemme suodattimista seuraavassa artikkelissa.

Numeroista kiinni pitäminen

Kun työskentelet tcpdump kanssa, saatat huomata että sen oletuskäyttäytyminen on ratkaista IP-osoitteet automaattisesti täysin päteviksi verkkotunnuksiksi (FQDN). Tcpdump kääntää myös porttinumerot (kuten 22) ystävällisiksi nimiksi (kuten SSH). Vaikka tämä käyttäytyminen on mukavaa, haluamme usein nähdä numeeriset tiedot, jotta emme peitä vianetsintäämme millään tavalla. Tätä oletuskäyttäytymistä voidaan muuttaa siirtämällä joko -n IP-osoitteiden hakujen poistamiseksi käytöstä tai -nn, jotta sekä IP-osoitteiden että porttien haku voidaan poistaa käytöstä.

Tässä on tulos käytettäessä -nn:

dumpin tallentaminen

Jossain vaiheessa saatat haluta tallentaa pakettikaappauksesi myöhempää analyysia varten tai syvempää analyysia varten graafisella työkalulla, kuten Wireshark. Tämä tehtävä voidaan helposti suorittaa -w -lipulla, jonka avulla voit kirjoittaa pakettien sieppaustiedoston:

Huomaa: Voit lukea tallennetun tiedoston tcpdump -r -lipulla tai muulla sovelluksella, joka tukee pcap-tiedostomuotoa.

Kuten yllä voimme nähdä , -w -lippu tuotti kätevän pcap-tiedoston, jonka voimme ottaa mukaan.

Kääriminen

Pakettikaappausten suorittaminen on tehokas tekniikka verkon vianmääritystaitojen luettelossa, varsinkin kun olet juuttunut ongelmaan ja muu verkko näyttää OK. Ymmärtäminen tcpdump -komennon käyttäminen komentorivillä voi säästää tuntikausia turhautumista yrittäessäsi ratkaista verkkosovelluksen ongelmia, ja syntaksin käyttö on melko intuitiivista, kun olet tottunut siihen.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *