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