Comando ss: Obtendo informações sobre a rede - Linux

O comando ss é utilizado para obter informações sobre interações de rede atuais. Vale ressaltar que este comando é geralmente uma alternativa ao comando netstat, que anteriormente era amplamente utilizado. Atualmente, o netstat não vem incluído por padrão em muitos dos distribuidores modernos.

O comando ss pode ser executado com diversas opções que definem seu comportamento. Aqui estão algumas delas:

  • -a, --all: exibe todos os sockets.

  • -r, --resolve: converte endereços IP em nomes de domínio.

  • -l, --listening: exibe sockets que estão ouvindo por conexões.

  • -e, --extended: exibe informações detalhadas sobre os sockets.

  • -m, --memory: mostra informações sobre o uso de memória pelos sockets.

  • -p, --processes: mostra os processos que estão utilizando os sockets.

  • -T, --threads: mostra as threads que estão utilizando os sockets.

  • -i, --info: fornece informações internas do TCP.

  • -s, --summary: apresenta um resumo do uso dos sockets.

  • -E, --events: exibe continuamente os sockets à medida que são destruídos.

  • -4, --ipv4: exibe apenas os sockets da versão IP 4.

  • -6, --ipv6: exibe apenas os sockets da versão IP 6.

  • -t, --tcp: exibe apenas sockets TCP.

  • -u, --udp: exibe apenas sockets UDP.

Por exemplo, para obter todas as informações sobre conexões de rede, usamos o comando ss -a:

programicio@Programicio:~$ ss -a
Netid    State         Recv-Q    Send-Q                                           Local Address:Port                            Peer Address:Port      Process    
nl       UNCONN        0         0                                                         rtnl:kernel                                      *                     
nl       UNCONN        0         0                                                         rtnl:code/4486                                   *                     
nl       UNCONN        0         0                                                         rtnl:chrome/3688                                 *                     
nl       UNCONN        0         0                                                         rtnl:goa-daemon/3300                             *                     
nl       UNCONN        0         0                                                         rtnl:evolution-addre/3353                        *                     
nl       UNCONN        0         0                                                         rtnl:avahi-daemon/1461                           *                     
nl       UNCONN        0         0                                                         rtnl:NetworkManager/1531                         *                     
nl       UNCONN        0         0                                                         rtnl:xdg-desktop-por/3452                        *                   
tcp      ESTAB         0         0                                                192.168.0.108:55950                           5.255.255.70:https                
tcp      ESTAB         0         0                                                192.168.0.108:54012                         142.250.185.206:https                
tcp      ESTAB         0         0                                                192.168.0.108:37494                         185.125.190.20:https                 
tcp      ESTAB         0         0                                                192.168.0.108:48670                         142.250.185.206:https                
tcp      LISTEN        0         511                                                          *:http                                       *:*                    
tcp      LISTEN        0         4096                                                     [::1]:ipp                                     [::]:*                    

A tabela exibida pelo comando ss apresenta informações como:

  • Netid: mostra o tipo de socket, como nl (netlink), que é usado para a troca de informações entre o kernel do Linux e os processos do usuário.

  • State: estado do socket, com valores comuns como ESTAB (estabelecido), UNCONN (não conectado) e LISTEN (ouvindo).

  • Recv-Q e Send-Q: número de pacotes aguardando para serem recebidos ou enviados, respectivamente.

  • Local Address e Peer Address: endereços local e remoto, junto com os respectivos portos.

Para facilitar a identificação dos endereços, você pode usar a opção -r para resolver os nomes de domínio:

programicio@Programicio:~$ ss -ar
Netid    State         Recv-Q    Send-Q                                           Local Address:Port                            Peer Address:Port      Process    
tcp      ESTAB         0         0                                                Programicio:55950                           yandex.ru:https                
tcp      ESTAB         0         0                                                Programicio:54012                          google.com:https                
tcp      ESTAB         0         0                                                Programicio:37494                          ubuntu.com:https                 
tcp      ESTAB         0         0                                                Programicio:48670                          google.com:https                
tcp      LISTEN        0         511                                              *:http                                            *:*                    
tcp      LISTEN        0         4096                                             [::1]:ipp                                      [::]:*                    

