IPTraf – sledování sítě v reálném čase

http://www.abclinuxu.cz/clanky/recenze/iptraf-sledovani-site-v-realnem-case

IPTraf – sledování sítě v reálném čase

18. 5. 2005 | Matouš Jan Fialka | Recenze | 24580×

Program pro sledování, zaznamenávání a analýzu síťového provozu. Vyznačuje se přehledným textovým uživatelským rozhraním a snadným ovládáním. V článku najdete podrobný popis ovládání.

Čas od času se v diskuzích objevují dotazy ohledně programů na sledování sítě. Způsobů, jak získat přehled o tom, co se děje se sítí, je jistě mnoho. Ale když jsem pátral po nějakém programu určeném čistě pro prostředí textového režimu konzole, který by nadto měl přívětivé uživatelské rozhraní, mnoho jsem jich věru nenalezl. Jedním z těch, které neušly mé pozornosti, je skvělý program IPTraf.

IPTraf je konzolový program se schopností vytvářet statistické přehledy, které umí i logovat, a který podporuje všechny důležité protokoly. Pro zřejmost uvádím na prvním místě malý přehled protokolů podporovaných tímto programem.

  • IP – Internet Protocol [RFC 791]
  • TCP – Transmission Control Protocol [RFC 793, 1146, 1323, 1693]
  • UDP – User Datagram Protocol [RFC 768]
  • ICMP – Internet Control Message Protocol [RFC 792, 950, IANA parametry]
  • IGMP – Internet Group Management Protocol [IEFT RFC 1112 1989-8, RFC 2236]
  • IGP/IGRP – Interior Gateway Protocols/ Interior Gateway Routing Protocol [CISCO]
  • ARP/RARP – Address Resolution Protocol/ Reverse Address Resolution Protocol [RFC 826, 2390, 1390]
  • OSPF – Open Shortest Path First [RFC 2328]

Zajímavostí programu IPTraf je, že jej mnoho lidí třeba i používá, ale mnohdy nevyužívají v plné míře všechny jeho vlastnosti. Než si ale povíme něco o programu samotném, podívejme se, jak se to má s jeho kompilací ze zdrojových kódů.

Stažení a překlad

K úspěšnému překladu programu IPTraf ze zdrojových kódů stačí mít v zásadě kteroukoli funkční distribuci GNU/Linuxu a knihovnu NCurses.

Zdrojové kódy si stáhneme a někam rozbalíme a provedeme překlad třeba nějak takto:

./configure  make su make install

Pro úplnou představu o malém množství závislostí programu IPTraf uvedu také výpis knihoven (pomocí ldd `which iptraf`), s nimiž je při kompilaci slinkován.

