Android

Hoe te controleren op luisterpoorten in Linux (poorten in gebruik)

How to Check Listening Ports in Linux

How to Check Listening Ports in Linux

Inhoudsopgave:

Anonim

Bij het oplossen van netwerkconnectiviteit of applicatiespecifieke problemen moet een van de eerste dingen zijn om te controleren welke poorten daadwerkelijk op uw systeem worden gebruikt en welke applicatie naar een specifieke poort luistert.

In dit artikel wordt uitgelegd hoe u erachter kunt komen welke services op welke poorten luisteren met de opdrachten netstat , ss en lsof . De instructies zijn van toepassing op alle Linux- en Unix-gebaseerde besturingssystemen zoals macOS.

Wat is luisterpoort

Netwerkpoort wordt geïdentificeerd door het nummer, het bijbehorende IP-adres en het type communicatieprotocol zoals TCP of UDP.

Luisterpoort is een netwerkpoort waarop een toepassing of proces luistert en fungeert als communicatie-eindpunt.

Elke luisterpoort kan open of gesloten zijn (gefilterd) met behulp van een firewall. In het algemeen is een open poort een netwerkpoort die inkomende pakketten van externe locaties accepteert.

U kunt niet twee services hebben die naar dezelfde poort op hetzelfde IP-adres luisteren.

Als u bijvoorbeeld een Apache-webserver gebruikt die luistert op poorten 80 en 443 en u probeert Nginx te installeren, wordt het later niet gestart omdat de HTTP- en HTTPS-poorten al in gebruik zijn.

Controleer luisterpoorten met netstat

netstat is een opdrachtregelprogramma dat informatie kan verstrekken over netwerkverbindingen.

Gebruik de volgende opdracht om alle TCP- of UDP-poorten weer te geven waarnaar wordt geluisterd, inclusief de services die de poorten gebruiken en de socketstatus:

sudo netstat -tunlp

De opties die in deze opdracht worden gebruikt, hebben de volgende betekenis:

  • -t - TCP-poorten weergeven. -u - Toon UDP-poorten. -n - Toon numerieke adressen in plaats van het oplossen van hosts. -l - Toon alleen luisterpoorten. -p - Toon de PID en de naam van het luisterproces. Deze informatie wordt alleen weergegeven als u de opdracht uitvoert als root- of sudo-gebruiker.

De uitvoer ziet er ongeveer zo uit:

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

De belangrijke kolommen in ons geval zijn:

  • Proto - Het protocol dat door de socket wordt gebruikt. Local Address - Het IP-adres en poortnummer waarop het proces luistert. PID/Program name - De PID en de naam van het proces.

sudo netstat -tnlp | grep:22

Uit de uitvoer blijkt dat poort 22 op deze machine wordt gebruikt door de SSH-server:

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

Als de uitvoer leeg is, betekent dit dat er niets naar de poort luistert.

U kunt de lijst ook filteren op basis van criteria, bijvoorbeeld PID, protocol, status, enzovoort.

netstat is verouderd en vervangen door ss en ip , maar toch is het een van de meest gebruikte commando's om netwerkverbindingen te controleren.

Controleer luisterpoorten met ss

ss is nieuwe netstat . Het mist enkele van de netstat functies, maar onthult meer TCP-staten en is iets sneller. De opdrachtopties zijn meestal hetzelfde, dus de overgang van netstat naar ss is niet moeilijk.

Om een ​​lijst van alle luisterpoorten met ss , typ je:

sudo ss -tunlp

De output is bijna hetzelfde als die gerapporteerd door 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))

Controleer luisterpoorten met lsof

lsof is een krachtig opdrachtregelprogramma dat informatie biedt over bestanden die door processen zijn geopend.

In Linux is alles een bestand. Je kunt een socket zien als een bestand dat naar het netwerk schrijft.

Om een ​​lijst te krijgen van alle luister-TCP-poorten met lsof type:

sudo lsof -nP -iTCP -sTCP:LISTEN

De gebruikte opties zijn als volgt:

  • -n - Converteer geen poortnummers naar poortnamen. -p - Geen hostnamen oplossen, numerieke adressen weergeven. -iTCP -sTCP:LISTEN - Toon alleen netwerkbestanden met de status LISTEN van TCP.

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)

De meeste namen van de uitvoerkolommen spreken voor zich:

  • COMMAND , PID , USER - De naam, de pid en de gebruiker die het programma uitvoert dat aan de poort is gekoppeld. NAME - Het poortnummer.

Om te zoeken naar welk proces er wordt geluisterd op een bepaalde poort, bijvoorbeeld poort 3306 u:

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

Uit de uitvoer blijkt dat poort 3306 wordt gebruikt door de MySQL-server:

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

Voor meer informatie bezoek de lsof man-pagina en lees over alle andere krachtige opties van deze tool.

Conclusie

We hebben u verschillende opdrachten getoond die u kunt gebruiken om te controleren welke poorten op uw systeem worden gebruikt en hoe u kunt vinden welk proces naar een specifieke poort luistert.

terminal