přejít na obsah přejít na navigaci

Linux E X P R E S, Síťové nástroje v Linuxu, 3. část

Síťové nástroje v Linuxu, 3. část

Bohdan Milar - dnešní díl je zaměřen na testování již nastavené sítě. Konkrétně si představíme známý nástroj ping, a to i z pohledu, jak jej možná neznáte. Dále si ukážeme traceroute a jeho grafickou nástavbu Xtraceroute.


Tento seriál je zaměřen na popis nástrojů sloužících v prostředí GNU/Linux k práci se sítěmi. Protože síťová problematika nebývá pro nové zájemce snadná k pochopení, snaží se seriál přinášet v každém díle také trochu teorie z této oblasti.

Měsíc uplynul jako voda. Internetem zatím proteklo mnoho miliard paketů a my se setkáváme u dalšího dílu seriálu o sítích a GNU nástrojích určených pro jejich konfiguraci, testování, monitorování, ale hlavně používání. A kdo by dnes sítě nepoužíval nebo používat nechtěl. No možná uživatelé nezabezpečených systémů náchylných na viry a různé typy síťových útoků.

Před tím, než můžeme síť začít používat, ji musíme nastavit. V minulých dílech jsme si proto už ukázali, jak zprovoznit připojení k síti pomocí funkčního a systémem detekovaného síťového rozhraní. Ukázali jsme si velmi zjednodušenou formou, jak sítě fungují a co jsou IP adresy.

Abychom zjistili, zda naše nastavení funguje, jak má, potřebujeme síť otestovat, a proto si dnes předvedeme:

  • jak testovat síť;
  • jak zjistit cestu paketu.

ping

Kdo by neznal legendární ping – příkaz, který odesílá cílovému počítači TCP/IP pozdrav a čeká na jeho odpověď. Standardní chování je takové, že zadáme ping a IP adresu nebo doménové jméno cílového počítače, např. ping root.cz. Program pak každou sekundu vyšle cílovému počítači jeden pozdravný paket.

Pokud dostane ping odpověď (opět ve formě paketu), zobrazí výsledek na jednom řádku výstupu. Dočteme se v ní velikost přijatého paketu, IP adresu cílového počítače, pořadové číslo paketu (icmp_seq), čas života paketu (ttl -- vysvětlíme si dále) a čas, jaký zabrala paketu cesta k cíli a zpět (většinou v milisekundách).

Až se nabažíme sledu řádků s výstupy, můžeme činnost programu přerušit kombinací kláves [Ctrl+c]. Jde o nenásilné ukončení běhu programu, který na závěr vypíše statistiku své práce. Dočteme se v ní, kolik paketů bylo odesláno, kolik přijato, jaký je podíl ztracených paketů (%) a celkový čas běhu:

64 bytes from server (192.168.0.28): icmp_seq=279 ttl=64 time=0.137 ms 64
bytes from server (192.168.0.28): icmp_seq=280 ttl=64 time=0.147 ms 64 bytes
from server (192.168.0.28): icmp_seq=281 ttl=64 time=0.136 ms 64 bytes from
server (192.168.0.28): icmp_seq=282 ttl=64 time=0.142 ms 64 bytes from
server (192.168.0.28): icmp_seq=283 ttl=64 time=0.139 ms
--- server ping statistics --- 283 packets transmitted, 283 received, 0%
packet loss, time 282113ms rtt min/avg/max/mdev = 0.125/0.142/0.226/0.009 ms

Další řádek představuje statistiku rychlosti odezvy vzdáleného počítače, tedy počet milisekund, za které odpověď paket dorazila k výchozímu počítači. Hodnoty jsou odděleny lomítkem a představují nejrychleji se navrátivší paket, průměr a nejloudavější paket. Poslední číslo představuje střední odchylku (mean deviation).

