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 -sTotal: 1020TCP: 25 (estab 2, closed 1, orphaned 0, timewait 1)Transport Total IP IPv6RAW 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 -ltState 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.