Android

Como verificar se há portas de escuta no linux (portas em uso)

Wireshark - Análise de Captura com Problemas na Rede

Wireshark - Análise de Captura com Problemas na Rede

Índice:

Anonim

Ao solucionar problemas de conectividade de rede ou problemas específicos de aplicativos, uma das primeiras coisas a verificar deve ser quais portas estão realmente em uso no sistema e qual aplicativo está escutando em uma porta específica.

Este artigo explica como descobrir quais serviços estão atendendo em quais portas usando os comandos netstat , ss e lsof . As instruções são aplicáveis ​​a todos os sistemas operacionais baseados em Linux e Unix, como o macOS.

O que é porta de escuta

A porta de rede é identificada por seu número, o endereço IP associado e o tipo de protocolo de comunicação, como TCP ou UDP.

Porta de escuta é uma porta de rede na qual um aplicativo ou processo escuta, atuando como um terminal de comunicação.

Cada porta de escuta pode ser aberta ou fechada (filtrada) usando um firewall. Em termos gerais, uma porta aberta é uma porta de rede que aceita pacotes recebidos de locais remotos.

Você não pode ter dois serviços ouvindo a mesma porta no mesmo endereço IP.

Por exemplo, se você estiver executando um servidor da Web Apache que escuta nas portas 80 e 443 e tentar instalar o Nginx, a falha posterior será iniciada porque as portas HTTP e HTTPS já estão em uso.

Verificar portas de escuta com netstat

netstat é uma ferramenta de linha de comando que pode fornecer informações sobre conexões de rede.

Para listar todas as portas TCP ou UDP que estão sendo ouvidas, incluindo os serviços que usam as portas e o status do soquete, use o seguinte comando:

sudo netstat -tunlp

As opções usadas neste comando têm o seguinte significado:

  • -t - Mostra portas TCP. -u - Mostra portas UDP. -n - Mostra endereços numéricos em vez de resolver hosts. -l - Mostra apenas portas de escuta. -p - Mostra o PID e o nome do processo do ouvinte. Esta informação é mostrada apenas se você executar o comando como usuário root ou sudo.

A saída será mais ou menos assim:

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

As colunas importantes em nosso caso são:

  • Proto - O protocolo usado pelo soquete. Local Address - o endereço IP e o número da porta na qual o processo escuta. PID/Program name - O PID e o nome do processo.

sudo netstat -tnlp | grep:22

A saída mostra que nesta porta da máquina 22 é usada pelo servidor SSH:

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

Se a saída estiver vazia, significa que nada está escutando na porta.

Você também pode filtrar a lista com base em critérios, por exemplo, PID, protocolo, estado e assim por diante.

netstat é obsoleto e substituído por ss e ip , mas ainda é um dos comandos mais usados ​​para verificar as conexões de rede.

Verificar portas de escuta com ss

ss é o novo netstat . Falta alguns dos recursos do netstat , mas expõe mais estados TCP e é um pouco mais rápido. As opções de comando são basicamente as mesmas, portanto, a transição de netstat para ss não é difícil.

Para obter uma lista de todas as portas de escuta com ss , digite:

sudo ss -tunlp

A saída é quase a mesma que a relatada pelo 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))

Verificar portas de escuta com lsof

lsof é um poderoso utilitário de linha de comando que fornece informações sobre arquivos abertos por processos.

No Linux, tudo é um arquivo. Você pode pensar em um soquete como um arquivo que grava na rede.

Para obter uma lista de todas as portas TCP que estão escutando com o tipo lsof :

sudo lsof -nP -iTCP -sTCP:LISTEN

As opções usadas são as seguintes:

  • -n - Não converte números de porta em nomes de porta. -p - Não resolve nomes de host, mostra endereços numéricos. -iTCP -sTCP:LISTEN - Mostra apenas arquivos de rede com o estado 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)

A maioria dos nomes das colunas de saída é auto-explicativa:

  • COMMAND , PID , USER - O nome, o pid e o usuário executando o programa associado à porta. NAME - O número da porta.

Para descobrir qual processo está escutando em uma porta específica, por exemplo, a porta 3306 você usaria:

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

A saída mostra que a porta 3306 é usada pelo servidor MySQL:

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

Para obter mais informações, visite a página de manual lsof e leia sobre todas as outras opções poderosas dessa ferramenta.

Conclusão

Mostramos vários comandos que você pode usar para verificar quais portas estão em uso no seu sistema e como encontrar o processo que escuta em uma porta específica.

terminal