libpanel.so.5 => /usr/lib/libpanel.so.5 (0x40026000) libncurses.so.5 => /lib/libncurses.so.5 (0x4002a000) libc.so.6 => /lib/libc.so.6 (0x40069000) libgpm.so.1 => /lib/libgpm.so.1 (0x40198000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

Jste-li majitelem distribuce Debian GNU/Linux, vězte, že k úspěšné instalaci by mělo stačit základní „zaklínadlo“ apt-get install iptraf.

Program je také alternativně ke stažení v binární podobě pro architekturu i368 a vyšší zde: iptraf-2.7.0.bin.i386.tar.gz.

Popis uživatelského rozhraní

Textové uživatelské rozhraní (TUI, „Text User Interface“) programu IPTraf je především díky šikovnému použití knihovny NCurses velice příjemné a veškeré funkce programu jsou snadno přístupné prostřednictvím logicky uspořádané nabídky, která se zobrazí hned po spuštění.

iptraf

Stavový řádek na dolním okraji obrazovky obsahuje vždy výpis klávesových zkratek, které lze v jednotlivých „módech“ (režimech) programu IPTraf používat, popř. i další informace. K ovládání programu tedy nepotřebujeme číst žádný manuál – vše je velice intuitivní a neproblémové.

Nyní si společně projdeme většinu důležitých funkcí programu IPTraf v pořadí, v jakém jsou zobrazeny v základní nabídce. Některé věci pravděpodobně ponecháme stranou, neboť jsou víceméně sebevysvětlující. Jiné naopak probereme zevrubněji.

Monitor IP provozu

Položka „Monitor IP provozu“ („IP traffic monitor“) souvisí přímo s názvem programu, a proto je také v hlavní nabídce programu IPTraf na prvním místě. Po jejím zvolení si můžeme vybrat, které z různých síťových rozhraní chceme sledovat. Lze si vybrat mezi sledováním všech rozhraní, rozhraním lo (lokální „loopback“) a dále mezi všemi aktivními síťovými rozhraními (např. eth0, eth1 a podobně). IPTraf detekuje a umožňuje sledovat následující rozhraní:

  • lokální loopback rozhraní
  • všechna jádrem podporovaná ethernetová rozhraní
  • všechna FDDI [CISCO] rozhraní podporovaná jádrem
  • SLIP [RFC 1055]
  • asynchronní PPP [RFC 1548, 1661, 1662]
  • synchronní PPP přes ISDN (Integrated Services Digital Network)
  • ISDN s „Raw IP“ enkapsulací (zapouzdřením)
  • ISDN s Cisco HDLC enkapsulací [CISCO]
  • IP pro paralelní linky

Program si bohužel zřejmě neporadí se sledováním síťových pseudo-rozhraní typu TUN/TAP.

Po zvolení rozhraní zobrazí IPTraf modrou obrazovku (máme-li barevný terminál, např. barevný xterm), v níž vidíme rozličné informace o realizovaných spojeních.

iptraf

Obrazovka je nadto rozdělena na dvě horizontální okna. Horní slouží k výpisu detekovaných TCP spojení. Dolní okno zobrazuje informace o ostatních spojeních. Mezi oběma okny lze volně přepínat pomocí klávesy W či Tab. Zpět do hlavní nabídky programu se dostaneme klávesou X (platí i pro ostatní režimy).

Horní okno

První sloupec je tvořen výpisy spojení, přičemž každé spojení zabírá dva řádky – jeden pro zdrojovou adresu spojení, druhý pro cílovou. U každého z obou je taktéž uveden příslušný port. Řádky, které k sobě náleží, jsou nalevo (v „nultém“ sloupci) vizuálně propojeny zelenou „svorkou“.

Druhý a třetí sloupec lze ovlivnit pomocí stisku klávesy M, což nám umožní přepínat mezi počty „paketů/bytů“ a mezi velikostmi „paketů/oken“.

V sloupci čtvrtém nalezneme stavové vlajky (příznaky) protokolu TCP. IPTraf rozlišuje následující příznaky, popř. i jejich kombinace (např. "-PA-"):

  • S – SYN (synchronizace v rámci přípravy navázání nového spojení)
  • A – ACK (potvrzení dat)
  • P – PSH (požadavek na zařazení dat na vrchol fronty, doručení dat aplikaci)
  • U – URG (urgentní data)
  • RESET – RST (indikuje reset celého spojení) v daném směru směru
  • DONE – FIN (uzavření spojení) v daném směru, bez potvrzení druhou stranou
  • CLOSED – FIN, přijato druhou stranou, konec spojení
  • příznak nenastaven

A konečně ve sloupci pátém vidíme monitorované síťové rozhraní, k němuž příslušné spojení náleží.

Ve výpisech se pohybujeme klávesami Page-Up a Page-Down po celých obrazovkách anebo Up a Down po jednotlivých položkách.

Aby byl popis horního okna „monitoru IP provozu“ kompletní, je zapotřebí zmínit ještě možnost výpis setřídit. Po stisku klávesy S se zobrazí malá nabídka, která nám umožní výběr třídění podle druhého či třetího sloupce.

Dolní okno

Jak již bylo zmíněno výše, v dolním okně „monitoru IP provozu“ jsou zobrazeny informace o všech ostatních typech bloků dat, které nám tečou přes daná síťová rozhraní.

Jmenovitě zde nalezneme bloky dat UDP (červeně na bílém pozadí), ICMP (žlutě na modrém), OSPF (černě na modrozeleném), IGRP (jasně bíle na modrozeleném), IGP (červeně na modrozeleném), IGMP (jasně zeleně na modrém), GRE (modře na bílém), ARP (jasně bíle na červeném) a RARP (jasně bíle na modrém pozadí). Taktéž neidentifikovatelné pakety jsou zobrazovány v tomto okně (žlutě s červeným pozadím) a jsou označeny jako „non-IP“ pakety. Ostatní pakety jsou odlišeny žlutou barvou na červeném pozadí.

Z jednotlivých řádků výpisu zde vyčteme protokol, velikost IP datagramu (plnou velikost pro „non-IP“, ARP a RARP pakety), zdrojovou a cílovou adresu a rozhraní, na němž byl datový blok detekován. U některých vybraných protokolů (např. ICMP a OSFP) je zobrazeno množství dalších rozšiřujících informací (viz více v dokumentaci k programu).

Poznámka: Dovoluji si čtenáře upozornit, že ne vždy se mi asi podařilo důsledně rozlišit mezi termíny „paket“ a „datagram„.

Pohyb v tomto okně se realizuje shodně s oknem horním s jediným rozdílem: je možnost navíc využít kláves Left a Right pro pohyb výpisu doprava a doleva.

Obecné statistiky o rozhraních

„Obecné statistiky o rozhraních“ („General interface statistics“) je dalším z možných režimů programu IPTraf. Po zvolení dostaneme obrazovku s informacemi o počtu bloků dat přenesených přes naše síťová rozhraní.

iptraf

V prvním sloupci vidíme názvy síťových rozhraní, ve druhém celkový počet prošlých paketů, ve třetím počet IP datagramů, ve čtvrtém počet „Non-IP“ bloků dat, v pátém počet „Bad-IP“ datagramů (vadných IP datagramů s nesouhlasícím kontrolním součtem) a konečně v posledním, šestém, sloupci vidíme aktivitu neboli „tempo“ toku na každém z rozhraní.

Poslední sloupec je také závislý na nastavení filtrů, k němuž se ještě dostaneme až se budeme věnovat nastavení programu IPTraf. Je-li zapnuto logování, kopie statistik je periodicky zapisována do souboru /var/log/iptraf/rozhraní_stats_general.log.

Detailní statistika rozhraní

„Detailní statistika rozhraní“ („Detailed interface statistic“) patří k mým oblíbeným režimům utility IPTraf. Poskytuje přehlednou statistiku o vybraném rozhraní, z níž se lze dobrat mnoha užitečných informací (uspořádaných pěkně do tabulky).

iptraf

V přehledném výpise vidíme (zleva po sloupcích) úplné počty přenesených paketů a bytů, počty příchozích paketů a bytů, počty odchozích paketů a bytů pro všechny protokoly (shora po řádcích), pro protokoly IP, TCP, UDP a ICMP samostatně, pro ostatní protokoly a pro „Non-IP“.

Pod tabulkou nalezneme souhrnné (příchozí či odchozí) hodnoty průtoků v jednotkách podle nastavení „módu aktivity“ (viz sekce o nastavení programu dále), počet chyb kontrolních součtů a další.

Statistické rozbory

Zvolením položky „Statistické rozbory“ („Statistical breakdowns“) se nám otevře podnabídka, kde si vybereme ze dvou možností: „Dle velikosti paketů“ („By packet size“) a „Dle TCP/UDP portu“ („By TCP/UDP port“).

Rozbor dle velikosti paketů

iptraf

Po vybrání rozhraní se nám objeví tabulka, v níž se zobrazuje distribuce paketů dle jejich velikostí. Snadno tedy zjistíme, kolik paketů o velikosti v rozmezí např. 1051 až 1125 bytů prochází přes rozhraní, které nás zajímá.

Rozbor dle TCP/UDP portů

iptraf

Pro vybrané rozhraní snadno vyčteme, kolik paketů a bytů přišlo z/na určitý port paketem TCP či datagramem UDP. Myslím, že to netřeba ani nijak zvlášť vysvětlovat. Ze screenshotu by mělo být vše hned jasné.

Monitor LAN stanice

„Monitor LAN stanice“ („LAN station monitor“) je posledním režimem, který máme na výběr. Podobně jako u „monitoru IP provozu“ lze zvolit, zda chceme sledovat všechna síťová rozhraní anebo jen jedno jediné.

iptraf

Informace k nám proudí po zdvojených řádcích, z nichž první specifikuje typ stanice (Ethernet, PLIP, Token Ring [CISCO] či FDDI). Druhý řádek je nutno číst po sloupcích (zleva doprava) takto: celkový počet příchozích paketů, celkový počet IP datagramů a bytů, to samé pro odchozí provoz a samosebou „tempo“, kterým pakety proudí.

Velice užitečná je opět možnost výpis setřídit podle různých kritérií. Opět tak učiníme stiskem klávesy S a opět se nám dostane na výběr z několika možností (viz screenshot).

Filtry a jejich nastavení

Filtry jsou nespornou předností programu IPTraf a poskytují nám mnoho možností navíc. Filtry se aplikují na bloky dat dle jejich protokolu – konkrétně: TCP, UDP, ARP a RARP, v rámci „Non-IP“ nebo v rámci „ostatních IP“ datagramů.

Pro každý protokolární filtr nám IPTraf zobrazuje jeho stav a dovoluje nám pro některé protokoly (TCP, UDP a „ostatní IP“) definovat a pojmenovávat, aplikovat, odebírat a mazat vlastní filtry, které se pak účastní výpisů v jednotlivých režimech programu IPTraf. Zajímavé je, že lze definovat více filtrů se stejným jménem.

V definovatelných filtrech lze nastavit hodnoty hostname či IP adres obou konců vybraného spojení, masky, porty a též zda mají takto filtrovaná data být zahrnuta do výpisů („include“) či naopak nemají („exclude“).

Ostatní filtry (ARP, RARP a „Non-IP“) lze pouze zapnout či vypnout.

Obecně filtrovací schopnost programu IPTraf považuji za vynikající prostředek k rychlému zjišťování některých druhů informací. V žádném případě s nimi však nevystačíme v případě, že potřebujeme nějakou hlubší či komplexní analýzu sítě. Spíše než cokoli jiného poslouží docela dobře k orientačnímu a zběžnému náhledu určité situace, která nás zajímá.

Nastavení programu

V nastavení programu lze ovlivnit chování některých funkcí i jeho vzhled.

iptraf

Jak vidno ze screenshotu, pohrát si je možno s následující položkami:

  • Vyhledávat reverzní DNS záznam (ano/ne, způsobí, že se vyhledají jména hostů k příslušným adresám v IP datagramech, toto nastavení zpomaluje).
  • Vypisovat jména služeb pro TCP/UDP (ano/ne, taktéž způsobuje zpomalení, zvyšuje se také množství paketů, které nám „utečou“).
  • Použit promiskuitní mód (ano/ne, LAN rozhraní bude chytat všechny pakety v síti, i když nesouvisí přímo s naší stanicí).
  • Barvy (ano/ne, přepíná mezi černobílým a barevným podáním uživatelského rozhraní).
  • Logování (ano/ne, logování probíhá do adresáře /var/log/iptraf).
  • Režim aktivity (zmíněno výše, určuje zda použít jednotky kb/vteřinu či kB/vteřinu).
  • Zobrazování zdrojových MAC adres v „monitoru provozu“.
  • Nastavení časovačů (nastavení TCP time-outů, intervalů logování, překreslování atd.).
  • Dodatkové porty (definice rozmezí portů vyšších než 1023 pro sledování).
  • Smazání nadefinovaných rozmezí portů (viz. „Dodatkové porty“ výše).
  • Popisky ethernetových/PLIP hostů (možnost nadefinovat vlastní popisky, zadává se MAC adresa).
  • Popisky FDDI/Token Ring hostů (zadává se MAC adresa).

Většina položek snad nepotřebuje další vysvětlení, takže se zevrubněji zmíním jen o jediné – o položce „Logování“. Zapnutím této položky se poněkud pozmění chod většiny z režimů programu IPTraf. Program se nás vždy nejdříve zeptá na jméno souboru (tj. nabídne nám k editaci výchozí soubor) k logování. V této chvíli máme stále ještě možnost logování pro dané monitorovací sezení zrušit. Nechceme-li, dialog se jménem souboru jednoduše „odkopneme“ pomocí stisku Ctrl-X a logování tím pro daný monitoring zrušíme.

Pokud ale logování přeci jenom zapneme, do logů se zapisují informace o spuštění „monitoru provozu“, pakety s příznaky SYN, FIN a ACK, resety spojení a vše ze spodního okna „monitoru provozu“. U ostatních módů jsou logované informace vždy podobné výstupu na obrazovku. Máte-li jen málo volného místa na disku, upozorňuji, že některé z logů mohou narůstat opravdu promptně.

Příkazový řádek programu

Možnosti příkazového řádku programu IPTraf nejsou nikterak rozsáhlé, zato kupříkladu dovolují spustit TUI programu rovnou v režimu, jenž hodláme použít. Nadto lze IPTraf spustit na pozadí a nechat jej pouze logovat. Po případné havárii systému nebo jiné katastrofě lze také vymazat při spuštění IPTrafu jeho zámky a čítače a netřeba je hledat „bůhvíkde“. Ovládání z příkazového řádku není nikterak složité, a proto jednotlivé přepínače uvádím bez dalších komentářů jen velmi stručně.

  • -i rozhraní umožňuje specifikovat síťové rozhraní („all“ pro všechna rozhraní)
  • -g spustí program v režimu „obecné statistiky o rozhraní“
  • -d rozhraní spustí „detailní statistiku rozhraní“ rozhraní
  • -s rozhraní spustí „rozbor dle TCP a UDP portů“ pro rozhraní rozhraní
  • -z rozhraní spustí „rozbor dle velikosti paketů“ pro rozhraní rozhraní
  • -l rozhraní spustí „monitor LAN stanice“ pro rozhraní rozhraní („all“ pro všechna rozhraní)
  • -B spustí program na pozadí
  • -t čas v součinnosti s některým z výše uvedených přepínačů nastaví dobu běhu programu
  • -L soubor umožňuje v součinnosti s přepínačem -B nastavit cestu a jméno souboru pro logování, není-li cesta specifikována, použije se výchozí /var/log/iptraf
  • -f vyčistí všechny zámky a čítače programu

Ukázka využití programu z příkazového řádku

Práci s programem IPTraf v prostředí příkazového řádku si nyní ukážeme na jednoduchém příkladu. Chceme například získat detailní statistiky o rozhraní eth0 a program chceme spustit na pozadí po dobu jedné minuty tak, aby nám získaná data logoval do souboru v aktuálním adresáři s názvem detailed-eth0.log. Učiníme to následující příkazem:

sh-2.05b$ iptraf -d eth0 -B -t 1 -L ./detailed-eth0.log  sh-2.05b$ ps -A | grep iptraf 1439 ?        00:00:00 iptraf

Vidíme, že program běží – počkáme si tedy specifikovanou jednu minutu (anebo nemusíme) a vypíšeme si získaný záznam.

sh-2.05b$ cat ./detailed-eth0.log

Dokáži si představit, že ze získaného záznamu by ti kreativnější z nás dokázali pomocí dalších nástrojů generovat nejrůznější grafy a podobně.

Závěrem

IPTraf je i přes svou poměrnou jednoduchost programem užitečným. S jeho pomocí lze získat nejen statistické údaje, ale může sloužit i k některým druhům analýzy sítě. Ovládá se velice snadno, je rychlý, a vzhledem ke své funkčnosti i relativně nenáročný na zdroje. Skutečnost, že jeho vývoj zamrzl v roce 2002 nikterak nesnižuje jeho spolehlivost (zatím jsem nepozoroval ani ten nejmenší náznak problémů se stabilitou) a využitelnost. Mohu IPTraf s klidným svědomím jen doporučit.