O comando ss representa uma alternativa moderna ao clássico netstat. No ambiente Linux, ele permite monitorar e obter informações sobre suas conexões de rede. Descubra como utilizar esta ferramenta.
O comando ss como substituto do netstat
Como substituto para o antigo comando netstat, o comando ss oferece detalhes sobre como seu computador se comunica com outros dispositivos, redes e serviços.
O ss apresenta estatísticas sobre o Protocolo de Controle de Transmissão (TCP), o Protocolo de Datagrama do Usuário (UDP), soquetes Unix (para comunicação entre processos) e soquetes brutos. Os soquetes brutos operam na camada de rede OSI, o que implica que os cabeçalhos TCP e UDP devem ser tratados pelo software aplicativo, e não pela camada de transporte. O Protocolo de Mensagens de Controle da Internet (ICMP) e as mensagens do utilitário ping utilizam soquetes brutos.
Utilizando o Comando ss
O ss já está integrado em distribuições Linux atualizadas, não sendo necessária sua instalação. A saída do comando pode ser extensa, com resultados que ultrapassam 630 linhas, e bastante abrangente.
Apresentamos representações textuais dos resultados obtidos, pois eles não caberiam em uma captura de tela, com o intuito de torná-los mais claros.
Listando Conexões de Rede
Ao executar o comando ss sem opções, ele exibe os soquetes que não estão no estado de escuta.
Para visualizar, digite:
ss
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process u_str ESTAB 0 0 * 41826 * 41827 u_str ESTAB 0 0 /run/systemd/journal/stdout 35689 * 35688 u_str ESTAB 0 0 * 35550 * 35551 ... u_str ESTAB 0 0 * 38127 * 38128 u_str ESTAB 0 0 /run/dbus/system_bus_socket 21243 * 21242 u_str ESTAB 0 0 * 19039 * 19040 u_str ESTAB 0 0 /run/systemd/journal/stdout 18887 * 18885 u_str ESTAB 0 0 /run/dbus/system_bus_socket 19273 * 17306 icmp6 UNCONN 0 0 *:ipv6-icmp *:* udp ESTAB 0 0 192.168.4.28%enp0s3:bootpc 192.168.4.1:bootps
As colunas representam:
Netid: O tipo de soquete. No exemplo, “u_str” (fluxo Unix), “udp” e “icmp6” (soquete ICMP IP versão 6). Informações adicionais sobre os tipos de soquete no Linux podem ser encontradas nas páginas de manual.
Estado: O estado do soquete.
Recv-Q: O número de pacotes recebidos.
Send-Q: O número de pacotes enviados.
Endereço Local:Porta: O endereço local e a porta (ou valores equivalentes para soquetes Unix).
Endereço Peer:Porta: O endereço remoto e a porta (ou valores equivalentes para soquetes Unix).
Para soquetes UDP, a coluna “Estado” geralmente está vazia. Para soquetes TCP, os possíveis estados são:
LISTEN: Somente no servidor. O soquete aguarda uma solicitação de conexão.
SYN-SENT: Somente no cliente. O soquete enviou uma solicitação de conexão e aguarda aceitação.
SYN-RECEIVED: Somente no servidor. Aguarda confirmação de conexão após aceitar uma solicitação.
ESTABLISHED: Servidor e cliente. Uma conexão funcional foi estabelecida, permitindo a transferência de dados.
FIN-WAIT-1: Servidor e cliente. Aguarda uma solicitação de encerramento ou confirmação de um pedido já enviado.
FIN-WAIT-2: Servidor e cliente. Aguarda solicitação de término de conexão do soquete remoto.
CLOSE-WAIT: Servidor e cliente. Aguarda uma solicitação de término de conexão do usuário local.
CLOSING: Servidor e cliente. Aguarda confirmação da solicitação de término do soquete remoto.
LAST-ACK: Servidor e cliente. Aguarda confirmação do pedido de encerramento enviado ao soquete remoto.
TIME-WAIT: Servidor e cliente. Já enviou confirmação do recebimento do pedido de término do soquete remoto e aguarda para garantir que foi recebido.
CLOSED: Não há conexão, o soquete foi finalizado.
Listando Soquetes em Escuta
Para visualizar os soquetes que estão em modo de escuta, use a opção -l:
ss -l
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process nl UNCONN 0 0 rtnl:NetworkManager/535 * nl UNCONN 0 0 rtnl:evolution-addre/2987 * ... u_str LISTEN 0 4096 /run/systemd/private 13349 * 0 u_seq LISTEN 0 4096 /run/udev/control 13376 * 0 u_str LISTEN 0 4096 /tmp/.X11-unix/X0 33071 * 0 u_dgr UNCONN 0 0 /run/systemd/journal/syslog 13360 * 0 u_str LISTEN 0 4096 /run/systemd/fsck.progress 13362 * 0 u_dgr UNCONN 0 0 /run/user/1000/systemd/notify 32303 * 0
Estes soquetes estão desconectados e em modo de escuta. “rtnl” refere-se ao roteamento netlink, usado para comunicação entre processos do kernel e do espaço do usuário.
Listando Todos os Soquetes
Para listar todos os soquetes, utilize a opção -a (todos):
ss -a
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process nl UNCONN 0 0 rtnl:NetworkManager/535 * nl UNCONN 0 0 rtnl:evolution-addre/2987 * ... u_str LISTEN 0 100 public/showq 23222 * 0 u_str LISTEN 0 100 private/error 23225 * 0 u_str LISTEN 0 100 private/retry 23228 * 0 ... udp UNCONN 0 0 0.0.0.0:631 0.0.0.0:* udp UNCONN 0 0 0.0.0.0:mdns 0.0.0.0:* ... tcp LISTEN 0 128 [::]:ssh [::]:* tcp LISTEN 0 5 [::1]:ipp [::]:* tcp LISTEN 0 100 [::1]:smtp [::]:*
A saída contém todos os soquetes, independentemente do estado.
Listando Soquetes TCP
É possível aplicar um filtro para exibir apenas os soquetes correspondentes. Usando a opção -t (TCP), apenas os soquetes TCP serão exibidos:
ss -a -t
Listando Soquetes UDP
A opção -u (UDP) executa uma ação de filtragem semelhante, exibindo apenas soquetes UDP:
ss -a -u
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process UNCONN 0 0 0.0.0.0:631 0.0.0.0:* UNCONN 0 0 0.0.0.0:mdns 0.0.0.0:* UNCONN 0 0 0.0.0.0:60734 0.0.0.0:* UNCONN 0 0 127.0.0.53%lo:domain 0.0.0.0:* ESTAB 0 0 192.168.4.28%enp0s3:bootpc 192.168.4.1:bootps UNCONN 0 0 [::]:mdns [::]:* UNCONN 0 0 [::]:51193 [::]:*
Listando Soquetes Unix
Para ver apenas os soquetes Unix, inclua a opção -x (Unix):
ss -a -x
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process u_str ESTAB 0 0 * 41826 * 41827 u_str ESTAB 0 0 * 23183 * 23184 u_str ESTAB 28 0 @/tmp/.X11-unix/X0 52640 * 52639 ... u_str ESTAB 0 0 /run/systemd/journal/stdout 18887 * 18885 u_str ESTAB 0 0 /run/dbus/system_bus_socket 19273 * 17306
Listando Soquetes Brutos
O filtro para soquetes brutos é a opção -w (raw):
ss -a -w
Listando Soquetes IP versão 4
Soquetes que utilizam o protocolo TCP/IP versão 4 podem ser listados com a opção -4 (IPV4):
ss -a -4
Listando Soquetes IP versão 6
Para ativar o filtro de IP versão 6, use a opção -6 (IPV6):
ss -a -6
Listando Soquetes por Estado
É possível listar soquetes pelo seu estado, como “established”, “listening” ou “closed”. A opção “resolver (-r)” tenta resolver endereços de rede para nomes e portas para protocolos.
O comando abaixo procura conexões TCP estabelecidas e tenta resolver os nomes:
ss -t -r state established
São listadas conexões que estão no estado “established”. O nome do host foi resolvido e “ssh” é exibido em vez de 22 para a conexão SSH.
Pode-se repetir o processo para procurar soquetes em modo de escuta:
ss -t -r state listening
Recv-Q Send-Q Local Address:Port Peer Address:Port Process 0 128 localhost:5939 0.0.0.0:* 0 4096 localhost%lo:domain 0.0.0.0:* 0 128 0.0.0.0:ssh 0.0.0.0:* 0 5 localhost:ipp 0.0.0.0:* 0 100 localhost:smtp 0.0.0.0:* 0 128 [::]:ssh [::]:* 0 5 ip6-localhost:ipp [::]:* 0 100 ip6-localhost:smtp [::]:*
Listando Soquetes por Protocolo
A listagem de soquetes pode ser feita por protocolo, utilizando as opções dport (porta de destino) e sport (porta de origem).
Para listar soquetes utilizando o protocolo HTTPS em uma conexão estabelecida, digite:
ss -a state established ‘( dport = :https or sport = :https )’
O nome do protocolo ou a porta padrão podem ser utilizados. No caso do Secure Shell (SSH), a porta padrão é 22.
Utilizando o nome do protocolo em um comando e o repetindo com o número da porta:
ss -a ‘( dport = :ssh or sport = :ssh )’
ss -a ‘( dport = :22 or sport = :22 )’
Os resultados obtidos são idênticos.
Listando Conexões para um Endereço IP Específico
Com a opção dst (destino), é possível listar conexões para um determinado endereço IP de destino.
Digite:
ss -a dst 192.168.4.25
Identificando Processos
Para identificar quais processos estão utilizando os soquetes, use a opção de processos (-p), geralmente com o sudo:
sudo ss -t -p
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process ESTAB 0 0 192.168.4.28:57650 54.218.19.119:https users:(("firefox",pid=3378,fd=151)) ESTAB 0 0 192.168.4.28:ssh 192.168.4.25:43946 users:(("sshd",pid=4086,fd=4),("sshd",pid=3985,fd=4))
As duas conexões estabelecidas nos soquetes TCP estão sendo utilizadas pelo daemon SSH e pelo Firefox.
Um Sucessor Eficiente
O comando ss oferece as mesmas informações do netstat, de forma mais simplificada e acessível. Consulte a página de manual para mais opções e detalhes.