Ve výpisu můžeme někdy vidět i další údaje, jako třeba počet duplicitních paketů. Samozřejmě jinou strukturu mají vypisované řádky v případě, že dojde k chybě. Nejčastější bývá neznámý počítač (unknown host), kdy pingání vůbec nezačne, a počítač nedostupný (Destination Host Unreachable).

Z uvedeného vyplývá, že ping je výborný a jednoduchý nástroj na testování dostupnosti sítě. Otestuje samozřejmě i správné nastavení IP adresy, adresního rozsahu a routování. Mohlo by se zdát, že v základní podobě nám zjistí maximálně to, zda je síť funkční, nebo ne. U bezdrátových sítí ale pomůže změřit kvalitu linky podílem ztracených paketů.

Přítomnost duplicitních paketů může také leccos napovědět. Z výstupu můžeme dále zjistit IP adresu cílového počítače i v případě, že jsme zadali jeho doménové jméno. V případě, že je doménové jméno jen přezdívkou pro jiný počítač, ukáže se pravé jméno na jednotlivých řádcích před IP adresou. Takto lze ping použít pro zjišťování některých DNS informací.

Z jednodušších přepínačů zmiňme -n, který způsobí, že se všechny odkazy na počítače ve výpisu zobrazí ve formě IP adresy (tato volba je pro síťové nástroje typická). Pomocí -c zase můžeme zadat počet paketů, které budou odeslány, např. ping -c 10 abclinuxu.cz. Jinak totiž jede ping do nekonečna.

Jsou však některé méně známé možnosti pingu, které jej činí nástrojem univerzálnějším, nikoli však všemocným. Pár z nich si ukážeme. Velmi zajímavou je volba -R, která nám ukáže cestu paketu k cíli přes všechny možné brány a uzly. Příklad pingu na stroj pm nacházejícím se na páteři olomoucké CZFree.Net (viz Obrázek 1):

Schema části sítě CZFree.Net
[milarb@tucnak milarb]$ ping -c 5 -R pm PING pm (10.132.5.1) 56(124) bytes
of data. 64 bytes from pm (10.132.5.1): icmp_seq=1 ttl=62 time=7.13 ms
RR:     tucnak (192.168.0.24) 10.132.4.20 10.132.5.139 pm (10.132.5.1) pm
(10.132.5.1) jardak (10.132.4.1) server (192.168.0.28) tucnak (192.168.0.24)
64 bytes from pm (10.132.5.1): icmp_seq=2 ttl=62 time=36.6 ms   (same route)
64 bytes from pm (10.132.5.1): icmp_seq=3 ttl=62 time=4.80 ms   (same route)
64 bytes from pm (10.132.5.1): icmp_seq=4 ttl=62 time=21.0 ms   (same route)
64 bytes from pm (10.132.5.1): icmp_seq=5 ttl=62 time=21.4 ms   (same route)
--- pm ping statistics --- 5 packets transmitted, 5 received, 0% packet
loss, time 4003ms rtt min/avg/max/mdev = 4.806/18.230/36.646/11.499 ms

Po řádku podávajícím informaci o navrácení prvního paketu se pod sebe zobrazily IP adresy a případně i jména počítačů, přes které pakety putovaly. Je zobrazena nejprve cesta tam (první čtyři adresy) a pak zpět. Za dalšími řádky je pak poznámka stejná cesta (same route). Pokud ale pingnete někam dál do Internetu, může se stát, že každý paket poběží jinudy.

Pro bližší objasnění zobrazené cesty: privátní adresy 10.132 příslušejí CZFree.Net, 192.168 je ethernet u mne doma. Můj pracovní počítač je tucnak, cíl pm. Moje brána se jmenuje server a má ethernet 192.168.0.28 a WiFi 10.132.4.20. Jardak je stroj na páteři CZFree.Net, kam jsem připojen. Má dvě WiFi – 10.132.4.1 a 10.132.5.139. Pm na páteři sousedí s jardak (viz Obrázek 1).

