Bevezetés az ss parancsba

Tanulja meg, hogyan szerezhet hálózati információkat az ss parancs segítségével ebben az archívumból származó bemutatóban.

A Linux meglehetősen sokféle eszközt tartalmaz, amelyek szinte minden igényt kielégítenek. A fejlesztéstől a biztonságon át a termelékenységen át az adminisztrációig… ha valamit el kell végezned, a Linux ott van, hogy kiszolgáljon. A sok eszköz közül az egyik, amihez az adminok gyakran fordultak, a netstat volt. A netstat parancs azonban már elavult a gyorsabb, ember által jobban olvasható ss parancs javára.

Az ss parancs egy olyan eszköz, amelyet a socket statisztikák kiürítésére használnak, és a netstathoz hasonló módon (bár egyszerűbben és gyorsabban) jeleníti meg az információkat. Az ss parancs még több TCP- és állapotinformációt is képes megjeleníteni, mint a legtöbb más eszköz. Mivel az ss az új netstat, megnézzük, hogyan használhatja ezt az eszközt, hogy könnyebben szerezzen információt a Linux gépéről és arról, hogy mi történik a hálózati kapcsolatokkal.

Az ss parancssori segédprogram képes statisztikákat megjeleníteni a PACKET, TCP, UDP, DCCP, RAW és Unix tartományi aljzatokról. A netstat helyettesítője könnyebben használható (hasonlítsuk össze a man oldalakat, hogy azonnal képet kapjunk arról, mennyivel egyszerűbb az ss). Az ss segítségével nagyon részletes információkat kaphatsz arról, hogy a Linux géped hogyan kommunikál más gépekkel, hálózatokkal és szolgáltatásokkal; részleteket a hálózati kapcsolatokról, a hálózati protokollstatisztikákról és a Linux socket kapcsolatokról. Ezekkel az információkkal a kezedben sokkal könnyebben tudod elhárítani a különböző hálózati problémákat.

Vezessük be az ss-t, hogy a rendszergazdai készleted új eszközeként tekinthess rá.

Az alapvető használat

Az ss parancs úgy működik, mint bármelyik parancs a Linux platformon: Adja ki a végrehajtható parancsot, és kövesse a rendelkezésre álló opciók tetszőleges kombinációjával. Ha egy pillantást vetünk az ss man oldalára (adjuk ki a man ss parancsot), észrevehetjük, hogy közel sincsenek meg a netstat parancsnál található opciók; ez azonban nem egyenlő a funkcionalitás hiányával. Valójában az ss meglehetősen nagy teljesítményű.

Ha az ss parancsot argumentumok és opciók nélkül adja ki, akkor a parancs a létrehozott kapcsolatokkal rendelkező TCP aljzatok teljes listáját adja vissza (1. ábra).

1. ábra: Az összes létrehozott TCP kapcsolat teljes listája.

Mivel az ss parancs (opciók nélkül) jelentős mennyiségű információt jelenít meg (az összes tcp, udp és unix socket kapcsolat részleteit), a parancs kimenetét egy fájlba is elküldheti későbbi megtekintésre, például így:

ss > ss_output

Egy nagyon egyszerű parancs persze nem minden helyzetben hasznos. Mi van akkor, ha csak az aktuális figyelő aljzatokat szeretnénk megtekinteni? Egyszerű, tegyük hozzá a -l opciót, így:

ss -l

A fenti parancs csak az aktuálisan figyelő socket-ek listáját fogja kiadni.

Hogy egy kicsit konkrétabbá tegyük, gondoljunk rá így: az ss a -t opcióval a TCP-kapcsolatok, a -u opcióval az UDP-kapcsolatok, a -x opcióval pedig a UNIX-kapcsolatok megtekintésére használható; tehát ss -t, ss -u, vagy ss -x. Ezen parancsok bármelyikének futtatása rengeteg információt listáz ki, amit átfésülhet (2. ábra).

