ss - otra utilidad para investigar sockets
SINOPSIS
ss [opciones] [FILTRO]
DESCRIPCIÓN
ss se utiliza para mostrar estadísticas de los sockets. Permite mostrar información similar a netstat. Puede
mostrar más información de TCP y estado que otras herramientas.
OPCIONES
Cuando no se utiliza ninguna opción, ss muestra una lista de sockets abiertos que no están en modo de escucha (por ejemplo, TCP/UNIX/UDP) que tienen una conexión establecida.
-h, --help
Mostrar un resumen de las opciones.
-V, --version
Mostrar información de la versión.
-H, --no-header
Suprimir la línea de encabezado.
-Q, --no-queues
Suprimir las columnas de cola de envío y recepción.
-O, --oneline
Imprimir los datos de cada socket en una sola línea.
-n, --numeric
No intentar resolver los nombres de los servicios. Mostrar los valores exactos de ancho de banda, en lugar de los valores fáciles de leer.
-r, --resolve
Intentar resolver las direcciones/puertos numéricos.
-a, --all
Mostrar tanto los sockets en modo de escucha como los que no lo están (para TCP, esto significa conexiones establecidas).
-l, --listening
Mostrar solo los sockets en modo de escucha (estos se omiten por defecto).
-B, --bound-inactive
Mostrar solo los sockets TCP enlazados pero inactivos (no en modo de escucha, conexión, etc.) (estos se omiten por defecto).
-o, --options
Mostrar información del temporizador. Para el protocolo TCP, el formato de salida es:
temporizador:(<nombre_temporizador>,<tiempo_expiración>,<retransmisiones>)
<nombre_temporizador>
el nombre del temporizador; existen cinco tipos de nombres de temporizador:
on: significa uno de estos temporizadores: temporizador de retransmisión TCP, temporizador de retransmisión temprana TCP y temporizador de sonda de pérdida final
keepalive: temporizador de reactivación TCP
timewait: temporizador de la etapa de espera
persist: temporizador de sonda de ventana cero
unknown: ninguno de los temporizadores anteriores
<tiempo_expiración>
cuánto tiempo tardará en expirar el temporizador
<retransmisiones>
cuántas veces se ha producido la retransmisión
-e, --extended
Mostrar información detallada del socket. El formato de salida es:
uid:<número_uid> ino:<número_inode> sk:<cookie>
<número_uid>
el ID de usuario al que pertenece el socket
<número_inode>
el número de inode del socket en VFS
<cookie>
un UUID del socket
-m, --memory
Mostrar el uso de memoria del socket. El formato de salida es:
skmem:(r<memoria_asignada_rmem>,rb<búfer_recepción>,t<memoria_asignada_wmem>,tb<búfer_envío>,
f<memoria_asignada_fwd>,w<memoria_en_cola_wmem>,o<memoria_opcional>,
bl<cola_posterior>,d<socket_drop>)
<memoria_asignada_rmem>
la memoria asignada para recibir paquetes
<búfer_recepción>
la memoria total que se puede asignar para recibir paquetes
<memoria_asignada_wmem>
la memoria utilizada para enviar paquetes (que ya se han enviado a la capa 3)
<búfer_envío>
la memoria total que se puede asignar para enviar paquetes
<memoria_asignada_fwd>
la memoria asignada por el socket como caché, pero que aún no se utiliza para recibir/enviar
paquetes. Si se necesita memoria para enviar/recibir paquetes, la memoria de esta caché se utilizará
antes de asignar memoria adicional.
<wmem_queued>
La memoria asignada para enviar paquetes (que aún no se han enviado a la capa 3)
<opt_mem>
La memoria utilizada para almacenar la opción de socket, por ejemplo, la clave para la firma TCP MD5
<back_log>
La memoria utilizada para la cola de espera del socket. En un contexto de proceso, si el proceso está recibiendo paquetes y se recibe un nuevo paquete, se colocará en la cola de espera del socket, para que el proceso pueda recibirlo inmediatamente
<sock_drop>
El número de paquetes descartados antes de que se desmultiplexen en el socket
-p, --processes
Mostrar el proceso que utiliza el socket.
-T, --threads
Mostrar el hilo que utiliza el socket. Implica -p.
-i, --info
Mostrar la información interna de TCP. Los siguientes campos pueden aparecer:
ts Mostrar la cadena "ts" si la opción de marca de tiempo está configurada
sack Mostrar la cadena "sack" si la opción SACK está configurada
ecn Mostrar la cadena "ecn" si la opción de notificación de congestión explícita está configurada
ecnseen
Mostrar la cadena "ecnseen" si se encuentra la marca "saw ecn" en los paquetes recibidos
fastopen
Mostrar la cadena "fastopen" si la opción de apertura rápida está configurada
cong_alg
El nombre del algoritmo de control de congestión, el algoritmo de control de congestión predeterminado es "cubic"
wscale:<snd_wscale>:<rcv_wscale>
Si se utiliza la opción de escala de ventana, este campo muestra el factor de escala de envío y el factor de escala de recepción
rto:<icsk_rto>
El valor de tiempo de espera de retransmisión TCP, la unidad es milisegundos
backoff:<icsk_backoff>
Se utiliza para la retransmisión de retroceso exponencial, el valor real del tiempo de espera de retransmisión es icsk_rto << icsk_backoff
rtt:<rtt>/<rttvar>
rtt es el tiempo promedio de ida y vuelta, rttvar es la desviación media de rtt, sus unidades son milisegundos
ato:<ato>
Tiempo de espera de reconocimiento, unidad en milisegundos, se utiliza para el modo de reconocimiento diferido
mss:<mss>
Tamaño máximo del segmento
cwnd:<cwnd>
Tamaño de la ventana de control de congestión
pmtu:<pmtu>
Valor de la MTU de la ruta
ssthresh:<ssthresh>
Umbral de inicio lento de la ventana de control de congestión TCP
bytes_acked:<bytes_acked>
Bytes reconocidos
bytes_received:<bytes_received>
Bytes recibidos
segs_out:<segs_out>
Segmentos enviados
segs_in:<segs_in>
Segmentos recibidos
send <send_bps>bps
Bytes por segundo de salida
lastsnd:<lastsnd>
Cuánto tiempo ha pasado desde que se envió el último paquete, la unidad es milisegundos
lastrcv:<lastrcv>
Cuánto tiempo ha pasado desde que se recibió el último paquete, la unidad es milisegundos
lastack:<lastack>
Cuánto tiempo ha pasado desde que se recibió el último acuse de recibo, la unidad es milisegundos
pacing_rate <pacing_rate>bps/<max_pacing_rate>bps
La tasa de ritmo y la tasa de ritmo máxima
rcv_space:<rcv_space>
Una variable auxiliar para la sintonización automática interna del socket de búfer de recepción TCP
tcp-ulp-mptcp flags:[MmBbJjecv] token:<rem_token(rem_id)/loc_token(loc_id)> seq:<sn> sfseq:<ssn> ssnoff:<off> maplen:<maplen>
Información del subflujo MPTCP
--tos Mostrar la información de ToS y prioridad. Los siguientes campos pueden aparecer:
tos Byte de servicio de tipo IPv4
tclass Byte de clase de tráfico IPv6
class_id
Id. de clase establecido por el grupo de control cgroup net. Si la clase es cero, esto muestra la prioridad establecida por SO_PRIORITY.
--cgroup
Mostrar la información del grupo de control. Los siguientes campos pueden aparecer:
cgroup Ruta del cgroup v2. Esta ruta es relativa al punto de montaje de la jerarquía.
--tipcinfo
Mostrar información interna del socket tipc.
-K, --kill
Intenta cerrar los sockets por la fuerza. Esta opción muestra los sockets que se cierran con éxito y omite silenciosamente los sockets que el kernel no admite para el cierre. Solo admite sockets IPv4 e IPv6.
-s, --summary
Imprimir estadísticas resumidas. Esta opción no analiza las listas de sockets, sino que obtiene los resúmenes de varias fuentes. Es útil cuando la cantidad de sockets es tan grande que analizar /proc/net/tcp resulta complicado.
-E, --events
Mostrar continuamente los sockets a medida que se destruyen.
-Z, --context
Similar a la opción -p, pero también muestra el contexto de seguridad del proceso. Si se utiliza la opción -T, también muestra el contexto de seguridad del hilo.
Para los sockets netlink(7), el contexto del proceso iniciador se muestra de la siguiente manera:
Si hay un PID válido, se muestra el contexto del proceso.
Si el destino es el kernel (pid = 0), se muestra el contexto inicial del kernel.
Si se ha asignado un identificador único por el kernel o el usuario de netlink, se muestra el contexto como "no disponible". Esto generalmente indica que un proceso tiene más de un socket netlink activo.
-z, --contexts
Similar a la opción -Z, pero también muestra el contexto del socket. El contexto del socket se toma del inodo asociado y no es el contexto real del socket que mantiene el kernel. Los sockets normalmente se etiquetan con el contexto del proceso que lo crea, sin embargo, el contexto que se muestra reflejará cualquier regla de transición de rol, tipo y/o rango de política aplicada, y por lo tanto es una referencia útil.
-N NSNAME, --net=NSNAME
Cambiar al espacio de nombres de red especificado.
-b, --bpf
Mostrar los filtros BPF clásicos del socket (solo los administradores pueden obtener esta información).
-4, --ipv4
Mostrar solo los sockets de la versión 4 de IP (alias para -f inet).
-6, --ipv6
Mostrar solo los sockets de la versión 6 de IP (alias para -f inet6).
-0, --packet
Mostrar los sockets PACKET (alias para -f link).
-t, --tcp
Mostrar los sockets TCP.
-u, --udp
Mostrar los sockets UDP.
-d, --dccp
Mostrar los sockets DCCP.
-w, --raw
Mostrar los sockets RAW.
-x, --unix
Mostrar los sockets de dominio Unix (alias para -f unix).
-S, --sctp
Mostrar los sockets SCTP.
--tipc Mostrar los sockets tipc (alias para -f tipc).
--vsock
Mostrar los sockets vsock (alias para -f vsock).
--xdp Mostrar los sockets XDP (alias para -f xdp).
-M, --mptcp
Mostrar los sockets MPTCP.
--inet-sockopt
Mostrar las opciones del socket inet.
-f FAMILY, --family=FAMILY
Mostrar los sockets del tipo FAMILY. Actualmente, se admiten las siguientes familias: unix, inet, inet6, link, netlink, vsock, tipc, xdp.
-A QUERY, --query=QUERY, --socket=QUERY
Lista de tablas de sockets para volcar, separadas por comas. Los siguientes identificadores son comprendidos: 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. Cualquier elemento de la lista puede tener opcionalmente el prefijo de un signo de exclamación (!) para excluir ese elemento de la tabla de sockets que se va a volcar.
-D FILE, --diag=FILE
No mostrar nada, simplemente volcar la información sin procesar sobre los sockets TCP en el archivo FILE después de aplicar los filtros. Si FILE es -, se utiliza stdout.
-F FILE, --filter=FILE
Leer la información del filtro desde el archivo FILE. Cada línea de FILE se interpreta como una opción de línea de comandos. Si FILE es -, se utiliza stdin.
--bpf-maps
Mostrar de forma legible todas las entradas de datos locales de socket BPF para cada socket.
--bpf-map-id=MAP_ID
Mostrar de forma legible las entradas de datos locales de socket BPF para el ID de mapa solicitado. Se puede utilizar varias veces.
FILTER := [ state STATE-FILTER ] [ EXPRESSION ]
Consulte la documentación oficial para obtener más detalles sobre los filtros.
STATE-FILTER
STATE-FILTER permite construir un conjunto arbitrario de estados para coincidir. Su sintaxis es una secuencia de palabras clave state y exclude seguidas del identificador del estado.
Los identificadores disponibles son:
All: todos los estados estándar TCP: established, syn-sent, syn-recv, fin-wait-1, fin-wait-2, timewait, closed, close-wait, last-ack, listening y closing.
all: para todos los estados
connected: todos los estados excepto listening y closed
synchronized: todos los estados conectados excepto syn-sent
bucket: estados que se mantienen como minisockets, es decir, time-wait y syn-recv
big: el opuesto a bucket
bound-inactive: sockets enlazados pero inactivos (no en estado de escucha, conexión, etc.)
EXPRESSION
EXPRESSION permite filtrar en función de criterios específicos. EXPRESSION consta de una serie de predicados combinados por operadores booleanos. Los operadores posibles en orden creciente de precedencia son or (o | o ||), and (o & o &&) y not (o !). Si no hay ningún operador entre predicados consecutivos, se asume un operador and implícito. Las subexpresiones se pueden agrupar con "(" y ")".
Los siguientes predicados son compatibles:
{dst|src} [=] HOST
Comprueba si el destino o la fuente coincide con HOST. Consulte la sección SINTAXIS DE HOST para obtener más detalles.
{dport|sport} [OP] [FAMILY:]:PORT
Compara el puerto de destino o fuente con PORT. OP puede ser cualquiera de "<", "<=", "=", "!=", ">=" y ">". Siguiendo las reglas aritméticas normales. FAMILY y PORT se describen como en la sección SINTAXIS DE HOST.
dev [=|!=] DEVICE
Coincide en función del dispositivo que utiliza la conexión. DEVICE puede ser un nombre de dispositivo o el índice de la interfaz.
fwmark [=|!=] MASK
Coincide en función del valor fwmark de la conexión. Esto puede ser un valor de marca específico o un valor de marca seguido de una barra diagonal y una máscara de bits que indica qué bits se utilizarán en la comparación. Por ejemplo, "fwmark = 0x01/0x03" coincidiría si los dos bits menos significativos de fwmark fueran 0x01.
cgroup [=|!=] PATH
Coincide si la conexión forma parte de un cgroup en la ruta especificada.
autobound
Coincide si el puerto o la ruta de la dirección de origen se asignó automáticamente (en lugar de especificarse explícitamente).
La mayoría de los operadores tienen alias. Si no se proporciona ningún operador, se asume el operador =. Cada uno de los siguientes grupos de operadores son equivalentes:
= == eq
!= ne neq
> gt
< lt
>= ge geq
<= le leq
! not
| || or
& && and
SINTAXIS DEL HOST
La sintaxis general del host es [FAMILIA:]DIRECCIÓN[:PUERTO].
FAMILIA debe ser una de las familias soportadas por la opción -f. Si no se especifica, por defecto
se utiliza la familia dada con la opción -f, y si esta también falta, se asumirá que es inet o inet6.
Tenga en cuenta que todas las condiciones de host en la expresión deben ser todas de la misma familia o solo inet e inet6. Si hay alguna otra mezcla de familias, los resultados probablemente serán inesperados.
La forma de DIRECCIÓN y PUERTO depende de la familia utilizada. "*" se puede usar como comodín para la dirección o el puerto. Los detalles para cada familia son los siguientes:
unix DIRECCIÓN es un patrón glob (vea fnmatch(3)) que se hará coincidir de forma que no distinga entre mayúsculas y minúsculas con
la dirección del socket unix. Se admiten tanto los nombres de ruta como los nombres abstractos. Las direcciones Unix
no admiten un puerto y no se puede usar "\*" como comodín.
link DIRECCIÓN es el nombre (que no distingue entre mayúsculas y minúsculas) del protocolo Ethernet que se va a coincidir. PUERTO es
un nombre de dispositivo o un índice de dispositivo para el dispositivo de enlace deseado, como se ve en la salida de
ip link.
netlink
DIRECCIÓN es un descriptor de la familia netlink. Los valores posibles proceden de
/etc/iproute2/nl_protos. PUERTO es el ID de puerto del socket, que normalmente es el mismo que
el ID de proceso propietario. Se puede usar el valor "kernel" para representar el kernel (ID de puerto de
0).
vsock DIRECCIÓN es un entero que representa la dirección CID y PUERTO es el puerto.
inet y inet6
DIRECCIÓN es una dirección IP (ya sea v4 o v6, según la familia) o un nombre de host DNS que se resuelve en una dirección IP de la versión requerida. Una dirección IPv6 debe estar encerrada entre "["
y "]" para diferenciar el separador de puerto. La dirección también puede tener un prefijo
longitud dada en notación CIDR (una barra seguida de la longitud del prefijo en bits). PUERTO es el puerto de socket numérico o el nombre del servicio para que coincida.
EJEMPLOS DE USO
ss -t -a
Mostrar todos los sockets TCP.
ss -t -a -Z
Mostrar todos los sockets TCP con contextos de seguridad SELinux del proceso.
ss -u -a
Mostrar todos los sockets UDP.
ss -o state established '( dport = :ssh or sport = :ssh )'
Mostrar todas las conexiones ssh establecidas.
ss -x src /tmp/.X11-unix/*
Encontrar todos los procesos locales conectados al servidor X.
ss -o state fin-wait-1 '( sport = :http or sport = :https )' dst 193.233.7/24
Enumerar todos los sockets tcp en estado FIN-WAIT-1 para nuestro servidor apache a la red 193.233.7/24 y observar sus temporizadores.
ss -a -A 'all,!tcp'
Enumerar los sockets en todos los estados de todas las tablas de sockets, pero no TCP.
VER TAMBIÉN
ip(8), RFC 793 - https://tools.ietf.org/rfc/rfc793.txt (estados TCP)
AUTOR
ss fue escrito por Alexey Kuznetsov, <_>.
Esta página de manual fue escrita por Michael Prokop <_> para el proyecto Debian (pero puede ser utilizado por otros).