GNU/Linux >> Znalost Linux >  >> Linux

Jak zkontrolovat poslechové porty v Linuxu (používané porty)

Při odstraňování problémů se síťovou konektivitou nebo problémy se specifickými aplikacemi by jednou z prvních věcí, které byste měli zkontrolovat, mělo být, jaké porty se ve vašem systému skutečně používají a která aplikace na konkrétním portu naslouchá.

Tento článek vysvětluje, jak používat netstat , ss a lsof příkazy ke zjištění, které služby naslouchají na kterých portech. Pokyny jsou použitelné pro všechny operační systémy založené na Linuxu a Unixu, jako je macOS.

Co je port poslechu č.

Síťový port je identifikován svým číslem, přidruženou IP adresou a typem komunikačního protokolu, jako je TCP nebo UDP.

Listening port je síťový port, na kterém aplikace nebo proces naslouchá a funguje jako komunikační koncový bod.

Každý naslouchací port lze otevřít nebo zavřít (filtrovat) pomocí firewallu. Obecně řečeno, otevřený port je síťový port, který přijímá příchozí pakety ze vzdálených míst.

Nemůžete mít dvě služby naslouchající stejnému portu na stejné IP adrese.

Pokud například provozujete webový server Apache, který naslouchá na portech 80 a 443 a pokusíte se nainstalovat Nginx, později se nepodaří spustit, protože porty HTTP a HTTPS jsou již používány.

Zkontrolujte naslouchací porty pomocí netstat #

netstat je nástroj příkazového řádku, který může poskytovat informace o síťových připojeních.

Chcete-li zobrazit seznam všech portů TCP nebo UDP, na kterých se naslouchá, včetně služeb využívajících porty a stavu soketu, použijte následující příkaz:

sudo netstat -tunlp

Možnosti použité v tomto příkazu mají následující význam:

  • -t - Zobrazit porty TCP.
  • -u – Zobrazit porty UDP.
  • -n - Zobrazovat číselné adresy namísto rozlišení hostitelů.
  • -l - Zobrazit pouze naslouchající porty.
  • -p - Zobrazit PID a název procesu posluchače. Tyto informace se zobrazí pouze v případě, že příkaz spustíte jako root nebo sudouser.

Výstup bude vypadat nějak takto:

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  

V našem případě jsou důležité sloupce:

  • Proto - Protokol používaný soketem.
  • Local Address - IP adresa a číslo portu, na kterém proces naslouchá.
  • PID/Program name - PID a název procesu.

Pokud chcete výsledky filtrovat, použijte grep příkaz. Chcete-li například zjistit, který proces naslouchá na portu TCP 22, zadejte:

sudo netstat -tnlp | grep :22

Výstup ukazuje, že port 22 na tomto počítači používá server SSH:

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

Pokud je výstup prázdný, znamená to, že na portu nic neposlouchá.

Seznam můžete také filtrovat na základě kritérií, například PID, protokolu, stavu atd.

netstat je zastaralý a nahrazený ss a ip , ale přesto je to nejpoužívanější příkaz pro kontrolu síťových připojení.

Zkontrolujte naslouchací porty pomocí ss #

ss je nový netstat . Chybí mu část netstat funkce, ale odhaluje více stavů TCP a je o něco rychlejší. Možnosti příkazů jsou většinou stejné, takže přechod z netstat na ss není těžké.

Chcete-li získat seznam všech naslouchacích portů pomocí ss byste napsali:

sudo ss -tunlp

Výstup je téměř stejný jako výstup hlášený 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))

Zkontrolujte naslouchací porty pomocí lsof #

lsof je výkonný nástroj příkazového řádku, který poskytuje informace o souborech otevřených procesy.

V Linuxu je vše soubor. Soket si můžete představit jako soubor, který zapisuje do sítě.

Chcete-li získat seznam všech naslouchacích TCP portů pomocí lsof typ:

sudo lsof -nP -iTCP -sTCP:LISTEN

Použité možnosti jsou následující:

  • -n - Nepřevádějte čísla portů na názvy portů.
  • -p - Nepřekládejte názvy hostitelů, ukazujte číselné adresy.
  • -iTCP -sTCP:LISTEN - Zobrazit pouze síťové soubory se stavem TCP 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)

Většina názvů výstupních sloupců je samovysvětlující:

  • COMMAND , PID , USER – Název, PID a uživatel spouštějící program spojený s portem.
  • NAME – Číslo portu.

Chcete-li zjistit, jaký proces naslouchá na konkrétním portu, například port 3306 byste použili:

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

Výstup ukazuje, že MySQL server používá port 3306 :

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

Pro více informací navštivte manuálovou stránku lsof a přečtěte si o všech dalších výkonných možnostech tohoto nástroje.

Závěr č.

Ukázali jsme vám několik příkazů, které můžete použít ke kontrole, jaké porty se ve vašem systému používají, a jak zjistit, jaký proces naslouchá na konkrétním portu.

Pokud máte nějaké dotazy nebo připomínky, zanechte prosím níže komentář.


Linux
  1. Jak používat Su Command v Linuxu

  2. Zkontrolujte použití portu v Linuxu

  3. jak používat netstat na konkrétním portu v Linuxu

  1. Jak používat BusyBox na Linuxu

  2. Jak používat pokročilý rsync pro velké zálohy Linuxu

  3. Jak používat systemd-nspawn pro obnovu systému Linux

  1. Jak používám cron v Linuxu

  2. Jak zkontrolovat otevřené porty v Linuxu pomocí netstat, lsof a nmap

  3. Zkontrolujte, která služba na daném portu linux naslouchá