Jistě jste se již setkali se situací, kdy se internet v počítači náhle přerušil, takové chování lze pozorovat při používání modemů ADSL, dálkové Wifi, GSM a dalších podobných nespolehlivých technologií. Pomocí nástroje ping můžete rychle zjistit, zda je v počítači internet.
Rozsah jejího použití je však mnohem širší, používají ji správci sítí ke kontrole dostupnosti vzdáleného uzlu v síti, používá se v různých skriptech a na mnoha dalších místech. V tomto článku se budeme zabývat příkazem ping v Linuxu, povíme si, jak tuto utilitu používat, jak funguje, podíváme se na její možnosti a funkce.
Nástroj ping je jednoduchý nástroj pro řešení síťových problémů. Umožňuje zkontrolovat, zda je vzdálený hostitel dostupný, či nikoli, a to je vše. Za tímto účelem nástroj zkontroluje, zda hostitel může odpovídat na síťové požadavky pomocí protokolu ICMP. Doufám, že vám nemusím říkat, že všechna data po síti jsou přenášena jako malé pakety. Program vyšle malý paket dat ICMP a očekává, že obdrží zpět paket s odpovědí, a pokud se tak stane, je vzdálený hostitel považován za dosažitelného. ICMP neboli Internet Control Message Protocol je doplněk protokolu IP, který se používá k přenosu servisních a chybových zpráv.
Protokol ICMP může přenášet pouze dva typy paketů - zprávy o chybách a zprávy o požadavcích. Zprávy o požadavcích se zase dělí na:
Zprávu s požadavkem na ozvěnu;
zprávu s odpovědí Echo.
Dále pochopíme, co dělá příkaz ping
. Jakmile odešlete požadavek ping
na vzdáleného hostitele, nástroj nastaví pro každý paket jedinečný identifikátor a také TTL a čas odeslání paketu. Pokud je hostitel dosažitelný, odešle odpověď; na základě času odeslání může nástroj vypočítat dobu zpáteční cesty paketu. Poté je odeslán další paket. Na závěr se vypočítá celkový počet odeslaných a přijatých paketů, procento ztrátovosti a další údaje.
Nyní nám zbývá trocha praxe. Než se však pustíme do praxe, podívejme se na syntaxi příkazu a jeho možnosti. Syntaxe je poměrně jednoduchá:
$ ping [options] host_address
Formát příkazu ping
je velmi jednoduchý. Jako adresu hostitele můžete předat buď adresu ip, nebo název domény. Volby nastavují chování nástroje. Uveďme si ty hlavní:
-4
- použít pouze ipv4 (výchozí);
-6
- použít pouze ipv6;
-A
- adaptivní režim, doba mezi odesláním paketu je přizpůsobena době odeslání a přijetí paketu, ne však méně než 200 milisekund;
-b
- povolí ping
vysílací adresy;
-c
- počet odesílaných paketů;
-D
- výstupní čas jako časová značka UNIX
;
-f
- flood mode, v tomto režimu jsou pakety vysílány bez zpoždění, lze jej využít pro DoS útoky na jednotlivé uzly. Počet bodů, které utilita vypíše, udává počet ztracených paketů;
-i
- interval mezi odesíláním paketů v sekundách;
-I
- použití tohoto síťového rozhraní k odesílání paketů;
-l
- režim přetížení, odesílá se velmi mnoho paketů a systém nesleduje pakety s odpovědí;
-n
- nezískávat domény pro ip adresy;
-r
- ignoruje směrovací tabulky a odesílá pakety na zadané rozhraní;
-s
- velikost jednoho paketu;
-t
- ruční nastavení TTL;
-v
- podrobnější výstup.
Nyní, když jsme se seznámili se základními parametry příkazu ping
a jeho syntaxí, je čas na praxi, příště si povíme, jak v Linuxu pingnout konkrétního hostitele.
Pro kontrolu výkonu sítě se často používá ping
na nějakou stránku, která je vždy dostupná, například google.com
nebo ještě jednodušší a kratší ya.ru.
Tuto adresu stačí předat utilitě v parametrech, ta si sama najde ip a provede vše potřebné:
$ ping ya.ru
Každý paket obdržel jedinečný identifikátor icmp_seq
, počet uzlů k cílovému uzlu ttl a čas strávený doručením paketu čas
. Chcete-li ping
zastavit, stiskněte klávesovou zkratku Ctrl+C. Na závěr nástroj zobrazí obecné statistiky:
přenesené pakety
- odeslané pakety;
přijaté
- přijaté pakety;
ztráta paketů
- procento ztracených paketů;
čas
- celková pracovní doba;
rtt min/avg/max/mdev
- minimální čas/průměrnýčas/maximální
čas/kvadratická odchylka.
Pokud není příkaz ping
zastaven, mohou být pakety odesílány velmi dlouho, to vytváří další zátěž serveru, a proto není žádoucí. Počet paketů odesílaných ihned ve volání příkazu můžete omezit pomocí parametru -c
:
$ ping -c 3 ya.ru
Stejně jako u příkazu ping
pro doménu můžete zadat přímo ip adresu. Tímto způsobem lze zkontrolovat, zda je síť při chybné konfiguraci serverů DNS. Příklad: V případě, že se jedná o server DNS, je možné použít následující příkaz:
$ ping -c 3 8.8.8.8
Dalším typem odesílání zpráv ping
, je ping
flood. Pomocí takových paketů můžete provádět testování zátěže kanálu nebo dokonce vypnout internetové připojení na jednom ze strojů. Tyto funkce lze však používat pouze s právy superuživatele. Chcete-li zorganizovat ping flood, zadejte parametr -f
:
$ ping -f losst.ru
Ve výchozím nastavení je v normálním režimu každý další paket odeslán, jakmile je přijata odpověď na předchozí paket. Interval mezi odesíláním paketů však můžete nastavit -i
:
$ ping -i 0.2 losst.ru
Zde program ping
provádí tzv. konfigurovatelný flood, určíte, s jakou intenzitou chcete pakety posílat. Pomocí parametru -D
můžete u každé zprávy zobrazit časové razítko Unix Timestamp:
$ ping -D losst.ru
Podívali jsme se, co je příkaz ping
v Linuxu, jak se používají jeho základní parametry a způsoby použití. Tento velmi jednoduchý nástroj lze použít k testování problémů v síti a jejich odstraňování. V tomto ohledu se nástroj může stát nepostradatelným.