Comando ss no Linux (investigar a rede) [Guia Básico]

O comando ss no Linux é extremamente útil para investigar os sockets, fornecendo várias informações sobre a rede. Ele é a evolução do comando netstat do antigo Net-tools. É importante que se entenda que um socket pode ser uma conexão de rede, bem como um socket do tipo Unix, que é um arquivo especial que atua como “ponte de comunicação” entre dois programas.

Suas opções mais comuns são:

  • -a: lista todos sockets;
  • -r: resolve os endereços IPs e portas por nomes de serviços;
  • -n: não resolve os endereços IPs e portas para serviços;
  • -l: lista somente as portas abertas (LISTEN);
  • -e: mostra informações detalhadas sobre o socket;
  • -m: mostra a alocação de memória do socket;
  • -p: mostra o processo dono do socket;
  • -i: mostra estatísticas do TCP sobre o socket;
  • -K: força o fechamento de um socket;
  • -s: mostra as estatísticas da rede;
  • -t: filtra somente os pacotes TCP;
  • -u: filtra somente os pacotes UDP;
  • -4: filtra somente os pacotes IPv4;
  • -6: filtra somente os pacotes IPv6;

Algumas opções podem ser combinadas para formar um determinado resultado.

Exemplos:

Para ver as estatísticas da rede:

$ ss -s
Total: 1020
TCP:   25 (estab 2, closed 1, orphaned 0, timewait 1)
Transport Total     IP        IPv6
RAW        1         0         1        
UDP        9         6         3        
TCP        24        22        2        
INET       34        28        6        
FRAG       0         0         0        

Para ver as portas TCP abertas (em LISTENING):

$ ss -lt
State Recv-Q  Send-Q   Local Address:Port     Peer Address:Port  LISTEN 0       128    127.0.0.53%lo:domain   0.0.0.0:*  LISTEN     0       128    0.0.0.0:ssh            0.0.0.0:*  LISTEN     0       128    [::]:ssh               [::]:*                  

Para mostrar as portas TCP e UDP abertas e os processos donos do sockets. Para mostrar os processos, o usuário precisa ser o administrador root:

# ss -ltpu
Netid State   Local Address
udp   UNCONN  127.0.0.1:323   users:(("chronyd",pid=20898,fd=5))
tcp   LISTEN  0.0.0.0:ssh     users:(("sshd",pid=9857,fd=3))

Mostra todas as conexões estabelecidas na porta (22) do ssh:

$ ss -o state established '( dport = :ssh or sport = :ssh )'
Netid   Recv-Q  Send-Q  Local Address:Port  Peer Address:Port           
tcp       0      0     10.211.55.63:ssh    10.211.55.2:64749  timer:(keepalive,104min,0)

Esse comando é útil para diagnosticar os seguintes problemas:

  • Verificar quais serviços de rede que estão em execução (-l)
  • Verificar a quantidade de memória consumida por um socket (-m)
  • Verificar os processos donos dos sockets (-p)
  • Verificar as conexões estabelecidas (-o state established)
  • Verificar o volume de dados trafegado em uma conexão TCP (-i)

Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.

Gostou? Compartilhe