Uma introdução ao comando ss

Aprenda como obter informações de rede usando o comando ss neste tutorial dos arquivos.

Linux inclui uma grande variedade de ferramentas disponíveis para atender a quase todas as necessidades. Do desenvolvimento à segurança à produtividade à administração… se você tiver que fazer isso, o Linux está lá para servir. Uma das muitas ferramentas para as quais os administradores frequentemente se voltam era o netstat. No entanto, o comando netstat foi depreciado em favor do comando ss mais rápido, mais legível para humanos.

O comando ss é uma ferramenta usada para despejar estatísticas de socket e exibe informações de forma similar (embora mais simples e rápida) ao netstat. O comando ss também pode exibir ainda mais informações de TCP e estado do que a maioria das outras ferramentas. Como ss é o novo netstat, vamos dar uma olhada em como fazer uso desta ferramenta para que você possa obter mais facilmente informações sobre sua máquina Linux e o que está acontecendo com as conexões de rede.

O utilitário de linha de comando ss pode exibir estatísticas para sockets de domínios como PACKET, TCP, UDP, DCCP, RAW, e Unix. O substituto para netstat é mais fácil de usar (compare as páginas man para ter uma idéia imediata de como o ss é muito mais fácil). Com ss, você obtém informações muito detalhadas sobre como sua máquina Linux está se comunicando com outras máquinas, redes e serviços; detalhes sobre conexões de rede, estatísticas de protocolo de rede e conexões de soquetes Linux. Com estas informações em mãos, você pode muito mais facilmente resolver vários problemas de rede.

Vamos nos atualizar com ss, assim você pode considerá-lo uma nova ferramenta no seu kit de administrador.

Basic usage

O comando ss funciona como qualquer comando na plataforma Linux: Emite o comando executável e segue-o com qualquer combinação das opções disponíveis. Se você olhar para a página de manual ss (emitir o comando man ss), você notará que não há quase as opções encontradas para o comando netstat; no entanto, isso não equivale a uma falta de funcionalidade. Na verdade, ss é bastante poderoso.

Se você emitir o comando ss sem nenhum argumento ou opção, ele retornará uma lista completa de soquetes TCP com conexões estabelecidas (Figura 1).

Figure 1: Uma lista completa de todas as conexões TCP estabelecidas.

Porque o comando ss (sem opções) irá exibir uma quantidade significativa de informação (todos os detalhes de conexão dos soquetes tcp, udp e unix), você também poderia enviar esse comando de saída para um arquivo para visualização posterior como assim:

ss > ss_output

Obviamente, um comando muito básico não é tão útil para todas as situações. E se só quisermos ver os soquetes de escuta actuais? Simples, tack na opção -l como so:

ss -l

O comando acima só vai sair uma lista de soquetes de escuta corrente.

Para torná-lo um pouco mais específico, pense desta forma: ss pode ser usado para ver conexões TCP usando a opção -t, conexões UDP usando a opção -u, ou conexões UNIX usando a opção -x; so ss -t, ss -u, ou ss -x. Executando qualquer um desses comandos você irá listar muitas informações para passar a pente fino (Figura 2).

Figure 2: Executando ss -u no Sistema Operacional Elementar oferece uma rápida exibição das conexões UDP.

Por padrão, usando apenas as opções -t, -u, ou -x listará apenas as conexões que estão estabelecidas (ou conectadas). Se quisermos pegar as conexões que estão escutando, temos que adicionar a opção -a como:

ss -t -a 

A saída do comando acima incluirá todos os soquetes TCP (Figura 3).

Figure 3: Note que o último soquete está escutando ssh no dispositivo.

No exemplo acima, você pode ver que conexões UDP (em vários estados) estão sendo feitas a partir do endereço IP da minha máquina, de várias portas, para vários endereços IP, através de várias portas. Ao contrário da versão netstat deste comando, o ss não exibe o PID e o nome do comando responsável por estas conexões. Mesmo assim, você ainda tem muitas informações para iniciar a solução de problemas. Se alguma dessas portas ou URLs for suspeita, você agora sabe qual endereço IP/ porta está fazendo a conexão. Com isso, você agora tem as informações que podem ajudá-lo nos estágios iniciais de solução de problemas.

Filtrar ss com estados TCP

Uma opção muito útil disponível para o comando ss é a capacidade de filtrar usando estados TCP (os “estágios de vida” de uma conexão). Com estados, você pode filtrar mais facilmente os resultados do seu comando ss. A ferramenta ss pode ser usada em conjunto com todos os estados TCP padrão:

  • estabelecido

  • syn-sent

  • syn-recv

  • fin-wait-1

  • fin-wait-2

  • time-espera

  • fechado

  • fechado espera

  • last-ack

  • listening

  • fechado

Outros identificadores de estado disponíveis ss são reconhecíveis:

  • todos (todos os estados acima)

  • ligados (todos os estados com a excepção de ouvir e fechados)

  • sincronizados (todos os estados ligados com a excepção de sin- enviado)

  • bucket (estados que são mantidos como minisockets, por exemplo, tempo de espera e

  • syn-recv)

  • big (Oposto ao estado de balde)

A sintaxe para trabalhar com estados é simples.

For tcp ipv4:ss -4 state FILTERFor tcp ipv6:ss -6 state FILTER

Onde FILTRO é o nome do estado que você quer usar.

Diga que você quer ver todas as tomadas IPv4 em escuta na sua máquina. Para isso, o comando seria:

ss -4 state listening

Os resultados desse comando seriam semelhantes à Figura 4.

Figure 4: Usando ss com um filtro de estado de escuta.

Mostrar soquetes conectados de um endereço específico

Uma tarefa útil que você pode atribuir a ss é fazer com que ela relate conexões feitas por outro endereço IP. Digamos que você queira descobrir se/como uma máquina no endereço IP 192.168.1.139 está conectada ao seu servidor. Para isso, você pode emitir o comando:

ss dst 192.168.1.139

A informação resultante (Figura 5) irá informar o Netid, o estado, o IP:porta local, e o IP:porta remota do soquete.

Figure 5: Uma máquina remota estabeleceu uma conexão ssh com nossa máquina local.

Faça-o funcionar para você

O comando ss pode fazer bastante para ajudá-lo a resolver problemas com seu servidor Linux ou sua rede. Seria bom que você tivesse um tempo para ler a página de manual ss (emitir o comando man ss). Mas, neste ponto, você deve pelo menos ter um entendimento fundamental de como fazer uso deste comando imperdível.

Aprenda mais sobre Linux através do curso gratuito “Introdução ao Linux” da The Linux Foundation e edX.

Deixe uma resposta

O seu endereço de email não será publicado.