Azure Friday | Java in Azure Functions
Obsah:
- Co je port pro poslech
- Zkontrolujte poslouchající porty pomocí
netstat
- Zkontrolujte poslouchající porty pomocí
ss
- Zkontrolujte
lsof
poslouchající porty - Závěr
Při řešení problémů s připojením k síti nebo s problémy souvisejícími s konkrétní aplikací by mělo být jednou z prvních věcí, které je třeba zkontrolovat, jaké porty se ve vašem systému skutečně používají a která aplikace poslouchá na konkrétním portu.
Tento článek vysvětluje, jak zjistit, které služby poslouchají na kterých portech pomocí příkazů
netstat
,
ss
a
lsof
. Pokyny jsou použitelné pro všechny operační systémy založené na Linuxu a Unixu, jako je MacOS.
Co je port pro poslech
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.
Port pro poslouchání je síťový port, na kterém aplikace nebo proces poslouchá, fungující jako koncový bod komunikace.
Každý port pro poslech lze otevřít nebo zavřít (filtrovat) pomocí brány firewall. Obecně řečeno, otevřený port je síťový port, který přijímá příchozí pakety ze vzdálených umístění.
Nemůžete mít dvě služby, které poslouchají stejný port na stejné IP adrese.
Například pokud používáte webový server Apache, který poslouchá 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 poslouchající 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, které jsou poslouchány, 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 TCP porty.-u
- Zobrazit porty UDP.-n
- Místo rozlišení hostitelů zobrazí číselné adresy.-l
- Zobrazit pouze porty pro poslech.-p
- Zobrazit PID a název procesu posluchače. Tato informace se zobrazí, pouze pokud spustíte příkaz jako uživatel root nebo sudo.
Výstup bude vypadat asi 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
Důležité sloupce v našem případě jsou:
-
Proto
- Protokol používaný soketem.Local Address
- IP adresa a číslo portu, na kterém proces poslouchá.PID/Program name
- PID a název procesu.
sudo netstat -tnlp | grep:22
Výstup ukazuje, že na tomto stroji port 22 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 podle kritérií, například PID, protokolu, stavu atd.
netstat
je zastaralý a nahrazen
ss
a
ip
, ale stále je to nejpoužívanější příkazy ke kontrole síťových připojení.
Zkontrolujte poslouchající porty pomocí
ss
ss
je nový
netstat
. Postrádá některé funkce
netstat
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í obtížný.
Chcete-li získat seznam všech naslouchacích portů s
ss
které byste zadali:
sudo ss -tunlp
Výstup je téměř stejný jako výstup uváděný společností
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
lsof
poslouchající porty
lsof
je výkonný nástroj příkazového řádku, který poskytuje informace o souborech otevřených procesy.
V Linuxu je všechno soubor. Soket můžete považovat za soubor, který se zapisuje do sítě.
Chcete-li získat seznam všech naslouchajících portů TCP typu
lsof
:
sudo lsof -nP -iTCP -sTCP:LISTEN
Používané možnosti jsou následující:
-
-n
- Nepřevádějte čísla portů na názvy portů.-p
- Nerozlišujte názvy hostitelů, nezobrazujte čí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
- Jméno, pid a uživatel, který spouští program spojený s portem.NAME
- číslo portu.
Chcete-li zjistit, jaký proces poslouchá na konkrétním portu, například port
3306
který byste použili:
sudo lsof -nP -iTCP:3306 -sTCP:LISTEN
Výstup ukazuje, že port
3306
je používán serverem MySQL:
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ů, pomocí kterých můžete zkontrolovat, jaké porty se používají ve vašem systému a jak zjistit, jaký proces poslouchá na konkrétním portu.
terminálJak zkontrolovat (vyhledat) otevřené porty v Linuxu
Tento článek popisuje několik přístupů k zjištění, jaké porty jsou v systému Linux otevřeny ven.
Jak zkontrolovat místo na disku v Linuxu pomocí příkazu df
Kolik místa mám na pevném disku? V systémech se systémem Linux můžete pomocí příkazu df získat podrobnou zprávu o využití místa na disku systému.
Jak zkontrolovat verzi jádra v Linuxu
Jádro je základní součástí operačního systému. V tomto tutoriálu vám ukážeme několik různých způsobů, jak zjistit, jakou verzi Linuxového jádra ve vašem systému běží.