Como monitorar conexões de rede no Linux com ss

Os utilitários do Linux são um salva-vidas para administradores de servidor quando se trata de solucionar problemas e corrigir problemas de rede. Antes, os administradores usavam o comando netstat para visualizar estatísticas de rede e outras informações relacionadas a soquetes no Linux. Mas este comando agora foi preterido por uma ferramenta melhor.

O comando ss substituiu netstat, pois fornece informações mais detalhadas do que seu predecessor. Este artigo demonstrará como você pode usar ss para extrair informações relacionadas ao soquete de seu sistema.

O que é o comando ss?

O comando ss, abreviação de estatísticas de soquete, é um utilitário Linux que exibe informações relacionadas às conexões de rede em um formato detalhado e legível. Você pode usar ss para solucionar e localizar problemas com sua rede, pois ele fornece detalhes completos sobre as conexões.

Como mencionado antes, o ss substituiu o netstat, que era o utilitário original para listar estatísticas de soquetes no Linux. O comando ss é fácil de usar, fornece mais informações e oferece resultados rápidos e precisos.

Como usar ss no Linux

Usando ss, você pode listar todas as conexões de soquete em seu sistema. Além disso, também é possível filtrar as conexões com base no tipo, endereço de destino e número da porta.

Sintaxe Básica

A sintaxe básica do comando ss é:

 ss options

… onde options é o sinalizador que você pode usar para invocar as funções do comando.

O comando ss mais simples exibe uma lista de todas as conexões estabelecidas, independentemente do tipo de conexão.

 ss

Resultado:

Observe na imagem acima, a coluna Estado contém apenas um único valor, ou seja, ESTAB, que denota uma conexão estabelecida.

Você encontrará os seguintes cabeçalhos de coluna na saída:

  • Netid : Isso denota o tipo de soquete usado para a conexão. Os valores possíveis são TCP, UDP, u_seq (sequência Unix) e u_str (string Unix).
  • Estado : a coluna Estado exibe o status da conexão. Você encontrará valores como ESTAB, UNCONN e LISTEN, que representam estabelecido, desconectado e ouvindo, respectivamente.
  • Recv-Q : O número de pacotes recebidos presentes na fila.
  • Send-Q : O número de pacotes enviados na fila.
  • Endereço local e porta : o endereço local da máquina do usuário e o número da porta.
  • Endereço e porta de mesmo nível : o endereço da máquina de destino e o número da porta.

Obtenha uma lista de todos os soquetes

Use o sinalizador -a para exibir todos os soquetes presentes na rede, ouvindo ou não.

 ss -a

Resultado:

Liste todos os soquetes de escuta atuais

Para recuperar apenas as informações relacionadas aos soquetes que estão escutando no momento, use o sinalizador -l com o comando. O -l significa Ouvir .

 ss -l

Ss exibirá todos os soquetes de escuta ativos em seu dispositivo ou rede. Observe que quase todos os soquetes na saída têm um estado desconectado.

Assim que um soquete de escuta obtém uma conexão de entrada, ele cria um soquete filho e o usa para estabelecer a conexão. Você pode então usar o utilitário Linux tcpdump para monitorar e filtrar pacotes em sua rede.

Exibir conexões TCP, UDP e Unix

No Linux, existem vários tipos de soquetes, incluindo soquetes TCP, UDP e Unix. Você pode listar todas as conexões pertencentes a um tipo de soquete específico com ss.

Para listar todos os soquetes TCP em seu computador:

 ss -t

Resultado:

O sinalizador -u exibirá uma lista de todos os soquetes UDP:

 ss -u

Resultado:

Para recuperar uma lista de soquetes Unix usando ss, use o sinalizador -x :

 ss -x

Resultado:

Por padrão, ss exibe apenas os soquetes conectados. Para obter uma lista de todos os soquetes, independentemente do estado da conexão, use a sinalização -a com o comando:

 ss -ta
ss -ua
ss -xa

Filtrar conexões TCP usando estado

Os soquetes TCP têm vários estados que você pode usar para filtrar os resultados. Você pode usar os seguintes estados de soquete para filtrar as conexões com ss: estabelecido, fechado, ouvindo, fechando, tudo, conectado, sincronizado, balde, grande, tempo de espera, etc.

O formato básico para filtrar conexões TCP usando o estado de conexão é:

 ss -t state filter

… onde filtro é o estado das conexões, por exemplo, estabelecidas.

Relacionado: Termos comuns de rede doméstica e o que eles significam

Listar conexões IPv4 e IPv6

Você pode usar os sinalizadores -4 e -6 para obter uma lista de soquetes IPv4 e IPv6 em seu dispositivo:

 ss -4
ss -6

Resultado:

Você também pode usar o método de estado para filtrar soquetes IPv4 e IPv6.

 ss -4 state established
ss -6 state established

Filtrar conexões usando o número da porta

Você pode especificar os valores dport e sport no comando ss para filtrar as conexões usando o número da porta e o protocolo. As opções dport e sport representam a porta de destino e a porta de origem, respectivamente.

Para obter informações relacionadas às conexões que possuem a porta de origem 39700 ou a porta de destino https :

 ss -ta '( dport = :https or sport = :39700)'

Resultado:

Você também pode usar o método de estado em conjunto com o filtro de porta para obter resultados precisos:

 ss -ta state established '( dport = :https or sport = :https )'

Listar soquetes brutos usando ss

Você pode usar o sinalizador -w ou –raw para exibir sockets raw em seu dispositivo:

 ss -w
ss --raw

Resultado:

Mostrar conexões com um dispositivo específico

Usando ss, você também pode exibir uma lista de conexões com um endereço de destino específico.

 ss dst ipaddress

… onde ipaddress é o endereço do dispositivo de destino.

Por exemplo:

Exibir IDs de processo das conexões

Ao solucionar problemas em uma rede, saber o ID do processo da conexão problemática pode ajudar muito.

Para exibir os PIDs associados às conexões TCP:

 ss -t -p

Ss também exibe o nome do aplicativo que estabeleceu a conexão.

Além disso, você pode obter informações mais detalhadas sobre o processo usando o comando ps .

Obtenha um resumo das estatísticas da rede

O sinalizador -s permite que um usuário visualize o resumo geral de sua rede ou dispositivo. O resumo inclui o número total de conexões, o número e o tipo de tomadas, etc.

 ss -s

Resultado:

Saiba mais: Por que você deve usar ferramentas de rede Linux no WSL

Envie a saída para um arquivo

Você também pode salvar a saída do comando ss em um arquivo para referência posterior usando o operador > output.

 ss > output.txt

Resultado:

Implementando ss com grep

Se você deseja filtrar os dados fornecidos por ss, mas não consegue se lembrar do formato do comando, você pode canalizar grep com ss para obter os resultados desejados.

Por exemplo, para obter uma lista de todas as conexões TCP estabelecidas usando ss e grep:

 ss -t | grep ESTAB

Resultado:

Monitorando conexões de rede no Linux

No Linux, há um comando para tudo. Desde a criação de arquivos até o monitoramento de redes, você escolhe. Mas com essa enorme coleção de utilitários vem a questão de qual é o melhor.

Além do lado do software de um computador, os usuários também devem estar cientes das especificações de hardware de seu sistema. Vários comandos estão disponíveis que permitem ao usuário extrair facilmente informações relacionadas ao seu sistema e hardware.