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.
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.