Linux E X P R E S

Facebook

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

Bohdan Milar – V tomto díle si ukážeme nejnižší vrstvu komunikace po síti typu ethernet – protokol ARP. Začneme ovšem opakováním a prohloubením svých znalostí v oblasti všech dosud zmíněných síťových vrstev. Vedle ARP si tak řekneme také o existenci ICMP a UDP.


Další měsíc uplynul jako pár kilobajtů po dobře nastavené síti a my se setkáváme u čtvrtého dílu seriálu o GNU nástrojích určených pro konfiguraci, testování, monitorování, ale hlavně používání počítačových sítí. Za tu dobu vzniklo pár tisíc nových stránek, bylo zbudováno pár kilometrů optických kabelů, bylo zvětšeno území pokryté rychlým mobilním připojením a další domácnosti byly vybaveny počítačem. Internet se tedy spokojeně rozrůstá.

Síťové vrstvy podrobněji

Ve druhém díle tohoto seriálu jsme si ukázali čtyři vrstvy síťové komunikace: spojová, síťová, transportní, aplikační. Za příklad spojové jsme vzali ethernet, za síťovou IP, transportní byla TCP a aplikační HTTP. Že existuje více těch aplikačních, je asi jasné. Můžeme jmenovat FTP pro přenos souborů, SMTP, POP3 a IMAP pro přenos pošty, SSH a mnohé další.

Ony ovšem existují různé protokoly i na jiných vrstvách. Spojová vrstva je závislá na použitém médiu. My ale zůstaneme u ethernetu, neboť v praxi se (s výjimkou PPP) jen málokdy setkáte s jinou (nekompatibilní) architekturou. Pro komunikaci se na ethernetu používá protokol ARP (Address Resolution Protocol), kterému se dnes budeme věnovat v souvislosti s příkazem arping.

Připomeňme si, jak ethernet fungoval a funguje. Dříve bylo mnoho počítačů připojeno na jednu páteř – koaxiální kabel – táhnoucí se budovou. Takže když do něj kterýkoli z nich vyslal signál, "slyšeli" jej všichni ostatní. Aby mohl komunikovat konkrétní počítač s jiným konkrétním počítačem, musejí mít všechny jedinečnou adresu.

Řeknete si fajn, k tomu máme IP adresu. Ale pozor! Jsme teprve na spojové vrstvě. IP adresy jsou otázkou až vrstvy síťové! Po ethernetu lze totiž šířit i jinou komunikaci než jen TCP/IP (např. IPX/SPX nebo NetBEUI). Proto má každá ethernetová karta svou hardwarovou adresu, označovanou MAC. Adresu své karty můžeme zjistit jednoduše příkazem ifconfig (resp. /sbin/ifconfig).

Výstup mého příkazu ifconfig eth0 se na prvním řádku věnuje právě síťové vrstvě. Identifikuje ji jako ethernet a sděluje nám HWadr, tedy MAC adresu. Je tvořena šesti dvojcifernými hexadecimálními čísly oddělenými dvojtečkami.

Druhý řádek představuje nastavení IP verze 4 (vidíme IP adresu, všesměrovou adresu a masku sítě). Třetí řádek obsahuje adresu ve tvaru IP verze 6. Rozdíly v IP verze 4 a 6 se zatím zabývat nebudeme. Musíme si ovšem povědět o tom, že vedle IP se na síťové vrstvě používá ICMP – Internet Control Message Protocol.

ICMP se používá ke komunikaci mezi aktivními prvky sítě. Již jsme se s ním setkali v podobě příkazů ping a traceroute. Ping využíval ICMP pakety přímo pro komunikaci. Traceroute nepřímo tím, že IP paketům nastavoval krátkou životnost, aby mu pak jednotlivé routery na cestě vracely jejich úmrtní listy, a to právě pomocí ICMP.

Postupme o další úroveň výše – k transportní vrstvě. Zde jsme dosud znali pouze TCP, tedy protokol zajišťující kontinuitu spojení. Proces navazování TCP spojení je administrativně náročnější a vyžaduje výměnu několika paketů mezi zdrojovým a cílovým počítačem. Obdobné je to při ukončení spojení.

Výhodou TCP je kontrola nad navázaným spojením. Je tedy vhodný tam, kde se bude posílat větší objem dat. V situacích, kde se posílá třeba jen jeden nebo několik málo paketů (např. dotaz DNS), by navazování a ukončování TCP spojení zněkolikanásobilo objem probíhající komunikace. Proto se používá jednodušší forma – protokol UDP (User Datagram Protocol).

