Android

Slik sjekker du for lytteporter i Linux (porter i bruk)

How to use a Raspberry Pi ft. Dr Sally Le Page

How to use a Raspberry Pi ft. Dr Sally Le Page

Innholdsfortegnelse:

Anonim

Når du feilsøker nettverkstilkoblinger eller applikasjonsspesifikke problemer, bør en av de første tingene som skal kontrolleres være hvilke porter som faktisk er i bruk på systemet ditt, og hvilket program som lytter på en bestemt port.

Denne artikkelen forklarer hvordan du finner ut hvilke tjenester som lytter på hvilke porter ved å bruke kommandoene netstat , ss og lsof . Instruksjonene gjelder for alle Linux- og Unix-baserte operativsystemer som macOS.

Hva er lyttehavn

Nettverksport identifiseres av nummeret, den tilknyttede IP-adressen og typen kommunikasjonsprotokoll som TCP eller UDP.

Lytteport er en nettverksport som en applikasjon eller prosess lytter til, som fungerer som et kommunikasjonsendepunkt.

Hver lytteport kan være åpen eller lukket (filtrert) ved hjelp av en brannmur. Generelt sett er en åpen port en nettverksport som godtar innkommende pakker fra eksterne steder.

Du kan ikke ha to tjenester som lytter til den samme porten på samme IP-adresse.

Hvis du for eksempel kjører en Apache-webserver som lytter på porter 80 og 443 og du prøver å installere Nginx, vil ikke de senere starte fordi HTTP- og HTTPS-portene allerede er i bruk.

Sjekk lytteportene med netstat

netstat er et kommandolinjeverktøy som kan gi informasjon om nettverkstilkoblinger.

Følg kommandoen for å liste opp alle TCP- eller UDP-porter som blir lyttet til, inkludert tjenestene som bruker portene og socket-statusen:

sudo netstat -tunlp

Alternativene som brukes i denne kommandoen har følgende betydning:

  • -t - Vis TCP-porter. -u - Vis UDP-porter. -n - Vis numeriske adresser i stedet for å løse verter. -l - Vis bare lytteporter. -p - Vis PID og navn på lytterens prosess. Denne informasjonen vises bare hvis du kjører kommandoen som root- eller sudo-bruker.

Utgangen vil se slik ut:

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 viktige kolonnene i vårt tilfelle er:

  • Proto - Protokollen som brukes av kontakten. Local Address - IP-adressen og portnummeret som prosessen lytter til. PID/Program name - PID og prosessens navn.

sudo netstat -tnlp | grep:22

Utgangen viser at på denne maskinporten 22 brukes av SSH-serveren:

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

Hvis utgangen er tom betyr det at ingenting hører på porten.

Du kan også filtrere listen basert på kriterier, for eksempel PID, protokoll, tilstand og så videre.

netstat er foreldet og erstattet med ss og ip , men likevel er det av de mest brukte kommandoene for å sjekke nettverkstilkoblinger.

Sjekk lytteportene med ss

ss er ny netstat . Den mangler noen av netstat funksjonene, men utsetter flere TCP-tilstander, og den er litt raskere. Kommandoalternativene er stort sett de samme, så overgangen fra netstat til ss er ikke vanskelig.

For å få en liste over alle lytteporter med ss du inn:

sudo ss -tunlp

Produksjonen er nesten den samme som rapportert av 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))

Sjekk lytteportene med lsof

lsof er et kraftig kommandolinjeværktøy som gir informasjon om filer som er åpnet av prosesser.

I Linux er alt en fil. Du kan tenke på en socket som en fil som skriver til nettverket.

Slik får du en liste over alle lyttende TCP-porter med lsof type:

sudo lsof -nP -iTCP -sTCP:LISTEN

Alternativene som brukes er som følger:

  • -n - Ikke konverter portnumre til portnavn. -p - Ikke løse vertsnavn, vis numeriske adresser. -iTCP -sTCP:LISTEN - Vis bare nettverksfiler med TCP-tilstand 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)

De fleste av utdatakolonnnavnene er selvforklarende:

  • COMMAND , PID , USER - Navnet, pid og brukeren som kjører programmet tilknyttet porten. NAME - Portnummeret.

For å finne hvilken prosess som lytter på en bestemt port, for eksempel port 3306 , vil du bruke:

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

Utdataene viser at port 3306 brukes av MySQL-serveren:

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

For mer informasjon, besøk lsof man-siden og les om alle andre kraftige alternativer for dette verktøyet.

Konklusjon

Vi har vist deg flere kommandoer som du kan bruke til å sjekke hvilke porter som er i bruk på systemet ditt, og hvordan du finner hvilken prosess som lytter på en bestemt port.

terminal