Další zajímavou volbou je -t, která nastaví délku života paketu. O co jde? Každý IP paket (viz předcházející díly seriálu) obsahuje ve své hlavičce jeden bajt (tj. hodnota nejvýše 256), který udává maximální délku života paketu v sekundách. Každý počítač (brána, router apod.), přes který paket prochází, musí toto číslo snížit o příslušný počet sekund, nejméně však o jednotku.

Pokud tedy nastavíme ttl třeba na 3, nedostane se paket k cílovému počítači, který je od nás dál než tři skoky (nepočítáme huby, switche, bridge a jiné pasivní prvky sítě nemající vlastní IP adresu). Ve výše uvedeném příkladu pingání na stroj pm se nám od něj vracely pakety s ttl 62. Výchozí hodnota je 64, takže byla někde dvakrát snížena.

Z našeho předchozího příkladu víme, kde byla snížena. Jednou na mé bráně a podruhé na páteřním počítači jardak. Když tedy zadáme ping -t 3 pm, sníží moje brána život paketu na 2, jardak na 1 a k pm přijde se smrtí na jazyku. Pokud ale dáme ping -t 2 pm, brána jej sníží na 1 a u jardaka umře. Ten pak zpátky pošle parte (Time to live exceeded). K pm v tomto případě žádný paket nedojde.

Ping má mnoho dalších možností, kterými se již dnes zaobírat nebudeme. Jmenujme jen možnost nastavení doby, po kterou má běžet, rychlost odesílání paketů, tichý režim či zátěžový test sítě. Dočtete se o nich v manuálové stránce. Ještě bych měl upozornit, že některé počítače na síti bývají introvertní nebo neslušně "vychované". Projevuje se to tím, že neodpovídají na pozdrav, i když jej slyší.

traceroute

Známý nástroj na vypsání cesty k zadanému počítači, tzv. trasování. Něco podobného jsme viděli již při použití ping -R. Traceroute je ale analytičtější. Běžným uživatelům ovšem nebývá přímo přístupný. Někdy se skrývá v adresáři /sbin nebo /usr/sbin. Pak je nutné zadat celou cestu, např.

[milarb@tucnak milarb]$ /usr/sbin/traceroute pm traceroute to pm
(10.132.5.1), 30 hops max, 38 byte packets 1  server (192.168.0.28)  0.298
ms  0.109 ms  0.101 ms 2  jardak (10.132.4.1)  8.495 ms  2.425 ms  35.059 ms
3  pm (10.132.5.1)  9.964 ms  9.725 ms  35.255 ms

Ve výpisu vidíme na prvním řádku jméno a adresu cílového počítače, údaj o tom, že program monitoruje maximálně 30 hopů (tedy uzlů po cestě) a že odeslané pakety mají velikost 38 bytů. Další řádky pak představují jednotlivé uzly jménem a IP adresou. Následují tři časy v milisekundách představující rychlost odezvy jednotlivých paketů z jednotlivých uzlů.

Časy jsou tři, neboť každý uzel je dotazován právě třikrát (to pro kontrolu). Z příkladu je krásně vidět, jak má lokální ethernet rychlou odezvu ve srovnání s následujícími WiFi spoji. Rozdíl je přímo řádový.

Stejně jako ping a další GNU nástroje má i traceroute zajímavé přepínače. Ukažme si alespoň ty jednodušší z nich. Můžeme ovlivnit většinu výchozích hodnot. S pomocí parametru -q můžeme kupř. ovlivnit počet paketů odesílaných každému z uzlů. traceroute -q 1 10.132.5.1 tak bude rychlý, traceroute -q 5 10.132.5.1 pomalejší, ale důkladnější.

Volbou -v rozšíříme jednotlivé řádky o údaj s délkou přijatého paketu. Zajímavější je, co udělá traceroute -vv pm. Ten úplně změní formát výpisu, neboť zobrazí šestnáctkové (hexadecimální) hodnoty obsahu všech zpět přijatých paketů. To značně prodlouží výstup programu, a proto doporučuji kombinovat tuto volbu s -q 1.

