How to use a Raspberry Pi ft. Dr Sally Le Page
Innholdsfortegnelse:
- Hva er lyttehavn
- Sjekk lytteportene med
netstat
- Sjekk lytteportene med
ss
- Sjekk lytteportene med
lsof
- Konklusjon
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.
terminalSlik sjekker du diskplass i Linux ved hjelp av df-kommandoen
Hvor mye plass har jeg igjen på harddisken min? På Linux-baserte systemer kan du bruke df-kommandoen til å få en detaljert rapport om systemets diskplassbruk.
Slik sjekker du Linux-versjonen
I denne opplæringen viser vi deg hvordan du kan sjekke hvilken Linux-distribusjon og -versjon som er installert på systemet ditt ved å bruke kommandolinjen.
Slik sjekker du kjerneversjonen i Linux
Kjernen er kjernekomponenten i et operativsystem. I denne opplæringen viser vi deg flere forskjellige måter å finne ut hvilken versjon av Linux-kjernen som kjører på systemet ditt.