Hlavní navigace

iftop: sledujte dění na síti

18. 7. 2012
Doba čtení: 4 minuty

Sdílet

Nástroj iftop je příbuzný klasické utilitě top. Ta dokáže sledovat procesy ve vašem systému, ale iftop se dívá, co cvrliká na síťových rozhraních. Můžete tak jednoduše odhalit, kdo vám loupe perníček či který zlobivý uživatel vám tak moc vytěžuje linku. Pokud chcete mít přehled, je to rozhodně povinný nástroj.

Pokud spravujete nějakou síť či server, určitě se vám někdy stalo, že jste potřebovali rychle zjistit, co se zrovna děje. Typicky třeba zjistíte, že vám DNS démon na vašem serveru nějak podezřele vytěžuje procesor. V tu chvíli se potřebujete podívat, kdo vám buší na vrata a zneužívá váš DNS server pomocí amplification attacku.

Právě k tomu slouží utilita iftop, která si bere příklad z klasického unixového příkazu top či spíše vylepšeného Htop. Namísto sledování procesů a sledování vytížení procesoru ale umožňuje sledovat zatížení síťových rozhraní a monitorování spojení, která právě z vašeho počítače probíhají.

Základní použití

Úplně nejjednodušší bude prostě iftop spustit. Pokud mu chcete říct, na kterém rozhraní má poslouchat, můžete použít parametr -i. Pro spuštění budete každopádně potřebovat práva roota:

# iftop -i eth1

Program začne postupně vypisovat všechna spojení, která jsou na daném rozhraní otevřená, a zároveň vám ukáže, jak tato spojení vytěžují vaši linku. Celý seznam je standardně setříděn právě podle náročnosti spojení, takže ta nejvytíženější budete mít nahoře na očích. Na následujícím obrázku vidíte, jak může iftop vypadat, pro demonstraci jsem spustil v prohlížeči speedtest.

Seznam obsahuje vlevo lokální adresu a uprostřed vzdálenou. Šipka ukazuje, zda jde o odchozí provoz (doprava) nebo o příchozí (doleva). Vpravo jsou pak k vidění toky za poslední 2, 10 a 40 sekund. Všechny hodnoty jsou uvedeny v bitech, pokud chcete raději vidět bajty, použijte přepínač  -B.

Aby byly toky lépe vidět graficky, zobrazuje program i „teploměry“ s aktuální zátěží. Ty se vybarvují standardně bílým pozadím pod jednotlivými řádky. Úplně nahoře v okně je vidět aktuální měřítko těchto grafů, které se průběžně mění. Pokud chcete nastavit jeho pevné maximum, použijte parametr -m například s hodnotou 10M. Nezapomeňte, že standardně je tato hodnota v bitech, pokud jste před chvíli neurčili jinak. Pokud chcete „grafiku“ úplně vypnout, použijte parametr  -b.

Ve spodní části obrazovky jsou pod čarou ještě vidět sečtené hodnoty pro celé rozhraní. Vpravo opět vidíte, kolik se přeneslo za tři zmíněná období a vlevo jsou pak celkové objemy přijatých a odeslaných dat. Možná vás na první pohled množství čísel na obrazovce zmate, ale po chvíli koukání vám bude vše jasné.

Technická poznámka: iftop do verze 1.0 neuměl monitorovat IPv6 provoz. Zkontrolujte si, zda máte dostatečně aktuální verzi, jinak nemusí být jeho výstupy kompletní.

Pokročilejší akce

Je sice fajn vidět úplně všechny informace najednou, ale nás obvykle zajímá jen konkrétní část provozu. Nástroj iftop umí filtrovat spojení podle sítě, hosta a portu, takže si můžete vybrat, co přesně chcete vidět.

Program přijímá filtry ve formátu pcap, tedy jako například tcpdump. Zapisují se za parametr -f. Jedná se o poměrně logický filtrační jazyk, který se skládá z několika základních klíčových slov. Je ovšem velmi mocný a je možné s ním zadat jednoduché i komplexní filtry.

Pokusím se zjednodušeně vysvětlit základní principy. Filtrační pravidlo obvykle začíná klíčovým slovem dst či src. Určujeme tím, zda nás zajímá cíl či zdroj provozu. Následuje informace o tom, která vlastnost provozu nás bude zajímat: host, net, port či portrange. Tedy v pořadí: IP adresa či doménové jméno, maska, port nebo rozsah portů. Možností je daleko více, ale tohle nám pro základní orientaci v problematice stačí.

Teď si můžeme vyfiltrovat jen spojení na konkrétní stroj. Pravděpodobně nás budou zajímat i porty, takže si přidáme parametr  -P.

# iftop -P -i eth1 -f "dst host time.is"

Stejně tak můžeme chtít provoz podle portu. Podíváme se třeba, kam se připojuje můj Jabber klient:

# iftop -P -i eth1 -f "dst port 5222"

Jak vidíte, moc velký provoz mi Jabber negeneruje. Program umí filtrovat i pomocí regulárních výrazů, stačí za běhu stisknout klávesu l a v horní části se objeví příkazová řádka, do které je možné výraz zapsat. Rozdíl proti pcap filtrům je ten, že program stále přijímá všechen provoz, ale zobrazuje jen ten vyfiltrovaný. Počítadla toků tak nejsou filtrem ovlivněna, vy můžete nastavení postupně měnit a čísla jsou stále správná.

Program je možné během zobrazení šikovně ovládat pomocí některých kláves. Užitečné je třeba přepínání zobrazení hostname/IP adresy pomocí malého n či přepínání názvu služby a jejího portu pomocí velkého  N.

Dále je velmi užitečné znát klávesu o, která zmrazí právě zobrazené pořadí procesů. Nezastaví se ovšem počítadla, takže pokud právě vidíte to, co potřebujete, stisknete tuto klávesu a pak už jen sledujete, jak se mění parametry zobrazených spojení. Pokud chcete úplně zamrazit displej, použijte velké  P.

Program iftop využívá i některé další klávesy, které umožňují například změnit zobrazení některých položek, změnit třídění seznamů, skrývat některé položky a podobně. K zobrazení těchto možností stiskněte h nebo  ?.

ict ve školství 24

Veškeré parametry je možné zapsat do konfiguračního souboru ~/.iftoprc, takže si můžete uložit své oblíbené nastavení, konfiguraci síťové karty, přepnout si program na zobrazování bajtů místo bitů nebo si nastavit pevné osy a logaritmické zobrazení.

Utilita iftop je poměrně malá a nenáročná a podle obvyklých pravidel dělá jednu věc a dělá ji pořádně. Nainstalovat ji můžete prakticky na libovolný unixový operační systém. Hodí se zejména na serveru, ale ani na desktopu není občas špatné vědět, co vám kde lítá.

Autor článku

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Studoval počítače a média, takže je rozpolcen mezi dva obory. Snaží se dělat obojí, jak nejlépe umí.