Hloubavější čtenáři by se mohlo právem ptát, jak to ten traceroute dělá, když přece paket dojde na konec, potom zase zpátky a informace o tom, kudy šel, si nikam nezapisuje. To je pravda. My ovšem k vysvětlení principu fungování programu traceroute máme již dostatek poznatků, a proto si to řekneme.

Z TCP ani IP hlaviček nejde zjistit, kudy paket putoval. Lze k tomu ale využít fintu založenou na parametru ttl, kterou jsme si ukazovali u pingu. Traceroute tak funguje skoro jako ping, ale s tím, že nejprve vysílá k cílovému stroji pakety (standardně tři po sobě) s ttl 1, potom tři s ttl 2, další tři s ttl 3 atd.

Co se stane? První tři pakety vrátí místní brána, s tím, že umřely (odečetla jim jedničku z ttl a zbyla nula života), a traceroute si zaznamená, od koho že toto parte přišlo. Další tři projdou místní bránou v pořádku a umřou na té další. Traceroute opět zaznamená a čeká, od koho se vrátí třetí trojice. A tak to dál, dokud není dosaženo cíle nebo maximálního počtu uzlů (tj. 30).

Xtraceroute

Jednoduše řečeno traceroute pro X neboli grafická podoba našeho trasovacího programu. Ptáte se, co že lze na trasování paketu vizualizovat, a to ještě ve 3D? No přece trasu – cestu paketu Internetem.

Dnes již program nemá z několika důvodů takový efekt. Ještě v devadesátých letech, kdy nebyla infrastruktura Internetu tak hustá, se stávalo, že z Prahy putoval paket na Moravu třeba přes Francii. Dá se to odhadnout pomocí doménových jmen jednotlivých počítačů na cestě. A to je také princip, na kterém pracuje xtraceroute.

Program najdete v mnoha distribucích anebo na jeho domovské stránce (viz odkazy). Spustíme ho příkazem xtraceroute. Po spuštění programu uvidíme okno (viz Obrázek 2), v jehož horní části je nabídka a pod ní řádek Target, kam zapíšeme jméno nebo adresu cílového počítače.

Okno programu Xtraceroute

Hlavní část okna zabírá trojrozměrný globus a pod ním je prázdná tabulka. Když do řádku Target napíšeme nějakou adresu, začne trasování. Já jsem vložil www.linux.bm v očekávání, že také na Bermudách se věnují svobodnému operačnímu systému. Server skutečně existuje a pakety začaly létat.

Prvních několik zastávek bylo v ČR, to než se traceroute propingal k páteři do Ameriky. Pak už to letělo kabelem až do New Yorku. V USA bylo také pár uzlů a ejhle, na Bermudy asi nevede podmořský kabel. Proto se další paket proletěl na oběžnou dráhu.

Podrobný seznam (podobný výstupu z traceroute) se průběžně aktualizuje v tabulce pod globusem. Vedle tabulky je tlačítko Info, kterým můžeme otevřít nové okno s informacemi o tom kterém uzlu. Uzly můžeme přímo v tabulce označovat tak, že na ně klikneme.

O umístění mnoha počítačů ale Xtraceroute mít informace nebude. Některé počítače totiž nemají doménovou adresu vůbec. Ty, které spadají do domén .com, .org, .net apod. mohou být zase umístěny kdekoli po světě. Autor slibuje, že v příštích verzích bude možné Xtraceroute propojit s databází počítačů v Internetu.

Závěr

Dnes jsme té teorie moc neprobrali, ale doufám, že se tím alespoň vyrovnal její přebytek z minulých dílů. Příště budeme pokračovat dalšími nástroji pro testování, protože nám jich ještě několik zbylo. Přidáme také nějakou teorii. Do té doby vám přeji mnoho úspěchů se sítěmi.

Nahoru

Odkazy

Přidat téma diskuse

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz