1. Báza znalostí
  2. Cloud a servery
  3. Nástroje
  4. Sieťové nástroje v Linuxe
  1. Báza znalostí
  2. Cloud a servery
  3. Sieťové nástroje v Linuxe

Sieťové nástroje v Linuxe

Operačný systém Linux je nasadzovaný prevažne na serveroch, v rámci ktorých je veľmi dôležitá sieťová časť. K základným znalostiam Linuxu teda patrí aj správa siete, ktorá zahŕňa konfiguráciu siete, monitorovanie siete a riešenie prípadných problémov v sieti. Na zvládnutie správy siete Linux ponúka profesionálne nástroje pre príkazový riadok. V tomto návode sa zoznámime s niektorými z nich.

Linuxové distribúcie poskytujú množstvo predinštalovaných sieťových nástrojov a tiež populárne nástroje, ktoré je potrebné doinštalovať (napr. traceroute alebo nmap). V tomto návode sa však zameriame iba na predinštalované nástroje, ktoré sú k dispozícii okamžite po nainštalovaní operačného systému.

Nástroj ping

Jeden z najjednoduchších sieťových nástrojov je ping (Packet InterNet Groper). Ping slúži na preverenie funkčnosti spojenia medzi dvoma sieťovými rozhraniami v počítačovej sieti založenej na protokole TCP/IP.

Takto overíme funkčnosť spojenia medzi počítačom, na ktorom sme práve prihlásení a webovým serverom, na ktorom beží web spoločnosti WebSupport:

ping websupport.sk

Po zaslaní povedzme 10 IP paketov stlačíme klávesovú skratku Ctrl + C, aby sme ukončili činnosť nástroja ping. Po ukončení činnosti nástroj ping zobrazí súhrnné štatistiky, v ktorých sa dozvieme, koľko IP paketov bolo odoslaných, koľko z nich bolo protistranou prijatých a koľko milisekúnd celá činnosť trvala. Čím viac IP paketov bolo protistranou prijatých (ideálne 100 %), tým stabilnejšie je spojenie.

Viac o tomto nástroji zistíme z oficiálneho zdroja:

man ping
ping -h

Nástroj tracepath

Ak nástroj ping vypíše stratené pakety (čiže protistrana ich neprijala), je vhodné použiť nástroj tracepath (sledovanie cesty), aby sme odhalili, kde konkrétne spojenie nebolo úspešné. Zistíme tak, ktorý server paket neprijal a dokážeme prípadný problém riešiť efektívnejšie.

Takto zistíme cestu paketu, ktorý sme poslali pomocou nástroja ping vyššie:

tracepath websupport.sk

Vypíše sa zoznam serverov (uzlov), cez ktoré paket cestoval a ku každému aj počet milisekúnd. Ak bude počet milisekúnd príliš veľký, alebo ak sa spojenie pri niektorom zo serverov nepodarilo nadviazať (označené “no replay”), môže to indikovať problém, ktorý už je teraz adresnejší a môžeme ho riešiť.

Viac o tomto nástroji zistíme z oficiálneho zdroja:

man tracepath
tracepath

Nástroj ip

Ide o komplexný nástroj, ktorý nahrádza svojich starších predchodcov ifconfig, route, arp, iptunnel, nameif, ifrename, ipmaddr či netstat a je predinštalovaný vo väčšine linuxových distribúcií. Vďaka nástroju ip (Internet Protocol) môžeme zobrazovať a meniť existujúce nastavenia siete.

Pre všetky serverové produkty WebSupportu nie je dovolené meniť ich sieťovú konfiguráciu.

Syntax zápisu je ip nastavenie objekt príkaz, pričom vďaka nastaveniu si môžeme napríklad nechať vypísať štatistiky (-s) a ako objekt (a alebo addr ako skratka od address) si môžeme napríklad nechať zobraziť (show) adresu IP protokolu jednotlivých sieťových zariadení takto:

ip -s a show

Keby sme vo vyššie ukázanom príkaze ip -s a vynechali nepovinné nastavenie -s (čiže by nám zostal príkaz ip a show), vypísali by sa iba všetky zariadenia s ich základnými údajmi o adrese IP protokolu. S nastavením -s sa však navyše zobrazili aj štatistiky o paketoch. Objekt a môžeme nahradiť dlhšou formou addr alebo celým slovom address a výstup zostane rovnaký. No a na konci je príkaz show, ktorého doslovný preklad (zobraziť) jasne definuje, že potrebujeme zobraziť adresy IP protokolu jednotlivých sieťových zariadení.

Okrem príkazu show objektu address (resp. skrátene addr alebo iba a) je možné použiť aj iné príkazy, ktorými už meníme konfiguráciu IP adresy (napr. add alebo del). Celkový prehľad o príkazoch pre objekt address (resp. skrátene addr alebo iba a) získame po zadaní príkazu:

ip a help

Objekt link (skrátene l) zobrazuje a spravuje samotné sieťové zariadenia – prvý riadok. Používa sa aj objekt route (skrátene r) na správu smerovacej tabuľky (routing table) – druhý riadok. MAC adresu sieťových zariadení spravujeme cez objekt neighbor (skrátene neigh alebo n) – tretí riadok.

ip l show
ip r list
ip n show

Ak potrebujeme získať väčší prehľad o vyššie spomínaných objektoch link, route alebo neighbor, stačí nahradiť príkaz show alebo list na konci takto:

ip l help
ip r help
ip n help

Väčší prehľad o nastaveniach, objektoch a príkazoch pre celý nástroj ip získame po zadaní príkazu:

man ip
ip help

Nástroj ss

Podobne ako nástroj ip, aj nástroj ss (Socket Statistics) nahrádza svojho staršieho predchodcu netstat. Netstat aj ss zobrazujú aktívne spojenia, ale novší ss dokáže vypísať podrobnejšie informácie a je rýchlejší. Ak spustíme nástroj ss v najjednoduchšej podobe, vypíšu sa iba uskutočnené pripojenia (connected, established):

ss

Prepínačom -a (ako all) k uskutočneným pripojeniam pridáme aj načúvajúce pripojenia (listening):

ss -a

Filtrovať môžeme tiež podľa toho, či ide o TCP (prepínač -t) alebo UDP (prepínač -u) spojenie. Vybrať si môžeme iba IPv4 (prepínač -4) alebo iba IPv6 (prepínač -6) pripojenia. A všetky filtre môžeme kombinovať aj s vyššie spomínaným prepínačom -a:

ss -at
ss -au
ss -a4
ss -a6

Podstatné je aj filtrovanie podľa portu. Takto si napríklad môžeme zobraziť iba spojenia protokolu SSH – podľa čísla portu (prvý riadok) alebo podľa názvu služby (druhý riadok):

ss -at '( dport = :22 or sport = :22 )'
ss -at '( dport = :ssh or sport = :ssh )'

Môže sa tiež hodiť zistiť, aké spojenie (a či vôbec nejaké) bolo naviazané z konkrétnej IP adresy na náš počítač:

ss dst IP_adresa

Pričom časť na konci IP_adresa zameníme podľa toho, o akú IP adresu nám ide.

Naopak, ak potrebujeme zistiť, či náš počítač naviazal spojenie s konkrétnou IP adresou, použijeme:

ss src IP_adresa

Pričom časť na konci IP_adresa zameníme podľa toho, o akú IP adresu nám ide.

Viac o tomto nástroji zistíme z oficiálneho zdroja:

man ss
ss -h

Nástroj tcpdump

Pomocou nástroja tcpdump dokážeme sledovať a zaznamenávať IP pakety TCP siete v reálnom čase. Ponúka množstvo nastavení a filtrov, za pomoci ktorých je možné zo sieťovej komunikácie získať celkom konkrétne údaje. Vďaka týmto vlastnostiam je nástroj tcpdump obľúbená pomôcka systémových administrátorov, ktorú nasadzujú pri detekcii problémov v sieti.

Tcpdump používame s oprávneniami správcu, preto každý príkaz na začiatku obsahuje sudo. Aby sme mohli sledovať sieťovú komunikáciu na konkrétnom sieťovom zariadení, najskôr musíme zistiť, ktoré sieťové zariadenia sú k dispozícii:

sudo tcpdump -D

Vypíše sa zoznam sieťových zariadení, z ktorých jedno bude mať názov any. Ide o virtuálne sieťové zariadenie, cez ktoré preteká sieťová komunikácia všetkých sieťových zariadení. Aby sme teda mali prehľad o všetkej sieťovej komunikácii, budeme sledovať práve toto zariadenie:

