Úvod do příkazu ss

V tomto výukovém kurzu z archivu se dozvíte, jak získat informace o síti pomocí příkazu ss.

Linux obsahuje poměrně velké množství nástrojů, které splňují téměř všechny potřeby. Od vývoje přes zabezpečení a produktivitu až po správu… pokud to musíte udělat, Linux vám poslouží. Jedním z mnoha nástrojů, na které se administrátoři často obraceli, byl netstat. Příkaz netstat byl však zastaralý ve prospěch rychlejšího a lidsky čitelnějšího příkazu ss.

Příkaz ss je nástroj sloužící k výpisu statistik soketů a zobrazuje informace podobným způsobem (i když jednodušším a rychlejším) jako netstat. Příkaz ss také dokáže zobrazit ještě více informací o TCP a stavu než většina ostatních nástrojů. Protože ss je nový netstat, podíváme se na to, jak tento nástroj využít, abyste mohli snadněji získávat informace o svém linuxovém počítači a o tom, co se děje se síťovými připojeními.

Příkaz ss umí zobrazit statistiky například pro sokety PACKET, TCP, UDP, DCCP, RAW a unixové domény. Náhrada za netstat je jednodušší na používání (porovnáním manuálových stránek získáte okamžitou představu o tom, o kolik je ss jednodušší). Pomocí ss získáte velmi podrobné informace o tom, jak váš linuxový počítač komunikuje s jinými počítači, sítěmi a službami; podrobnosti o síťových spojeních, statistiky síťových protokolů a připojení linuxových soketů. S těmito informacemi v ruce můžete mnohem snadněji řešit různé problémy se sítí.

Představíme si ss, abyste jej mohli považovat za nový nástroj ve své administrátorské výbavě.

Základní použití

Příkaz ss funguje jako každý jiný příkaz na platformě Linux: Vydejte spustitelný příkaz a za ním následuje libovolná kombinace dostupných možností. Pokud se podíváte na manuálovou stránku příkazu ss (zadejte příkaz man ss), zjistíte, že zde nejsou ani zdaleka takové možnosti jako u příkazu netstat; to se však nerovná nedostatku funkcí. Ve skutečnosti je ss poměrně výkonný.

Pokud zadáte příkaz ss bez jakýchkoli argumentů nebo možností, vrátí vám kompletní seznam soketů TCP s navázanými spojeními (obrázek 1).

Obrázek 1: Kompletní výpis všech navázaných spojení TCP.

Protože příkaz ss (bez voleb) zobrazí značné množství informací (všechny podrobnosti o spojeních tcp, udp a unixových soketů), můžete také odeslat výstup tohoto příkazu do souboru pro pozdější prohlížení takto:

ss > ss_output

Jednoduchý příkaz samozřejmě není až tak užitečný pro každou situaci. Co když chceme zobrazit pouze aktuální naslouchající zásuvky? Jednoduše, přidejte volbu -l takto:

ss -l

Výše uvedený příkaz vypíše pouze seznam aktuálních naslouchajících soketů.

Pro upřesnění si to představte takto: ss lze použít k zobrazení TCP spojení pomocí volby -t, UDP spojení pomocí volby -u nebo UNIXových spojení pomocí volby -x; takže ss -t, ss -u nebo ss -x. Spuštění kteréhokoli z těchto příkazů vám vypíše spoustu informací, které můžete procházet (obrázek 2).

Obrázek 2: Spuštění příkazu ss -u v systému Elementary OS nabízí rychlé zobrazení spojení UDP.

Samotné použití volby -t, -u nebo -x standardně vypíše pouze ta spojení, která jsou navázána (nebo připojena). Pokud chceme vybrat spojení, která naslouchají, musíme přidat volbu -a, například:

ss -t -a 

Výstup výše uvedeného příkazu bude obsahovat všechny sokety TCP (obrázek 3).

Obr. 3: Všimněte si, že poslední soket je ssh naslouchající na zařízení.

Ve výše uvedeném příkladu je vidět, že spojení UDP (v různých stavech) jsou navázána z IP adresy mého počítače, z různých portů, na různé IP adresy, přes různé porty. Na rozdíl od verze tohoto příkazu pro netstat nezobrazuje ss PID a název příkazu odpovědného za tato spojení. I tak ale máte dostatek informací pro zahájení řešení problémů. Pokud by některý z těchto portů nebo adres URL byl podezřelý, víte nyní, jaká IP adresa/port spojení uskutečňuje. Díky tomu nyní máte informace, které vám mohou pomoci v počátečních fázích řešení problému.

Filtrování ss pomocí stavů TCP

Jednou z velmi užitečných možností, které má příkaz ss k dispozici, je možnost filtrování pomocí stavů TCP („životních fází“ spojení). Pomocí stavů můžete snadněji filtrovat výsledky příkazu ss. Nástroj ss lze použít ve spojení se všemi standardními stavy TCP:

  • established

  • syn-sent

  • syn-recv

  • fin-wait-1

  • fin-wait-2

  • time-.wait

  • closed

  • close-wait

  • last-ack

  • listening

  • closing

Další dostupné identifikátory stavu ss rozpoznává:

  • all (všechny výše uvedené stavy)

  • connected (všechny stavy s výjimkou listen a closed)

  • synchronized (všechny připojené stavy s výjimkou syn-sent)

  • bucket (stavy, které jsou udržovány jako minizásuvky, například time-wait a

  • syn-recv)

  • big (opak stavu bucket)

Syntaxe pro práci se stavy je jednoduchá.

For tcp ipv4:ss -4 state FILTERFor tcp ipv6:ss -6 state FILTER

Kde FILTER je název stavu, který chcete použít.

Řekněme, že chcete zobrazit všechny naslouchající zásuvky IPv4 na vašem počítači. Pro tento účel by příkaz zněl:

ss -4 state listening

Výsledky tohoto příkazu by vypadaly podobně jako na obrázku 4.

Obrázek 4: Použití ss s filtrem naslouchajícího stavu.

Zobrazit připojené zásuvky z konkrétní adresy

Jednou z užitečných úloh, kterou můžete přiřadit ss, je nechat jej hlásit spojení uskutečněná jinou IP adresou. Řekněme, že chcete zjistit, zda/jak se stroj na IP adrese 192.168.1.139 připojil k vašemu serveru. Za tímto účelem můžete zadat příkaz:

ss dst 192.168.1.139

Výsledné informace (obrázek 5) vám sdělí Netid, stav, lokální IP:port a vzdálený IP:port socketu.

Obrázek 5: Vzdálený počítač navázal ssh spojení s naším místním počítačem.

Příkaz ss vám pomůže

Příkaz ss vám může docela dost pomoci při řešení problémů se serverem Linux nebo se sítí. Bylo by vhodné věnovat čas přečtení manuálové stránky ss (zadejte příkaz man ss). V tuto chvíli byste však měli mít alespoň základní povědomí o tom, jak tento příkaz, který musíte znát, používat.

Další informace o Linuxu získáte v bezplatném kurzu „Úvod do Linuxu“ od The Linux Foundation a edX.

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.