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

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

Soutěž - reproduktory Trust

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

Bohdan Milar vítá všechny pravidelné i nahodilé čtenáře u páté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í. Dnes uzavřeme oblast ARP a pingů. Článek z čísla 3/2005.


reklama

Tabulka ARP

Předpokládám, že většina z vás se již setkala s termínem vyrovnávací paměť, neboli cache. Proto jen krátce připomenu, že jde o nástroj, kterým se počítače snaží zvýšit rychlost při práci s tzv. pomalými zařízeními. Za takové pomalé zařízení lze chápat disk nebo i síťovou kartu, neboť práce s operační pamětí RAM je až o několik řádů rychlejší (např. milisekundy versus nanosekundy).

Princip je jednoduchý – určitá část objemu poslední komunikace s pomalým zařízením (např. několik desítek síťových paketů nebo pár megabytů dat čtených či ukládaných na disk) zůstává v paměti. Pokud budou opět potřeba (opakování komunikace, znovuzobrazení souboru), nejsou již načítána z pomalého zařízení, ale čtena z rychlé paměti RAM.

Tento princip se zalíbil i vývojářům jádra, kteří psali oblast práce s ARP. Řekli si, že je neefektivní zjišťovat MAC adresu náležející příslušné IP adrese před posíláním každého paketu. A proto zařídili, aby si systém poslední zjištěné adresy nějakou dobu pamatoval. Ukládá si tedy MAC adresy zařízení, s nimiž naposled komunikoval, do tabulky, v níž má ke každému také IP adresu a síťové rozhraní.

Systémovou ARP tabulku najdeme v souborovém pseudosystému /proc. Konkrétně je to soubor /proc/net/arp. Nedoporučuji jej otevírat v grafickém editoru, ale na příkazové řádce můžete klidně zadat cat /proc/net/arp.

Ukázka souboru /proc/net/arp:

IP address       HW type     Flags       HW address            Mask     Device
192.168.0.28     0x1         0x2         00:30:4F:27:4B:97     *        eth0
192.168.0.27     0x1         0x2         00:50:FC:06:35:A7     *        eth0
192.168.0.25     0x1         0x2         00:0A:E4:55:35:6F     *        eth0

Výpis programu /sbin/arp:

Address                  HWtype  HWaddress           Flags Mask            Iface
server                   ether   00:30:4F:27:4B:97   C                     eth0
192.168.0.27             ether   00:50:FC:06:35:A7   C                     eth0
192.168.0.25             ether   00:0A:E4:55:35:6F   C                     eth0

Rozsah a obsah tabulky je závislý na množství počítačů připojených do vaší sítě a intenzitě jejich vzájemné komunikace. V tabulce se udržují pouze používané hodnoty, takže se nelekněte, když na síti s 50 počítači budete mít třeba jen dva záznamy (např. server a bránu do Internetu). Podobně to bylo i u mne, kde v tabulce byla pouze brána – 192.168.0.28. Ostatní dva zapnuté počítače jsem proto (znalý jejich IP adres) pozdravil příkazem ping a hned byly do tabulky automaticky přidány.

První sloupeček tabulky obsahuje IP adresy. Ve druhém vidíme typ sítě (šestnáctkový kód 0x1 zřejmě označuje ethernet) a ve třetím pak jejich parametry. Důležitý je ovšem sloupec čtyři s MAC adresami a sloupec šest s určením, přes které rozhraní náš systém s danou adresou naposled hovořil (u mne to bylo eth0, tedy první ethernetová karta).

Příkaz ARP

Ke zjištění a úpravám obsahu ARP tabulky je možné použít program arp. V distribucích RedHat, Fedora Core, Aurox apod. jej najdeme v RPM balíku net-tools, který obsahuje také ifconfig a route, takže jej máte pravděpodobně již nainstalovaný. Jelikož jej standardně umístěn v adresáři /sbin, nemusí jej shell spuštěný pod běžným uživatelem najít v systémových cestách. Proto jej zde budu uvádět s plnou cestou.

Základní použití arp je jednoduché – stačí zadat /sbin/arp. Dostane se nám podobné tabulky (viz rámeček) jakou jsme našli v /proc/net/arp. Mírně se liší nadpisy sloupečků a třetí a čtvrtý sloupec jsou prohozeny. Co se obsahu týče, je zde snaha o polidštěnou interpretaci obsahu – místo IP adresy doménové jméno (je-li k dispozici), místo tajemného kódu 0x1 vidíme zkratku ether apod.

Jak je u textových nástrojů zvykem, lze jejich práci ovlivňovat různými přepínači. Zde vybírám ty, které se u arp týkají zobrazování tabulky:

  • /sbin/arp -a – vypíše informace ve větách (BSD styl) místo tabulky;
  • /sbin/arp -a 192.168.0.28 – vypíše ve větách (BSD styl) informace o zařízení s IP adresou 192.168.0.28;
  • /sbin/arp -n – nebude zobrazovat doménová jména počítačů, ale jejich (číselné) IP adresy;
  • /sbin/arp -v – na konec výpisu bude přidána informace o počtu položek apod.;

