Android

Kako provjeriti slušanje portova u Linuxu (portovi koji se koriste)

You Bet Your Life: Secret Word - Door / Paper / Fire

You Bet Your Life: Secret Word - Door / Paper / Fire

Sadržaj:

Anonim

Kada rješavate mrežno povezivanje ili probleme vezane uz aplikaciju, jedna od prvih stvari koja treba provjeriti treba biti koji se portovi zapravo koriste na vašem sustavu, a koji aplikacija sluša na određenom priključku.

Ovaj članak objašnjava kako otkriti koje usluge slušaju na kojim portovima koriste netstat , ss i lsof . Upute su primjenjive za sve operativne sustave temeljene na Linuxu i Unixu, poput macOS-a.

Što je luka za slušanje

Mrežni port prepoznaje se po njegovom broju, pridruženoj IP adresi i vrsti komunikacijskog protokola poput TCP ili UDP.

Luka za slušanje je mrežni priključak na kojem aplikacija ili proces sluša, koji djeluje kao krajnja točka komunikacije.

Svaki ulaz za slušanje može se otvoriti ili zatvoriti (filtrirati) pomoću vatrozida. Općenito govoreći, otvoreni port je mrežni port koji prihvaća dolazne pakete s udaljenih mjesta.

Ne mogu dvije usluge slušati isti port na istoj IP adresi.

Na primjer, ako koristite web-poslužitelj Apache koji sluša portove 80 i 443 i pokušate instalirati Nginx, kasnije se neće uspjeti pokrenuti jer su HTTP i HTTPS portovi već u upotrebi.

Provjerite portove za slušanje s netstat

netstat je alat naredbenog retka koji može pružiti informacije o mrežnim vezama.

Za popis svih TCP ili UDP portova koji se slušaju, uključujući usluge koje koriste portove i status utičnice, koristite sljedeću naredbu:

sudo netstat -tunlp

Opcije korištene u ovoj naredbi imaju sljedeće značenje:

  • -t - Prikaži TCP portove. -u - Prikaži UDP portove. -n - prikazuje numeričke adrese umjesto rješavanja hostova. -l - Prikaži samo portove za slušanje. -p - Prikaži PID i ime procesa slušatelja. Te su informacije prikazane samo ako naredbu izvodite kao root ili sudo korisnik.

Izlaz će izgledati ovako:

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 445/sshd tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 929/master tcp6 0 0:::3306:::* LISTEN 534/mysqld tcp6 0 0:::80:::* LISTEN 515/apache2 tcp6 0 0:::22:::* LISTEN 445/sshd tcp6 0 0:::25:::* LISTEN 929/master tcp6 0 0:::33060:::* LISTEN 534/mysqld udp 0 0 0.0.0.0:68 0.0.0.0:* 966/dhclient

Važni stupci u našem slučaju su:

  • Proto - protokol koji koristi socket. Local Address - IP adresa i broj porta na kojem sluša proces. PID/Program name - PID i naziv postupka.

sudo netstat -tnlp | grep:22

Izlaz pokazuje da na ovom računalnom priključku 22 koristi SSH poslužitelj:

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 445/sshd tcp6 0 0:::22:::* LISTEN 445/sshd

Ako je izlaz prazan, to znači da se na priključku ništa ne sluša.

Popis možete filtrirati i na temelju kriterija, na primjer, PID, protokol, stanje i tako dalje.

netstat je zastario i zamijenjen je ss i ip , ali ipak se radi o najkorištenijim naredbama za provjeru mrežnih veza.

Provjerite portove za slušanje ss

ss je novi netstat . Nedostaju neke značajke netstat ali otkriva više TCP stanja i malo je brži. Opcije naredbi uglavnom su iste, tako da prijelaz s netstat na ss nije težak.

Da biste dobili popis svih portova za slušanje sa ss biste:

sudo ss -tunlp

Izlaz je gotovo isti kao onaj koji je izvijestio netstat :

State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd", pid=445, fd=3)) LISTEN 0 100 0.0.0.0:25 0.0.0.0:* users:(("master", pid=929, fd=13)) LISTEN 0 128 *:3306 *:* users:(("mysqld", pid=534, fd=30)) LISTEN 0 128 *:80 *:* users:(("apache2", pid=765, fd=4), ("apache2", pid=764, fd=4), ("apache2", pid=515, fd=4)) LISTEN 0 128:22:* users:(("sshd", pid=445, fd=4)) LISTEN 0 100:25:* users:(("master", pid=929, fd=14)) LISTEN 0 70 *:33060 *:* users:(("mysqld", pid=534, fd=33))

Provjerite lsof slušanje s lsof

lsof je moćan alat naredbenog retka koji pruža informacije o datotekama koje su otvorili procesi.

U Linuxu je sve datoteka. Socket možete razmišljati kao datoteku koja piše u mrežu.

Da biste dobili popis svih slušajućih TCP portova s lsof :

sudo lsof -nP -iTCP -sTCP:LISTEN

Korištene su mogućnosti sljedeće:

  • -n - Ne pretvarajte brojeve porta u imena priključaka. -p - Nemojte rješavati imena računala, prikazivati ​​numeričke adrese. -iTCP -sTCP:LISTEN - Prikažite samo mrežne datoteke sa TCP stanjem LISTEN.

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 445 root 3u IPv4 16434 0t0 TCP *:22 (LISTEN) sshd 445 root 4u IPv6 16445 0t0 TCP *:22 (LISTEN) apache2 515 root 4u IPv6 16590 0t0 TCP *:80 (LISTEN) mysqld 534 mysql 30u IPv6 17636 0t0 TCP *:3306 (LISTEN) mysqld 534 mysql 33u IPv6 19973 0t0 TCP *:33060 (LISTEN) apache2 764 www-data 4u IPv6 16590 0t0 TCP *:80 (LISTEN) apache2 765 www-data 4u IPv6 16590 0t0 TCP *:80 (LISTEN) master 929 root 13u IPv4 19637 0t0 TCP *:25 (LISTEN) master 929 root 14u IPv6 19638 0t0 TCP *:25 (LISTEN)

Većina imena izlaznih stupaca ne objašnjava samo sebe:

  • COMMAND , PID , USER - naziv, pid i korisnik koji izvodi program povezan s portom. NAME - Broj porta.

Da biste pronašli koji se proces sluša na određenom priključku, na primjer, port 3306 , upotrijebili biste:

sudo lsof -nP -iTCP:3306 -sTCP:LISTEN

Izlaz pokazuje da port 3306 koristi MySQL poslužitelj:

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld 534 mysql 30u IPv6 17636 0t0 TCP *:3306 (LISTEN)

Za više informacija posjetite lsof man stranicu i pročitajte o svim ostalim moćnim opcijama ovog alata.

Zaključak

Pokazali smo vam nekoliko naredbi pomoću kojih možete provjeriti koji se portovi koriste u vašem sustavu i kako pronaći proces koji sluša na određenom priključku.

terminal