O ss
comando é 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 essa ferramenta útil.
Índice
O comando ss versus netstat
Um substituto para o obsoleto netstat
comando , ss
fornece informações detalhadas sobre como suas comunica computador com outros computadores, redes e serviços.
ss
exibe estatísticas para TCP ( Transmission Control Protocol ), UDP ( User Datagram Protocol ), Unix (interprocesso) e sockets raw. Os soquetes brutos operam no nível OSI da rede , o que significa que os cabeçalhos TCP e UDP devem ser controlados pelo software do aplicativo, não pela camada de transporte. Mensagens ICMP ( Internet Control Message Protocol ) e o utilitário ping usam soquetes brutos.
Usando ss
Você não precisa instalar ss
, pois já faz parte de uma distribuição Linux atualizada. Sua saída, no entanto, pode ser muito longa – obtivemos 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 não caberiam em uma captura de tela. Nós os aparamos para torná-los mais gerenciáveis.
Listagem de conexões de rede
Usar ss
sem opções de linha de comando lista os soquetes que não estão escutando. Ou seja, ele lista os soquetes que não estão no estado de escuta.
Para ver isso, digite o seguinte:
ss
Endereço local Recv-Q Send-Q do estado Netid: Endereço do par da porta: Processo da porta 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 socket. 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 dos tipos de soquete do Linux nas páginas de manual 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).
- Endereço do par: Porta : O endereço remoto e a porta (ou valores equivalentes para soquetes Unix).
Para sockets UDP, a coluna “Estado” geralmente está em branco. Para soquetes TCP, pode ser um dos seguintes:
- ESCUTAR: Apenas do lado do servidor. O soquete está aguardando uma solicitação de conexão.
- SYN-SENT: apenas do lado do cliente. Este socket fez um pedido de conexão e está esperando para ver se ele é aceito.
- SYN-RECEIVED: Apenas do lado do servidor. Este socket está esperando por uma confirmação de conexão após aceitar um pedido de conexão.
- ESTABELECIDO: Servidor e clientes. Uma conexão funcional foi estabelecida entre o servidor e o cliente, permitindo a transferência de dados entre os dois.
- FIN-WAIT-1: Servidor e clientes. Este soquete está aguardando uma solicitação de término de conexão do soquete remoto ou uma confirmação de uma solicitação de término de conexão que foi enviada anteriormente deste soquete.
- FIN-WAIT-2: Servidor e clientes. Este soquete está aguardando uma solicitação de encerramento de conexão do soquete remoto.
- CLOSE-WAIT: Servidor e cliente. Este soquete está aguardando uma solicitação de encerramento de conexão do usuário local.
- ENCERRAMENTO: Servidor e clientes. Este soquete está aguardando uma confirmação de solicitação de término de conexão do soquete remoto.
- ÚLTIMO ACK: Servidor e cliente. Este soquete está aguardando uma confirmação da solicitação de encerramento de conexão enviada ao soquete remoto.
- TIME-WAIT: Servidor e clientes. Este soquete enviou uma confirmação ao soquete remoto para informá-lo de que recebeu a solicitação de encerramento do soquete remoto. Agora ele está esperando para ter certeza de que a confirmação foi recebida.
- CLOSED: Não há conexão, então o socket foi encerrado.
Listagem de soquetes de escuta
Para ver os soquetes de escuta, adicionaremos a -l
opção (escuta), assim:
ss -l
Endereço local Recv-Q Send-Q do estado Netid: Endereço do par da porta: Processo da porta 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 / executar / usuário / 1000 / systemd / notificar 32303 * 0
Esses soquetes estão todos desconectados e ouvindo. O “rtnl” significa roteamento de netlink, que é usado para transferir informações entre o kernel e os processos do espaço do usuário.
Listando todos os soquetes
Para listar todos os soquetes, você pode usar a -a
opção (todos):
ss -a
Endereço local Recv-Q Send-Q do estado Netid: Endereço do par da porta: Processo da porta 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 privado / erro 23225 * 0 u_str LISTEN 0 100 privado / repetir 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
Você também pode aplicar um filtro para que apenas os soquetes correspondentes sejam exibidos. Usaremos a -t
opção (TCP), portanto, apenas os soquetes TCP serão listados:
ss -a -t
Listando Sockets UDP
A -u
opção (UDP) executa o mesmo tipo de ação de filtragem. Desta vez, veremos apenas soquetes UDP:
ss -a -u
Endereço local Recv-Q Send-Q do estado: Endereço do par da porta: Processo da porta 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: domínio 0.0.0.0:* ESTAB 0 0 192.168.4.28% enp0s3: bootpc 192.168.4.1:bootps UNCONN 0 0 [::]: mdns [::]: * DESCONEXÃO 0 0 [::]: 51193 [::]: *
Listando Soquetes Unix
Para ver apenas soquetes Unix, você pode incluir a -x
opção (Unix), conforme mostrado abaixo:
ss -a -x
Endereço local Recv-Q Send-Q do estado Netid: Endereço do par da porta: Processo da porta 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 sockets raw é a -w
opção (raw):
ss -a -w
Listando soquetes de IP versão 4
Sockets usando o protocolo TCP / IP versão 4 podem ser listados usando a -4
opção (IPV4):
ss -a -4
Listando Soquetes IP Versão 6
Você pode ativar o filtro de IP versão 6 correspondente com a -6
opção (IPV6), assim:
ss -a -6
Listagem de soquetes por estado
Você pode listar os soquetes pelo estado em que estão com a state
opção. Isso funciona com estados estabelecidos, de escuta ou fechados. Também usaremos a opção resolve ( -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:
estado ss -t -r estabelecido
Quatro conexões são listadas 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:
estado ss -t -r ouvindo
Endereço local Recv-Q Send-Q: Endereço do par da porta: Processo da porta 0 128 localhost: 5939 0.0.0.0:* 0 4096 localhost% lo: domínio 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 Sockets 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 de origem, respectivamente.
Digamos o seguinte para listar os soquetes usando o protocolo HTTPS em uma established
conexão (observe o espaço após o parêntese de abertura e antes do fechamento):
ss -a estado estabelecido '(dport =: https ou sport =: https)'
Podemos usar o nome do protocolo ou a porta geralmente associada a esse protocolo. A porta padrão para Secure Shell (SSH) é a porta 22.
Usaremos o nome do protocolo em um comando e, em seguida, o repetiremos usando o número da porta:
ss -a '(dport =: ssh ou sport =: ssh)'
ss -a '(dport =: 22 ou esporte =: 22)'
Como esperado, obtemos os mesmos resultados.
Listando conexões para um endereço IP específico
Com a dst
opção (destino), podemos listar as conexões para um endereço IP de destino específico.
Nós digitamos o seguinte:
ss -a dst 192.168.4.25
Identificação de processos
Para ver quais processos estão usando os sockets, você pode usar a opção de processos ( -p
), conforme mostrado abaixo (observe que você deve usar sudo
):
sudo ss -t -p
Endereço local Recv-Q Send-Q do estado: Endereço do par da porta: Processo da porta ESTAB 0 0 192.168.4.28:57650 54.218.19.119:https usuários: (("firefox", pid = 3378, fd = 151)) ESTAB 0 0 192.168.4.28:ssh 192.168.4.25:43946 usuários: (("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 ss
comando fornece as mesmas informações fornecidas anteriormente netstat
, mas de forma mais simples e acessível. Você pode verificar a página do manual para obter mais opções e dicas.