ss - outra ferramenta para investigar soquetes
SINTAXE
ss [opções] [FILTRO]
DESCRIÇÃO
ss é usado para exibir estatísticas de soquetes. Permite mostrar informações semelhantes ao netstat. Pode exibir mais informações de TCP e estado do que outras ferramentas.
OPÇÕES
Quando nenhuma opção é usada, ss exibe uma lista de soquetes não-ouvintes abertos (por exemplo, TCP/UNIX/UDP) que têm uma conexão estabelecida.
-h, --help
Exibe um resumo das opções.
-V, --version
Exibe informações da versão.
-H, --no-header
Suprime a linha de cabeçalho.
-Q, --no-queues
Suprime as colunas de envio e recebimento de filas.
-O, --oneline
Imprime os dados de cada soquete em uma única linha.
-n, --numeric
Não tenta resolver nomes de serviço. Mostra valores exatos de largura de banda, em vez de valores legíveis por humanos.
-r, --resolve
Tenta resolver endereços/portas numéricas.
-a, --all
Exibe soquetes de escuta e não-escuta (para TCP, isso significa conexões estabelecidas).
-l, --listening
Exibe apenas soquetes de escuta (estes são omitidos por padrão).
-B, --bound-inactive
Exibe apenas soquetes TCP vinculados, mas inativos (não em estado de escuta, conexão, etc.) (estes são omitidos por padrão).
-o, --options
Exibe informações de temporizador. Para o protocolo TCP, o formato de saída é:
timer:(<nome_do_temporizador>,<tempo_de_expiração>,<retentativas>)
<nome_do_temporizador>
o nome do temporizador, existem cinco tipos de nomes de temporizador:
on: significa um destes temporizadores: temporizador de retransmissão TCP, temporizador de retransmissão precoce TCP e temporizador de sonda de perda de cauda
keepalive: temporizador de keep alive TCP
timewait: temporizador de estágio de espera
persist: temporizador de sonda de janela zero
unknown: nenhum dos temporizadores acima
<tempo_de_expiração>
quanto tempo o temporizador irá expirar
<retentativas>
quantas vezes a retransmissão ocorreu
-e, --extended
Exibe informações detalhadas do soquete. O formato de saída é:
uid:<número_do_uid> ino:<número_do_inode> sk:<cookie>
<número_do_uid>
o ID de usuário ao qual o soquete pertence
<número_do_inode>
o número do inode do soquete no VFS
<cookie>
um UUID do soquete
-m, --memory
Exibe o uso de memória do soquete. O formato de saída é:
skmem:(r<rmem_alloc>,rb<rcv_buf>,t<wmem_alloc>,tb<snd_buf>,
f<fwd_alloc>,w<wmem_queued>,o<opt_mem>,
bl<back_log>,d<sock_drop>)
<rmem_alloc>
a memória alocada para o recebimento de pacotes
<rcv_buf>
a memória total que pode ser alocada para o recebimento de pacotes
<wmem_alloc>
a memória usada para o envio de pacotes (que foram enviados para a camada 3)
<snd_buf>
a memória total que pode ser alocada para o envio de pacotes
<fwd_alloc>
a memória alocada pelo soquete como cache, mas ainda não usada para receber/enviar pacotes. Se precisar de memória para enviar/receber pacotes, a memória neste cache será usada antes de alocar memória adicional.
<wmem_queued>
A memória alocada para enviar pacotes (que ainda não foram enviados para a camada 3).
<opt_mem>
A memória usada para armazenar opções de soquete, por exemplo, a chave para a assinatura TCP MD5.
<back_log>
A memória usada para a fila de backlog do soquete. Em um contexto de processo, se o processo estiver recebendo pacotes e um novo pacote for recebido, ele será colocado na fila de backlog do soquete para que possa ser recebido pelo processo imediatamente.
<sock_drop>
O número de pacotes descartados antes de serem multiplexados para o soquete.
-p, --processes
Mostra os processos que estão usando o soquete.
-T, --threads
Mostra as threads que estão usando o soquete. Implica em -p.
-i, --info
Mostra informações internas do TCP. Os seguintes campos podem aparecer:
ts Mostra a string "ts" se a opção de timestamp estiver definida.
sack Mostra a string "sack" se a opção SACK estiver definida.
ecn Mostra a string "ecn" se a opção de notificação explícita de congestionamento estiver definida.
ecnseen
Mostra a string "ecnseen" se a flag "saw ecn" for encontrada nos pacotes recebidos.
fastopen
Mostra a string "fastopen" se a opção fastopen estiver definida.
cong_alg
O nome do algoritmo de controle de congestionamento; o algoritmo de controle de congestionamento padrão é "cubic".
wscale:<snd_wscale>:<rcv_wscale>
Se a opção de escala de janela for usada, este campo mostra o fator de escala de envio e o fator de escala de recebimento.
rto:<icsk_rto>
O valor do tempo limite de retransmissão TCP, em milissegundos.
backoff:<icsk_backoff>
Usado para retransmissão com backoff exponencial; o valor real do tempo limite de retransmissão é icsk_rto << icsk_backoff.
rtt:<rtt>/<rttvar>
rtt é o tempo médio de ida e volta, rttvar é o desvio médio de rtt; as unidades são milissegundos.
ato:<ato>
Tempo limite de reconhecimento, em milissegundos; usado para o modo de reconhecimento atrasado.
mss:<mss>
Tamanho máximo do segmento.
cwnd:<cwnd>
Tamanho da janela de congestionamento.
pmtu:<pmtu>
Valor do MTU do caminho.
ssthresh:<ssthresh>
Limite de início lento da janela de congestionamento TCP.
bytes_acked:<bytes_acked>
Bytes reconhecidos.
bytes_received:<bytes_received>
Bytes recebidos.
segs_out:<segs_out>
Segmentos enviados.
segs_in:<segs_in>
Segmentos recebidos.
send <send_bps>bps
Taxa de envio (em bits por segundo).
lastsnd:<lastsnd>
Tempo decorrido desde o último pacote enviado, em milissegundos.
lastrcv:<lastrcv>
Tempo decorrido desde o último pacote recebido, em milissegundos.
lastack:<lastack>
Tempo decorrido desde o último reconhecimento recebido, em milissegundos.
pacing_rate <pacing_rate>bps/<max_pacing_rate>bps
A taxa de pacing e a taxa máxima de pacing.
rcv_space:<rcv_space>
Uma variável auxiliar para o ajuste automático interno do TCP do buffer de recebimento do soquete.
tcp-ulp-mptcp flags:[MmBbJjecv] token:<rem_token(rem_id)/loc_token(loc_id)> seq:<sn> sfseq:<ssn> ssnoff:<off> maplen:<maplen>
Informações de subfluxo MPTCP.
--tos Mostra informações de ToS e prioridade. Os seguintes campos podem aparecer:
tos Byte de Serviço de Tipo IPv4.
tclass Byte de Classe de Tráfego IPv6.
class_id
ID de classe definido pelo cgroup net_cls. Se a classe for zero, isso mostra a prioridade definida por SO_PRIORITY.
--cgroup
Mostra informações do cgroup. Os seguintes campos podem aparecer:
cgroup Caminho do Cgroup v2. Este caminho é relativo ao ponto de montagem da hierarquia.
--tipcinfo
Exibe informações internas do socket tipc.
-K, --kill
Tenta fechar sockets à força. Esta opção exibe os sockets que são fechados com sucesso e ignora silenciosamente os sockets que o kernel não suporta fechar. Suporta sockets IPv4 e IPv6.
-s, --summary
Imprime estatísticas resumidas. Esta opção não analisa listas de sockets, obtendo o resumo de várias fontes. É útil quando o número de sockets é tão grande que analisar /proc/net/tcp é problemático.
-E, --events
Exibe continuamente os sockets à medida que são destruídos.
-Z, --context
Semelhante à opção -p, mas também mostra o contexto de segurança do processo. Se a opção -T for usada, também mostra o contexto de segurança do thread.
Para sockets netlink(7), o contexto do processo iniciador é exibido da seguinte forma:
Se um PID válido for encontrado, exibe o contexto do processo.
Se o destino for o kernel (pid = 0), exibe o contexto inicial do kernel.
Se um identificador exclusivo foi alocado pelo kernel ou pelo usuário netlink, exibe o contexto como "indisponível". Isso geralmente indicará que um processo tem mais de um socket netlink ativo.
-z, --contexts
Semelhante à opção -Z, mas também mostra o contexto do socket. O contexto do socket é obtido do inode associado e não é o contexto real do socket mantido pelo kernel. Os sockets são normalmente rotulados com o contexto do processo de criação, no entanto, o contexto exibido refletirá quaisquer regras de transição de função, tipo e/ou intervalo de política aplicadas e, portanto, é uma referência útil.
-N NSNAME, --net=NSNAME
Alterna para o namespace de rede especificado.
-b, --bpf
Exibe filtros BPF clássicos de socket (apenas administradores têm permissão para obter essas informações).
-4, --ipv4
Exibe apenas sockets da versão IP 4 (alias para -f inet).
-6, --ipv6
Exibe apenas sockets da versão IP 6 (alias para -f inet6).
-0, --packet
Exibe sockets PACKET (alias para -f link).
-t, --tcp
Exibe sockets TCP.
-u, --udp
Exibe sockets UDP.
-d, --dccp
Exibe sockets DCCP.
-w, --raw
Exibe sockets RAW.
-x, --unix
Exibe sockets de domínio Unix (alias para -f unix).
-S, --sctp
Exibe sockets SCTP.
--tipc Exibe sockets tipc (alias para -f tipc).
--vsock
Exibe sockets vsock (alias para -f vsock).
--xdp Exibe sockets XDP (alias para -f xdp).
-M, --mptcp
Exibe sockets MPTCP.
--inet-sockopt
Exibe opções de socket inet.
-f FAMILY, --family=FAMILY
Exibe sockets do tipo FAMILY. Atualmente, as seguintes famílias são suportadas: unix, inet, inet6, link, netlink, vsock, tipc, xdp.
-A QUERY, --query=QUERY, --socket=QUERY
Lista de tabelas de socket para serem despejadas, separadas por vírgulas. Os seguintes identificadores são compreendidos: all, inet, tcp, udp, raw, unix, packet, netlink, unix_dgram, unix_stream, unix_seqpacket, packet_raw, packet_dgram, dccp, sctp, tipc, vsock_stream, vsock_dgram, xdp, mptcp.
Qualquer item da lista pode ser opcionalmente prefixado com um ponto de exclamação (!) para excluir essa tabela de socket do despejo.
-D FILE, --diag=FILE
Não exibir nada, apenas despejar informações brutas sobre os sockets TCP no arquivo FILE após aplicar os filtros. Se FILE for -, a saída padrão será usada.
-F FILE, --filter=FILE
Ler as informações do filtro do arquivo FILE. Cada linha do arquivo FILE é interpretada como uma opção de linha de comando. Se FILE for -, a entrada padrão será usada.
--bpf-maps
Exibir de forma organizada todas as entradas de dados locais do socket BPF para cada socket.
--bpf-map-id=MAP_ID
Exibir de forma organizada as entradas de dados locais do socket BPF para o ID de mapa solicitado. Pode ser usado várias vezes.
FILTER := [ state STATE-FILTER ] [ EXPRESSION ]
Consulte a documentação oficial para obter detalhes sobre os filtros.
STATE-FILTER
STATE-FILTER permite construir um conjunto arbitrário de estados para corresponder. Sua sintaxe é uma sequência de palavras-chave state e exclude, seguida pelo identificador do estado.
Os identificadores disponíveis são:
All: todos os estados padrão do TCP: established, syn-sent, syn-recv, fin-wait-1, fin-wait-2, timewait, closed, close-wait, last-ack, listening e closing.
all: todos os estados
connected: todos os estados, exceto listening e closed
synchronized: todos os estados conectados, exceto syn-sent
bucket: estados que são mantidos como minissockets, ou seja, time-wait e syn-recv
big: o oposto de bucket
bound-inactive: sockets que estão vinculados, mas inativos (não estão em estado de escuta ou conexão, etc.)
EXPRESSION
EXPRESSION permite filtrar com base em critérios específicos. EXPRESSION consiste em uma série de predicados combinados por operadores booleanos. Os operadores possíveis em ordem crescente de precedência são: or (ou | ou ||), and (ou & ou &&) e not (ou !). Se não houver operador entre predicados consecutivos, um operador and implícito é assumido. As subexpressões podem ser agrupadas com "(" e ")".
Os seguintes predicados são suportados:
{dst|src} [=] HOST
Testa se o destino ou a origem corresponde a HOST. Consulte HOST SYNTAX para obter detalhes.
{dport|sport} [OP] [FAMILY:]:PORT
Compara a porta de destino ou de origem com PORT. OP pode ser qualquer um dos "<", "<=", "=", "!=", ">=" e ">". Seguindo as regras aritméticas normais. FAMILY e PORT são como descrito em HOST SYNTAX abaixo.
dev [=|!=] DEVICE
Corresponde com base no dispositivo que a conexão usa. DEVICE pode ser um nome de dispositivo ou o índice da interface.
fwmark [=|!=] MASK
Corresponde com base no valor fwmark da conexão. Isso pode ser um valor de marca específico ou um valor de marca seguido por uma barra e uma máscara de bits dos bits a serem usados na comparação. Por exemplo, "fwmark = 0x01/0x03" corresponderia se os dois bits menos significativos do fwmark fossem 0x01.
cgroup [=|!=] PATH
Corresponde se a conexão fizer parte de um cgroup no caminho especificado.
autobound
Corresponde se a porta ou o caminho do endereço de origem foi alocado automaticamente (em vez de especificado explicitamente).
A maioria dos operadores tem aliases. Se nenhum operador for fornecido, "=" é assumido. Cada um dos seguintes grupos de operadores é equivalente:
= == eq
!= ne neq
> gt
< lt
>= ge geq
<= le leq
! not
| || or
& && and
SINTAXE DO HOST
A sintaxe geral do host é [FAMÍLIA:]ENDEREÇO[:PORTA].
FAMÍLIA deve ser uma das famílias suportadas pela opção -f. Se não for especificada, o padrão será
a família especificada com a opção -f e, se esta também estiver faltando, assumirá inet ou inet6.
Observe que todas as condições de host na expressão devem ser da mesma família ou apenas inet e inet6.
Se houver alguma outra mistura de famílias, os resultados provavelmente serão inesperados.
O formato de ENDEREÇO e PORTA depende da família usada. "*" pode ser usado como um curinga para o endereço ou porta. Os detalhes para cada família são os seguintes:
unix ENDEREÇO é um padrão glob (veja fnmatch(3)) que será correspondido de forma insensível a
maiúsculas e minúsculas em relação ao endereço do socket unix. Tanto os nomes de caminho quanto os
nomes abstratos são suportados. Os endereços Unix não suportam uma porta, e "\*" não pode ser
usado como um curinga.
link ENDEREÇO é o nome (insensível a maiúsculas e minúsculas) do protocolo Ethernet a ser
correspondido. PORTA é o nome do dispositivo ou o índice do dispositivo para o dispositivo de link
desejado, conforme visto na saída do comando ip link.
netlink
ENDEREÇO é um descritor da família netlink. Os valores possíveis vêm de
/etc/iproute2/nl_protos. PORTA é o ID da porta do socket, que geralmente é o mesmo que o ID do
processo proprietário. O valor "kernel" pode ser usado para representar o kernel (ID da porta de
0).
vsock ENDEREÇO é um inteiro que representa o endereço CID e PORTA é a porta.
inet e inet6
ENDEREÇO é um endereço IP (v4 ou v6, dependendo da família) ou um nome de host DNS que resolve
para um endereço IP da versão necessária. Um endereço IPv6 deve ser incluído entre "[" e "]" para
desambiguar o separador de porta. O endereço pode incluir um prefixo de comprimento em notação CIDR
(uma barra seguida do comprimento do prefixo em bits). PORTA é o número da porta do socket ou o
nome do serviço para a porta a ser correspondida.
EXEMPLOS DE USO
ss -t -a
Exibe todos os sockets TCP.
ss -t -a -Z
Exibe todos os sockets TCP com contextos de segurança SELinux do processo.
ss -u -a
Exibe todos os sockets UDP.
ss -o state established '( dport = :ssh or sport = :ssh )'
Exibe todas as conexões ssh estabelecidas.
ss -x src /tmp/.X11-unix/*
Encontra todos os processos locais conectados ao servidor X.
ss -o state fin-wait-1 '( sport = :http or sport = :https )' dst 193.233.7/24
Lista todos os sockets tcp no estado FIN-WAIT-1 para o nosso apache para a rede 193.233.7/24 e analisa seus temporizadores.
ss -a -A 'all,!tcp'
Lista sockets em todos os estados de todas as tabelas de socket, mas não TCP.
VEJA TAMBÉM
ip(8), RFC 793 - https://tools.ietf.org/rfc/rfc793.txt (Estados TCP)
AUTOR
ss foi escrito por Alexey Kuznetsov, <_>.
Esta página de manual foi escrita por Michael Prokop <_> para o projeto Debian (mas pode ser usada por outros).