O comando ss é um substituto moderno para o clássico netstat. Você pode usá-lo no Linux para obter estatísticas sobre suas conexões de rede. Veja como trabalhar com esta ferramenta útil.
últimas postagens
O comando ss versus netstat
Um substituto para o obsoleto comando netstat, ss dá-lhe informações detalhadas sobre como seu computador se comunica com outros computadores, redes e serviços.
ss exibe estatísticas para protocolo de Controle de Transmissão (TCP), Protocolo de datagrama do usuário (UDP), Unix (entre processos)e soquetes brutos. Soquetes brutos operar no nível de rede OSI, o que significa que os cabeçalhos TCP e UDP devem ser manipulados pelo software do aplicativo, não pela camada de transporte. Protocolo de mensagens de controle da Internet (ICMP) e as mensagens ping utilitário ambos usam soquetes brutos.
Usando ss
Você não precisa instalar o ss, pois ele já faz parte de uma distribuição Linux atualizada. Sua saída, no entanto, pode ser muito longa – tivemos resultados contendo mais de 630 linhas. Os resultados também são muito amplos.
Por causa disso, incluímos representações de texto dos resultados obtidos, pois eles não caberiam em uma captura de tela. Nós os aparamos para torná-los mais gerenciáveis.
Listando conexões de rede
O uso de ss sem opções de linha de comando lista os soquetes que não estão ouvindo. Ou seja, ele lista os soquetes que não estão no estado de escuta.
Para ver isso, digite o seguinte:
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 são as seguintes:
Netid: O tipo de soquete. Em nosso exemplo, temos “u_str”, um fluxo Unix, um “udp” e “icmp6”, um soquete ICMP IP versão 6. Você pode encontrar mais descrições de Tipos de soquete do Linux nas páginas man do Linux.
Estado: O estado em que o soquete está.
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).
Peer Address:Port: O endereço remoto e a porta (ou valores equivalentes para soquetes Unix).
Para soquetes UDP, a coluna “Estado” geralmente fica em branco. Para soquetes TCP, pode ser um dos seguintes:
OUÇA: Apenas no lado do servidor. O soquete está aguardando uma solicitação de conexão.
SYN-SENT: Apenas no lado do cliente. Este soquete fez uma solicitação de conexão e está aguardando para ver se é aceito.
SYN-RECEIVED: Apenas no lado do servidor. Este soquete está aguardando uma confirmação de conexão após aceitar uma solicitação de conexão.
ESTABELECIDO: Servidor e clientes. Uma conexão de trabalho foi estabelecida entre o servidor e o cliente, permitindo que os dados sejam transferidos entre os dois.
FIN-WAIT-1: Servidor e clientes. Este soquete está aguardando uma solicitação de encerramento de conexão do soquete remoto ou uma confirmação de um pedido de encerramento de conexão que foi enviado anteriormente desse soquete.
FIN-WAIT-2: Servidor e clientes. Este soquete está aguardando uma solicitação de término de conexão do soquete remoto.
CLOSE-WAIT: Servidor e cliente. Este soquete está aguardando uma solicitação de término de conexão do usuário local.
FECHAMENTO: Servidor e clientes. Este soquete está aguardando uma confirmação de solicitação de término de conexão do soquete remoto.
LAST-ACK: Servidor e cliente. Este soquete está aguardando uma confirmação da solicitação de término de conexão que ele enviou ao soquete remoto.
TIME-WAIT: Servidor e clientes. Esse soquete enviou uma confirmação ao soquete remoto para informá-lo de que recebeu a solicitação de término do soquete remoto. Agora está aguardando para ter certeza de que a confirmação foi recebida.
FECHADO: Não há conexão, então o soquete foi encerrado.
Listando soquetes de escuta
Para ver os soquetes de escuta, adicionaremos a opção -l (escuta), assim:
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
Esses soquetes estão todos desconectados e ouvindo. O “rtnl” significa roteamento netlink, que é usado para transferir informações entre os processos do kernel e do espaço do usuário.
Como listar todos os soquetes
Para listar todos os soquetes, você pode usar a opção -a (all):
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.
Como listar soquetes TCP
Você também pode aplicar um filtro para que apenas os soquetes correspondentes sejam exibidos. Usaremos a opção -t (TCP), para que apenas os soquetes TCP sejam listados:
ss -a -t
Como listar soquetes UDP
A opção -u (UDP) executa o mesmo tipo de ação de filtragem. Desta vez, veremos 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 soquetes Unix, você pode incluir a opção -x (Unix), conforme mostrado abaixo:
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
Como listar soquetes brutos
O filtro para sockets raw é a opção -w (raw):
ss -a -w
Listagem de soquetes IP versão 4
Os soquetes que usam o protocolo TCP/IP versão 4 podem ser listados usando a opção -4 (IPV4):
ss -a -4
Listagem de soquetes IP versão 6
Você pode ativar o filtro de IP correspondente da versão 6 com a opção -6 (IPV6), assim:
ss -a -6
Listagem de soquetes por estado
Você pode listar os soquetes pelo estado em que estão com a opção de estado. Isso funciona com estados estabelecidos, de escuta ou fechados. Também usaremos a opção resolver (-r), que tenta resolver endereços de rede para nomes e portas para protocolos.
O comando a seguir procurará conexões TCP estabelecidas e ss tentará resolver os nomes:
ss -t -r state established
São listadas quatro conexões que estão no estado estabelecido. O nome do host, ubuntu20-04, foi resolvido e “ssh” é mostrado em vez de 22 para a conexão SSH na segunda linha.
Podemos repetir isso para procurar soquetes no estado 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
Você pode listar os soquetes usando um protocolo específico com as opções dport e sport, que representam as portas de destino e origem, respectivamente.
Digitamos o seguinte para listar sockets usando o protocolo HTTPS em uma conexão estabelecida (observe o espaço após o parêntese de abertura e antes do de fechamento):
ss -a state established ‘( dport = :https or sport = :https )’
Podemos usar o nome do protocolo ou a porta normalmente associada a esse protocolo. A porta padrão para Capsula segura (SSH) é a porta 22.
Usaremos o nome do protocolo em um comando e o repetiremos usando o número da porta:
ss -a ‘( dport = :ssh or sport = :ssh )’
ss -a ‘( dport = :22 or sport = :22 )’
Como esperado, obtemos os mesmos resultados.
Listando conexões para um endereço IP específico
Com a opção dst (destino), podemos listar as conexões para um determinado endereço IP de destino.
Digitamos o seguinte:
ss -a dst 192.168.4.25
Identificando Processos
Para ver quais processos estão usando os soquetes, você pode usar a opção de processos (-p), conforme mostrado abaixo (observe que você deve usar 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))
Isso nos mostra que as duas conexões estabelecidas nos soquetes TCP estão sendo usadas pelo daemon SSH e pelo Firefox.
Um Sucessor Digno
O comando ss fornece as mesmas informações fornecidas anteriormente pelo netstat, mas de forma mais simples e acessível. Você pode conferir o página de manual para mais opções e dicas.