sudo tcpdump -i any

Spustí sa záznam sieťovej komunikácie, ktorý ukončíme pomocou klávesovej skratky Ctrl + C. Aby sme sa však vo výpise lepšie orientovali, obmedzíme ho na 10 záznamov (-c 10) a zakážeme preklad IP adries a portov (-nn):

sudo tcpdump -i any -c 10 -nn

Môže sa stať, že potrebujeme zaznamenať komunikáciu iba na určitom porte (port 80 – HTTP) a iba od určitého zdroja (src IP_adresa). V takomto prípade na koniec doplníme filtre takto:

sudo tcpdump -i any -c 10 -nn port 80 and src IP_adresa

Pričom časť na konci IP_adresa zameníme podľa toho, o akú IP adresu nám ide.

Alebo môžeme sledovať aj viacero IP adries:

sudo tcpdump -i any -c 10 -nn port 80 and (src IP_adresa_1 or src IP_adresa_2)

Pričom IP_adresa_1  a IP_adresa_2 zameníme podľa toho, o aké IP adresy nám ide.

No a s nastavením -A dokonca môžeme zobraziť a zaznamenať obsah prenesených paketov:

sudo tcpdump -i any -c 10 -nn -A port 80

Bežným štandardom je zaznamenávať do súboru s koncovkou .pcap (tu webserver.pcap) pomocou nastavenia -w takto:

sudo tcpdump -i any -c 10 -nn -A -w webserver.pcap port 80

Takýto záznam môžeme naplánovať na pravidelný zápis v budúcnosti cez nástroj cron.

Viac o tomto nástroji zistíme z oficiálneho zdroja:

man tcpdump
tcpdump -h

Nástroj dig

Nástroj dig (Domain Information Groper) nahrádza starších predchodcov nslookup či host a slúži na vypísanie informácií o doméne z DNS záznamov typu A (IP adresa), TXT (textové poznámky), MX (mail exchanges), NS (nameservers) a podobne. Všetky typy DNS záznamov pre doménu websupport.sk vypíšeme takto:

dig websupport.sk any

Ak potrebujeme iba IP adresu domény, stačí požiadať o krátky DNS záznam (+short) typu A:

dig websupport.sk a +short

Viac o tomto nástroji zistíme z oficiálneho zdroja:

man dig
dig -h

Nástroj w

Jednopísmenkový nástroj w slúži na vypísanie zoznamu aktuálne prihlásených používateľov. Ide o kombináciu nástrojov who, uptime a ps -a, takže sa zobrazí aj čas prihlásenia a využitie systémových prostriedkov. Zadáme jednoducho:

w

Viac o tomto nástroji zistíme z oficiálneho zdroja:

man w
w --help

Nástroj last

Zoznam naposledy prihlásených používateľov vypíšeme pomocou nástroja last. Takto necháme vypísať posledných 10 prihlásených používateľov:

last -n 10

V súvislosti s naposledy prihlásenými používateľmi je dobré skontrolovať aj systémové záznamy o posledných úspešných prihláseniach (prvý riadok), a tiež pre istotu skontrolovať zoznam používateľov (druhý riadok) a skupín (tretí riadok):

sudo less /var/log/auth.log | grep Accepted
less /etc/passwd
less /etc/group

Viac o nástroji last zistíme z oficiálneho zdroja:

man last
last -h

Zhrnutie

Na základnej úrovni sme si predstavili sieťové nástroje z balíka iproute2 (ip, ss), ktoré postupne nahrádzajú zastaralejšie a pomalšie nástroje z balíka net-tools (ifconfig, route, arp, iptunnel, nameif, ifrename, ipmaddr alebo netstat). Hlbšiemu skúmaniu sieťovej komunikácie sme sa venovali pri popise nástroja tcpdump. Tiež sme si ukázali, ako a kedy používať jednoduchšie nástroje ping, tracepath, last, dig a w.

Aktualizované 14. júna 2022

Bol pre vás tento návod nápomocný?

Mohlo by vás tiež zaujímať:

Spýtajte sa nás, radi poradíme
Po - Ne 8:00-22:00
Kontaktovať podporu