UDP nenavazuje spojení a nekontroluje, zda paket dorazil k cíli v pořádku. Pokud počítač přes UDP odeslal dotaz, na který očekává odpověď, a ta stále nepřichází, prostě dotaz po chvíli zopakuje. Využívá se to např. pro již zmíněné DNS, dále třeba pro TFTP, NTP, síťové hry či pro internetovou telefonii (VOIP).

Tak doufám, že jsem vám rozšířením výkladu o vrstvách těch našich sítí příliš nezamotal hlavu. Snad pro zvýšení přehlednosti pomůže malá tabulka.

 

Aplikační vrstva HTTP, FTP, POP3, SMTP, NTP, DNS, ...
Transportní vrstva TCP, UDP, ...
Síťová vrstva IP, ICMP, ...
Spojová vrstva ARP, PPP, ...

Arping

Nástroj arping je součástí balíku iputils. Dělá v podstatě totéž, co příkaz ping. Ke zjištění přítomnosti nějakého počítače na síti však využívá ARP místo ICMP (nebo UDP). Ptáte se, k čemu je to dobré? Vždyť přece každý počítač komunikuje na síťové vrstvě, tak proč se snižovat až na tu spojovou, která nás omezuje jen na lokální síťový segment?

Mohou k tomu být hned dva závažné důvody. Prvním z nich je, že cílový počítač nemusí mít IP adresu ve stejném rozsahu jako počítač zdrojový. Druhou pohnutkou jsou firewally, neboli ochranné mechanismy některých počítačů vůči útokům po síti (nastavením firewallu se budeme v tomto seriálu v budoucnu také zabývat). Tyto počítače mohou ICPM (příp. i UDP) pakety ignorovat nebo přímo zahazovat. ARP však nikoli.

ARP lze využít ke zjištění, která ethernetová karta využívá určitou IP adresu. Využívá se k tomu dvou formulací: otázky a odpovědi. Otázka má tvar: Kdo má IP adresu 1, nechť to sdělí na IP adresu 2. Tuto otázku obdrží všechny počítače připojené k danému segmentu ethernetu. Kdo IP adresu 1 má, pošle odpověď ve tvaru: IP adresa 1 je na MAC adrese 1.

Nyní k vlastní syntaxi příkazu arping. Nejjednodušší je zápis pouze s cílovou IP adresou, např. arping 10.0.0.25. Tuto adresu jsem příkazem ifconfig přiřadil jednomu z počítačů na lokální síti, čímž vypadl z rozsahu IP adres dosažitelných mým počítačem. Práci příkazu ukončíme kombinací kláves [Ctrl+c].

Na výpisu programu dále vidíme řádky informující nás o jedinečných odpovědích z příslušné IP adresy (doprovázené MAC adresou) s reakčními časy v ms. Na konci pak souhrn, kolik dotazů bylo odesláno a kolik odpovědí se vrátilo. Vidíme též, že jeden dotaz byl všesměrový – to aby ARP zjistil, kdo má vlastně cílovou IP adresu.

Jako většina GNU nástrojů má i arping přepínače, které dovedou měnit způsob jeho chování. Uvedu příklady s některými z nich:

  • arping -b 10.0.0.25 – všechny (nejen první) ARP dotazy budou zasílány formou broadcast;
  • arping -c 5 10.0.0.25 – arping provede právě pět pingnutí na zadanou adresu a skončí;
  • arping -D 10.0.0.25 – provede se pouze jeden ping, ale z virtuální adresy 0.0.0.0 a s důrazem na vyhledávání duplicitních adres v síti;
  • arping -b 10.0.0.25 – skončí po první odpovědi prokazující, že 10.0.0.25 je aktivní;
  • arping -I eth0 10.0.0.25 – dotaz na 10.0.0.25 bude vznesen prostřednictvím první ethernetové karty;
  • arping -c 5 10.0.0.25 – arping bude pingat právě pět sekund a po té svou práci ukončí.

Závěr

Dnešní díl je poněkud stručnější než ty předcházející, ale myslím, že méně je někdy více. Pověděli jsme si mnoho důležitých věcí v oblasti protokolů a vrstev, takže jistě budete mít do příště o čem přemýšlet. Ukázali jsme si také jeden z méně známých, ale užitečných síťových nástrojů.

Příště bych rád oblast ping-pongu i ARP ukončil představením nástrojů arp a hping2. Zbyde-li prostor, budeme se věnovat také nástrojům v oblasti DNS.

Diskuze (0) Nahoru