Dále je u arp možné vybrat, který typ sítí má být zobrazen. Slouží k tomu přepínač -H a vybrat si můžeme hned z několika typů: ARCnet (arcnet), PROnet (pronet), AX.25 (ax25) a NET/ROM (netrom). Výchozí hodnotou je ether, změnu bychom provedli např. takto: /sbin/arp -H arcnet. Pokud však zařízením tohoto typu nedisponujete, bude vám (podobně jako mně) odpovědí arp: žádná z položek (3) nevyhovuje. Možná by stálo za zmínku, že WiFi karty jsou zde považovány za typ ether.

Jak jsem již předeslal, arp umí tabulku ARP nejen zobrazovat, ale i upravovat. K tomu slouží přepínače -d a -s a použít je může pouze superuživatel (root). Např. přidání záznamu o počítači s IP adresou 192.168.0.29 a MAC adresou 00:30:4F:27:4B:98 přidáme příkazem arp -s 192.168.0.29 00:30:4F:27:4B:98. Jeho odebrání pak příkazem arp -d 192.168.0.29.

Příkaz hping2

Tento užitečný nástroj dosud není v některých distribucích zařazen. Stáhnout si jej ale můžete z jeho domovské stránky (viz Odkazy). Je tam ovšem pouze betaverze, kterou se mi nepodařilo přeložit (zkompilovat). Použil jsem proto zdrojový kód starší verze z Debianu (viz Odkazy).

Kompilace programu hping2 spočívala v příkazech ./configure a make. Potom jsem získal práva superuživatele (su) a provedl make install.

K používání hping2 potřebujeme práva superuživatele, takže se jako root příhlásíme nebo změníme identitu pomocí su - (a na výzvu zadáme heslo). Základní použití je prakticky totožné se starším bratrem – příkazem ping. Zkusil jsem tedy zadat hping2 192.168.0.28. Výsledek je ve výpisu.

HPING 192.168.0.28 (eth0 192.168.0.28): NO FLAGS are set, 40 headers + 0 data bytes
len=46 ip=192.168.0.28 ttl=64 DF id=0 sport=0 flags=RA seq=0 win=0 rtt=0.2 ms
len=46 ip=192.168.0.28 ttl=64 DF id=0 sport=0 flags=RA seq=1 win=0 rtt=0.2 ms
--- 192.168.0.28 hping statistic ---
5 packets tramitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 0.2/0.2/0.2 ms

Vedle mnoha shod s výstupem pingu vidíme i rozdíly. V záhlaví je např. informace o použitém síťovém zařízení (eth0), v řádcích vidíme mnohé nové údaje, na konci ovšem chybí údaj o střední odchylce (mdev). Hping 2 je ovšem mocný nástroj, na jehož popis zde nemáme dost místa. Proto jen krátce výběr z jeho přepínačů:

  • hping2 -c 5 192.168.0.28 – provede právě 5 pingnutí na adresu 192.168.0.28 a ukončí činnost;
  • hping2 -i 3 192.168.0.28 – pingá na adresu 192.168.0.28 v intervalu 3 sekund (normálně se ping opakuje po sekundě);
  • hping2 -v 192.168.0.28 – pingá na zadanou IP a o každém kroku dává více informací (3 řádky);
  • hping2 -D 192.168.0.28 – pingá na 192.168.0.28 v režimu ladění, kdy vypisuje i obsah paketů;

Hlavní síla hpingu ale spočívá v možnosti výběru protokolu, kterým budeme na vzdálený počítač pokřikovat. Zde je přehled dostupných protokolů zadávaných jako přepínač do syntaxe příkazu před cílovou adresu:

  • -0 nebo --rawip – k pingání bude použito čisté (RAW) IP, doporučuji v kombinaci s -D;
  • -1 nebo --icmp – k pingání bude používáno ICMP, tedy stejná metoda jako u programu ping;
  • -2 nebo --udp – k pingání poslouží UDP pakety;

Závěr

Tak jsme probrali další dva zajímavé příkazy a příště se vrhneme na oblast DNS, se kterou jsme se již teoreticky seznámili v minulých dílech. Těšte se na příkazu host a nslookup.

Nahoru

Odkazy

Top články z OpenOffice.cz

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



 
 

Bohdan Milar

(*1976) vystudoval Vysokou školu ekonomickou v Praze. Pracuje v obecně prospěšné společnosti Brailcom. Unixové systémy používá od roku 1997. Má rád Bash, FreeMiNT a LaTeX.



Redakční blog

Redakce

Redakce, 21. prosinec

Pište pro LinuxEXPRES

Baví vás Linux? Pište o něm, není to nic těžkého. LinuxEXPRES hledá nové autory.


Pavel Fric

Pavel Fric, 23. říjen

Nové motivy pro přehrávač Sayonara

Pomozte rozšířit možnost měnit vzhled programu za běhu


Pavel Fric

Pavel Fric, 28. únor

Lollypop


Všechny blogy »

Tagy