Android

Sådan kontrolleres der for at lytte til porte i Linux (porte i brug)

How-to: Sådan kontrollerer du olie på din bil – Tips og tricks til bilens motor | Opel Danmark

How-to: Sådan kontrollerer du olie på din bil – Tips og tricks til bilens motor | Opel Danmark

Indholdsfortegnelse:

Anonim

Ved fejlfinding af netværksforbindelse eller applikationsspecifikke problemer bør en af ​​de første ting, der skal kontrolleres, være, hvilke porte der faktisk bruges på dit system, og hvilket program der lytter til en bestemt port.

Denne artikel forklarer, hvordan man finder ud af, hvilke tjenester der lytter til, hvilke porte der bruger kommandoer netstat , ss og lsof . Instruktionerne gælder for alle Linux- og Unix-baserede operativsystemer som macOS.

Hvad er lyttehavn

Netværksport identificeres ved dens nummer, den tilknyttede IP-adresse og typen af ​​kommunikationsprotokol, såsom TCP eller UDP.

Lytteport er en netværksport, som en applikation eller proces lytter til, der fungerer som et kommunikationsendepunkt.

Hver lytteport kan være åben eller lukket (filtreret) ved hjælp af en firewall. Generelt er en åben port en netværksport, der accepterer indgående pakker fra fjerne placeringer.

Du kan ikke have to tjenester, der lytter til den samme port på den samme IP-adresse.

Hvis du f.eks. Kører en Apache-webserver, der lytter til porte 80 og 443 og du prøver at installere Nginx, vil det senere ikke starte, da HTTP- og HTTPS-porte allerede er i brug.

Tjek lytteporte med netstat

netstat er et kommandolinjeværktøj, der kan give oplysninger om netværksforbindelser.

For at liste alle TCP- eller UDP-porte, der lyttes til, inklusive de tjenester, der bruger portene og socket-status, skal du bruge følgende kommando:

sudo netstat -tunlp

De indstillinger, der bruges i denne kommando, har følgende betydning:

  • -t - Vis TCP-porte. -u - Vis UDP-porte. -n - Vis numeriske adresser i stedet for at løse værter. -l - Vis kun lytteporte. -p - Vis PID og navn på lytterens proces. Disse oplysninger vises kun, hvis du kører kommandoen som root- eller sudo-bruger.

Outputet ser sådan ud:

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 vigtige kolonner i vores sag er:

  • Proto - Den protokol, der bruges af soklen. Local Address - IP-adressen og det portnummer, som processen lytter til. PID/Program name - PID og processens navn.

sudo netstat -tnlp | grep:22

Outputet viser, at på denne maskinport anvendes 22 af 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 output er tomt, betyder det, at der ikke er noget, der lytter på porten.

Du kan også filtrere listen baseret på kriterier, for eksempel PID, protokol, tilstand osv.

netstat er forældet og erstattet med ss og ip , men stadig er det af de mest anvendte kommandoer til at kontrollere netværksforbindelser.

Tjek lytteporte med ss

ss er nyt netstat . Det mangler nogle af netstat funktionerne, men udsætter flere TCP-tilstande, og det er lidt hurtigere. Kommandoindstillingerne er for det meste de samme, så overgangen fra netstat til ss er ikke vanskelig.

For at få en liste over alle lytteporte med ss skriver du:

sudo ss -tunlp

Output er næsten det samme som rapporteret af 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))

Tjek lsof med lsof

lsof er et kraftfuldt kommandolinjeværktøj, der giver information om filer, der er åbnet af processer.

I Linux er alt en fil. Du kan tænke på en socket som en fil, der skriver til netværket.

Sådan får du en liste over alle lsof TCP-porte med lsof type:

sudo lsof -nP -iTCP -sTCP:LISTEN

De anvendte indstillinger er som følger:

  • -n - Konverter ikke portnumre til portnavne. -p - Løs ikke værtsnavne, vis numeriske adresser. -iTCP -sTCP:LISTEN - Vis kun netværksfiler 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 af outputkolonnernes navne er selvforklarende:

  • COMMAND , PID , USER - Navnet, pid'en og brugeren, der kører det program, der er knyttet til porten. NAME - Portnummeret.

For at finde ud af, hvilken proces der lytter på en bestemt port, for eksempel port 3306 du vil bruge:

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

Outputet viser, at port 3306 bruges af MySQL-serveren:

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

For mere information kan du besøge lsof man-siden og læse om alle andre kraftfulde muligheder for dette værktøj.

Konklusion

Vi har vist dig flere kommandoer, som du kan bruge til at kontrollere, hvilke porte der bruges på dit system, og hvordan du finder, hvilken proces der lytter på en bestemt port.

terminal