Além disso, você pode visualizar apenas conexões que estão ouvindo, utilizando a opção ss -l, ou somente conexões TCP, com ss -t. A opção -p permite ver quais processos estão usando um determinado socket, aumentando a utilidade do comando para diagnóstico e monitoramento de redes.

Filtros

O comando ss permite filtrar a saída de acordo com critérios específicos. Alguns dos filtros que você pode usar são:

  • dst: filtra por um endereço de destino específico.

  • src: filtra por um endereço de saída específico.

  • state: filtra pelo estado do socket.

Por exemplo, para encontrar todas as conexões que estão se dirigindo ao endereço "64.233.165.113" (google.com):

programicio@Programicio:~$ ss dst 64.233.165.113
Netid          State          Recv-Q          Send-Q                     Local Address:Port                        Peer Address:Port           
tcp            ESTAB          0               0                          192.168.0.108:46334                     64.233.165.113:https                           

Neste caso, foi usado um endereço específico, mas também é possível filtrar apenas por um endereço:

ss src 192.168.0.108

Ou apenas por um porto:

programicio@Programicio:~$ ss src :55854
Netid                State                Recv-Q                Send-Q                               Local Address:Port                                  Peer Address:Port 
tcp                  ESTAB                0                     0                                    192.168.0.108:55854                               185.125.190.29:https  

Para obter nomes de host em vez de endereços IP, assim como em casos gerais, você pode usar o sinalizador -r:

ss -r src 192.168.0.108

É possível usar ambos os filtros de uma vez:

ss -a src :55854 or dst :https

Neste caso, obtemos todas as conexões onde a máquina local utiliza o porto 55854, ou onde o host remoto utiliza HTTPS.

Ou podemos filtrar por sockets TCP que estão no estado listening:

programicio@Programicio:~$ ss -t state listening
Recv-Q                      Send-Q                                           Local Address:Port                                              Peer Address:Port                      
0                           4096                                             127.0.0.53%lo:domain                                                 0.0.0.0:*                                
0                           4096                                                127.0.0.54:domain                                                 0.0.0.0:*                                                      
0                           4096                                                 127.0.0.1:ipp                                                    0.0.0.0:*                                 
0                           511                                                          *:http                                                         *:*                                
0                           4096                                                     [::1]:ipp                                                       [::]:*  

Filtrando por Texto

Assim como com outros comandos, você pode obter a saída de texto do comando e buscar um texto específico, por exemplo, usando o comando grep:

programicio@Programicio:~$ ss -r | grep "1e100.net"
udp   ESTAB      0      0                                      Programicio:33724   lq-in-f94.1e100.net:https        
udp   ESTAB      0      0                                      Programicio:33813   lb-in-f94.1e100.net:https        
udp   ESTAB      0      0                                      Programicio:49685  lu-in-f103.1e100.net:https        
tcp   ESTAB      0      0                                      Programicio:36868  lg-in-f101.1e100.net:https        
tcp   FIN-WAIT-1 0      605                                    Programicio:58502  lq-in-f154.1e100.net:https        
tcp   ESTAB      0      0                                      Programicio:53820   lr-in-f94.1e100.net:https        
tcp   ESTAB      0      540                                    Programicio:60092  lq-in-f154.1e100.net:https        
tcp   ESTAB      0      0                                      Programicio:46016   lg-in-f95.1e100.net:https        
tcp   ESTAB      0      0                                      Programicio:39640   os-in-f94.1e100.net:https        

Neste caso, a busca é por conexões que estão direcionadas a domínios no "1e100.net".

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com