2. ábra: Az ss -u futtatása az Elementary OS-en gyors megjelenítést nyújt az UDP kapcsolatokról.

Alapértelmezés szerint a -t, a -u vagy a -x opciók használata önmagában csak a létrehozott (vagy csatlakoztatott) kapcsolatokat listázza ki. Ha ki akarjuk szedni a figyelő kapcsolatokat, hozzá kell adnunk a -a opciót, például:

ss -t -a 

A fenti parancs kimenete az összes TCP aljzatot tartalmazza (3. ábra).

3. ábra: Vegyük észre, hogy az utolsó aljzat az eszközön figyelő ssh.

A fenti példában látható, hogy a gépem IP-címéről, különböző portokról, különböző IP-címekre, különböző portokon keresztül UDP-kapcsolatok (különböző állapotokban) jönnek létre. A parancs netstat változatával ellentétben az ss nem jeleníti meg az ezekért a kapcsolatokért felelős PID-t és parancsnevet. Még így is rengeteg információval rendelkezik a hibaelhárítás megkezdéséhez. Ha bármelyik port vagy URL gyanúsnak bizonyulna, most már tudja, hogy melyik IP-cím/port hozza létre a kapcsolatot. Ezzel már rendelkezik azokkal az információkkal, amelyek segíthetnek a hibaelhárítás korai szakaszában.

Szűrés a TCP állapotokkal

Az ss parancs egyik nagyon hasznos lehetősége a TCP állapotok (a kapcsolat “életszakaszai”) alapján történő szűrés. Az állapotok segítségével könnyebben szűrheted az ss parancs eredményeit. Az ss eszköz az összes szabványos TCP-állapottal együtt használható:

  • established

  • syn-sent

  • syn-recv

  • fin-wait-1

  • fin-wait-2

  • time-…wait

  • closed

  • close-wait

  • last-ack

  • listening

  • closing

A többi elérhető állapotazonosító, amit ss felismer, a következő:

  • all (az összes fenti állapot)

  • connected (az összes állapot a listen és closed kivételével)

  • synchronized (az összes connected állapot a syn-sent kivételével)

  • bucket (minisocketként fenntartott állapotok, például time-wait és

  • syn-recv)

  • big (szemben a bucket állapottal)

Az állapotokkal való munka szintaxisa egyszerű.

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

Ahol FILTER a használni kívánt állapot neve.

Tegyük fel, hogy a gépünkön lévő összes figyelő IPv4 foglalatot szeretnénk megtekinteni. Ehhez a parancs a következő lenne:

ss -4 state listening

A parancs eredménye a 4. ábrához hasonlóan nézne ki.

4. ábra: Az ss használata egy figyelő állapotszűrővel.

Show connected sockets from specific address

Egy praktikus feladat, amit az ss-re bízhatunk, hogy jelentse a más IP-címről létrejött kapcsolatokat. Tegyük fel, hogy meg akarjuk tudni, hogy a 192.168.1.139 IP-címen lévő gép csatlakozott-e/ hogyan csatlakozott a szerverünkhöz. Ehhez kiadhatod a következő parancsot:

ss dst 192.168.1.139

A kapott információ (5. ábra) tájékoztat a Netid-ről, az állapotról, a helyi IP:portról és a távoli IP:portról a socketről.

5. ábra: Egy távoli gép ssh-kapcsolatot létesített a helyi gépünkkel.

Munkára fogjuk

Az ss parancs elég sokat segíthet a Linux szerverrel vagy a hálózattal kapcsolatos problémák elhárításában. Érdemes időt szánni arra, hogy átolvassa az ss man oldalt (adja ki a man ss parancsot). De ezen a ponton legalább alapvetően meg kell értened, hogyan használhatod ezt a feltétlenül szükséges parancsot.

Tanulj többet a Linuxról a The Linux Foundation és az edX ingyenes “Introduction to Linux” kurzusán keresztül.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.