Fatmawati Achmad Zaenuri / Shutterstock
los ss
El comando es un reemplazo moderno del clásico. netstat
. Puede usarlo en Linux para obtener estadísticas sobre sus conexiones de red. Aquí se explica cómo trabajar con esta práctica herramienta.
El comando ss contra netstat
Un reemplazo de lo obsoleto netstat
pedido, ss
te da información detallada sobre cómo se comunica su computadora con otras computadoras, redes y servicios.
ss
muestra estadísticas de Protocolo de Control de Transmisión (TCP), Protocolo de datagrama de usuario (UDP), Unix (interproceso)y enchufes crudos. Capturas crudas operar en Nivel OSI de la redlo que significa que los encabezados TCP y UDP deben ser manejados por el software de la aplicación, no por la capa de transporte. Protocolo de mensajes de control de Internet (ICMP) y silbido la utilidad ambos usan sockets sin procesar.
Utilice ss
No necesitas instalar ss
, porque ya es parte de una distribución de Linux actualizada. Sin embargo, su salida puede ser muy larga: obtuvimos resultados que contenían más de 630 filas. Los resultados también son muy amplios.
Por esta razón, hemos incluido representaciones textuales de los resultados que obtuvimos, ya que no cabrían en una captura de pantalla. Los podamos para que sean más fáciles de manejar.
Lista de conexiones de red
En ayuda de ss
sin la opción de línea de comando enumera los sockets que no están escuchando. Es decir, enumera los sockets que no están escuchando.
Para ver esto, escriba lo siguiente:
ss
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process 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
Las columnas son las siguientes:
- Netid: El tipo de enchufe. En nuestro ejemplo tenemos «u_str», un flujo Unix, un «udp» e «icmp6», un socket ICMP IP versión 6. Puede encontrar más descripciones de Tipos de sockets de Linux en las páginas de manual de Linux.
- Estado: El estado en el que se encuentra el zócalo.
- Recv-Q: El número de paquetes recibidos.
- Enviar-Q: El número de paquetes enviados.
- Dirección local: Puerto: La dirección y el puerto locales (o valores equivalentes para sockets Unix).
- Dirección del mismo nivel: Puerto: La dirección y el puerto remotos (o valores equivalentes para sockets Unix).
Para los sockets UDP, la columna «Estado» suele estar vacía. Para los sockets TCP, puede ser uno de los siguientes:
- ESCUCHA: Solo del lado del servidor. El socket está esperando una solicitud de conexión.
- SIN-ENVIAR: Solo del lado del cliente. Este socket ha realizado una solicitud de conexión y está esperando a ver si se acepta.
- SYN-RECIBIDO: Solo del lado del servidor. Este socket espera un reconocimiento de conexión después de aceptar una solicitud de conexión.
- ESTABLECIDO: Servidor y clientes. Se ha establecido una conexión funcional entre el servidor y el cliente, lo que permite la transferencia de datos entre los dos.
- FIN-ESPERA-1: Servidor y clientes. Este conector espera una solicitud de terminación de conexión desde el conector remoto, o un acuse de recibo de una solicitud de terminación de conexión enviada previamente desde este conector.
- FIN-ESPERA-2: Servidor y clientes. Este conector está esperando una solicitud de terminación de la conexión del conector remoto.
- CIERRE-ESPERA: Servidor y cliente. Este conector está esperando una solicitud de terminación de conexión del usuario local.
- CLAUSURA: Servidor y clientes. Este conector espera un acuse de recibo de la solicitud de terminación de la conexión desde el conector remoto.
- ÚLTIMO RECONOCIMIENTO: Servidor y cliente. Este socket espera un acuse de recibo de la solicitud de terminación de la conexión que envió al socket remoto.
- TIEMPO DE ESPERA: Servidor y clientes. Este socket ha enviado un acuse de recibo al socket remoto para hacerle saber que ha recibido la solicitud para terminar el socket remoto. Ahora está esperando para asegurarse de que se haya recibido el acuse de recibo.
- GRANJA: No hay conexión, por lo que el enchufe se ha interrumpido.
Lista de enchufes de escucha
Para ver las tomas de escucha, agregaremos el -l
opción (escuchar), así:
ss -l
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process 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 /run/user/1000/systemd/notify 32303 * 0
Estos enchufes están todos desconectados y escuchando. El «rtnl» significa enrutamiento de enlace de red, que se utiliza para transferir información entre el kernel y los procesos del espacio de usuario.
Lista de todos los enchufes
Para enumerar todos los enchufes, puede utilizar el -a
opción (todos):
ss -a
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process 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 private/error 23225 * 0 u_str LISTEN 0 100 private/retry 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 [::]:*
La salida contiene todos los sockets, independientemente de su estado.
Lista de sockets TCP
También puede aplicar un filtro para que solo se muestren los sockets coincidentes. Usaremos el -t
(TCP), por lo que solo se enumerarán los sockets TCP:
ss -a -t
Lista de sockets UDP
los -u
(UDP) realiza el mismo tipo de acción de filtrado. Esta vez solo veremos sockets UDP:
ss -a -u
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process 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:domain 0.0.0.0:* ESTAB 0 0 192.168.4.28%enp0s3:bootpc 192.168.4.1:bootps UNCONN 0 0 [::]:mdns [::]:* UNCONN 0 0 [::]:51193 [::]:*
Lista de sockets Unix
Para ver solo sockets Unix, puede incluir el -x
(Unix), como se muestra a continuación:
ss -a -x
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process 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
Lista de enchufes sin procesar
El filtro para enchufes crudos es el -w
opción (sin procesar):
ss -a -w
Lista de enchufes IP versión 4
Los sockets que utilizan TCP / IP versión 4 se pueden enumerar utilizando el -4
(IPV4):
ss -a -4
Lista de enchufes IP versión 6
Puede activar el filtro IP de la versión 6 correspondiente con el -6
(IPV6), así:
ss -a -6
Lista de enchufes por estado
Puede enumerar los sockets por el estado en el que se encuentran con el state
opción. Funciona con estados establecidos, de escucha o cerrados. También usaremos la opción de resolver (-r
), que intenta resolver direcciones de red en nombres y puertos en protocolos.
El siguiente comando buscará conexiones TCP establecidas y ss
intentará resolver los nombres:
ss -t -r state established
Se enumeran cuatro conexiones que están en el estado establecido. El nombre de host, ubuntu20-04, se ha resuelto y se muestra «ssh» en lugar de 22 para la conexión SSH en la segunda línea.
Podemos repetir esto para encontrar tomas de escucha:
ss -t -r state listening
Recv-Q Send-Q Local Address:Port Peer Address:Port Process 0 128 localhost:5939 0.0.0.0:* 0 4096 localhost%lo:domain 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 [::]:*
Lista de sockets por protocolo
Puede enumerar los sockets usando un protocolo particular con el dport
y sport
opciones, que representan los puertos de origen y destino, respectivamente.
Escribimos lo siguiente para listar los sockets que usan el protocolo HTTPS en un established
conexión (tenga en cuenta el espacio después del paréntesis de apertura y antes del paréntesis de cierre):
ss -a state established ‘( dport = :https or sport = :https )’
Podemos usar el nombre del protocolo o el puerto normalmente asociado con ese protocolo. El puerto predeterminado para Sobre protector (SSH) es el puerto 22.
Usaremos el nombre del protocolo en un comando, luego lo repetiremos usando el número de puerto:
ss -a ‘( dport = :ssh or sport = :ssh )’
ss -a ‘( dport = :22 or sport = :22 )’
Como era de esperar, obtenemos los mismos resultados.
Lista de conexiones a una dirección IP específica
Con el dst
(destino), podemos enumerar las conexiones a una dirección IP de destino en particular.
Escribimos lo siguiente:
ss -a dst 192.168.4.25
Identificación de procesos
Para ver qué procesos están usando sockets, puede usar la opción de proceso (-p
), como se muestra a continuación (tenga en cuenta que debe utilizar sudo
):
sudo ss -t -p
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process ESTAB 0 0 192.168.4.28:57650 54.218.19.119:https users:(("firefox",pid=3378,fd=151)) ESTAB 0 0 192.168.4.28:ssh 192.168.4.25:43946 users:(("sshd",pid=4086,fd=4),("sshd",pid=3985,fd=4))
Esto nos muestra que las dos conexiones establecidas en los sockets TCP son utilizadas por el demonio SSH y Firefox.
Un digno sucesor
los ss
El comando proporciona la misma información proporcionada anteriormente por netstat
, pero de una forma más sencilla y accesible. Puede consultar el página man para más opciones y consejos.