![Una ventana de terminal en un sistema portátil Linux.](https://www.howtogeek.com/wp-content/uploads/2019/09/xstock-lede-linux-see-attribution.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.rjm91kC_Jl.png)
El
ss
comando es un reemplazo moderno para el 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 versus netstat
Un reemplazo para el
netstat
comando en desuso , ss
le brinda información detallada sobre cómo su computadora se comunica con otras computadoras, redes y servicios.ss
muestra estadísticas para el Protocolo de control de transmisión (TCP), Protocolo de datagramas de usuario (UDP), Unix (interproceso) y sockets sin procesar. Los sockets sin procesar funcionan en el nivel OSI de la red , lo que significa que los encabezados TCP y UDP deben ser manejados por el software de la aplicación, no por la capa de transporte. Los mensajes del Protocolo de mensajes de control de Internet (ICMP) y la utilidad de ping utilizan sockets sin procesar.Usando ss
No tiene que instalar
ss
, ya que es parte de una distribución de Linux actualizada. Sin embargo, su salida puede ser muy larga: hemos tenido resultados que contienen más de 630 líneas. Los resultados también son muy amplios.
Debido a esto, hemos incluido representaciones de texto de los resultados que obtuvimos, ya que no caben en una captura de pantalla. Los hemos recortado para que sean más manejables.
Listado de conexiones de red
El uso
ss
sin opciones de línea de comandos enumera los sockets que no escuchan. Es decir, enumera los enchufes que no están en estado de escucha.
Para ver esto, escriba lo siguiente:
ss
![ss en una ventana de terminal](https://www.howtogeek.com/wp-content/uploads/2020/07/2-2.png)
![Salida de ss en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/x1-1.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.c3DiaEfgex.png)
Netid State Recv-Q Send-Q Dirección local: puerto Dirección par: proceso de puerto 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 socket. En nuestro ejemplo, tenemos "u_str", una secuencia de Unix, un "udp" y "icmp6", un socket ICMP de la versión 6 de IP. Puede encontrar más descripciones de los tipos de socket 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.
- Send-Q : El número de paquetes enviados.
- Dirección local: Puerto : la dirección local y el puerto (o valores equivalentes para sockets Unix).
- Dirección de igual: puerto : la dirección remota y el puerto (o valores equivalentes para sockets Unix).
Para los sockets UDP, la columna "Estado" generalmente está en blanco. Para los sockets TCP, puede ser uno de los siguientes:
- ESCUCHAR: solo del lado del servidor. El socket está esperando una solicitud de conexión.
- SINCRONIZADO: solo del lado del cliente. Este socket ha realizado una solicitud de conexión y está esperando para ver si se acepta.
- SINCRONIZADO: solo del lado del servidor. Este socket está esperando una confirmación de conexión después de aceptar una solicitud de conexión.
- ESTABLECIDO: Servidor y clientes. Se ha establecido una conexión de trabajo entre el servidor y el cliente, lo que permite transferir datos entre los dos.
- FIN-WAIT-1: Servidor y clientes. Este socket está esperando una solicitud de finalización de conexión desde el socket remoto, o un acuse de recibo de una solicitud de finalización de conexión que se envió previamente desde este socket.
- FIN-WAIT-2: Servidor y clientes. Este socket está esperando una solicitud de terminación de conexión desde el socket remoto.
- CLOSE-WAIT: servidor y cliente. Este socket está esperando una solicitud de finalización de conexión del usuario local.
- CIERRE: Servidor y clientes. Este socket está esperando un acuse de recibo de solicitud de terminación de conexión desde el socket remoto.
- ÚLTIMO ACK: Servidor y cliente. Este socket está esperando un acuse de recibo de la solicitud de terminación de conexión que envió al socket remoto.
- TIME-WAIT: Servidor y clientes. Este socket envió un acuse de recibo al socket remoto para informarle que recibió la solicitud de finalización del socket remoto. Ahora está esperando asegurarse de que se recibió el reconocimiento.
- CERRADO: no hay conexión, por lo que el socket se ha terminado.
Listado de zócalos de escucha
Para ver los enchufes de escucha agregaremos la
-l
opción (escuchar), así:ss -l
![ss -l en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/3-2.png)
Netid State Recv-Q Send-Q Dirección local: puerto Dirección par: proceso de puerto nl UNCONN 0 0 rtnl: NetworkManager / 535 * nl UNCONN 0 0 rtnl: evolution-addre / 2987 * ... u_str ESCUCHAR 0 4096 / ejecutar / systemd / privado 13349 * 0 u_seq ESCUCHAR 0 4096 / ejecutar / udev / control 13376 * 0 u_str ESCUCHAR 0 4096 /tmp/.X11-unix/X0 33071 * 0 u_dgr UNCONN 0 0 / run / systemd / journal / syslog 13360 * 0 u_str ESCUCHAR 0 4096 /run/systemd/fsck.progress 13362 * 0 u_dgr UNCONN 0 0 / ejecutar / usuario / 1000 / systemd / notificar 32303 * 0
Todos estos enchufes están desconectados y escuchan. El "rtnl" significa enrutamiento netlink, que se utiliza para transferir información entre el núcleo y los procesos de espacio de usuario.
Listado de todos los enchufes
Para enumerar todos los sockets, puede usar la
-a
opción (todos):ss -a
![ss -a en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/4-2.png)
Netid State Recv-Q Send-Q Dirección local: puerto Dirección par: proceso de puerto nl UNCONN 0 0 rtnl: NetworkManager / 535 * nl UNCONN 0 0 rtnl: evolution-addre / 2987 * ... u_str ESCUCHAR 0100 público / showq 23222 * 0 u_str ESCUCHAR 0100 privado / error 23225 * 0 u_str ESCUCHAR 0100 privado / reintentar 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 ESCUCHAR 0 128 [::]: ssh [::]: * tcp ESCUCHAR 0 5 [:: 1]: ipp [::]: * tcp ESCUCHAR 0 100 [:: 1]: smtp [::]: *
La salida contiene todos los sockets, independientemente del estado.
Listado de sockets TCP
También puede aplicar un filtro para que solo se muestren los sockets coincidentes. Utilizaremos la
-t
opción (TCP), por lo que solo se enumerarán los sockets TCP:ss -a -t
![ss -a -t en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/5-2.png)
Listado de sockets UDP
La
-u
opción (UDP) realiza el mismo tipo de acción de filtrado. Esta vez, solo veremos sockets UDP:ss -a -u
![ss -a -u en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/6-1.png)
Estado Recv-Q Enviar-Q Dirección local: Puerto Dirección par: Proceso de puerto 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: dominio 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 [::]: *
Listado de sockets Unix
Para ver solo los sockets Unix, puede incluir la
-x
opción (Unix), como se muestra a continuación:ss -a -x
![ss -a -x en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/x7-1.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.-ptuvkUJZ0.png)
Netid State Recv-Q Send-Q Dirección local: puerto Dirección par: proceso de puerto 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
Listado de zócalos sin procesar
El filtro para sockets sin procesar es la
-w
opción (sin procesar):ss -a -w
![ss -a -w en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/8-1.png)
Listado de sockets de IP versión 4
Los sockets que utilizan el protocolo TCP / IP versión 4 se pueden enumerar utilizando la
-4
opción (IPV4):ss -a -4
![ss -a -4 en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/9-1.png)
Listado de zócalos IP versión 6
Puede activar el filtro correspondiente de la versión 6 de IP con la
-6
opción (IPV6), así:ss -a -6
![ss -a -6 en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/10-1.png)
Listado de sockets por estado
Puede enumerar los sockets por el estado en el que están con la
state
opción. Esto funciona con estados establecidos, de escucha o cerrados. También usaremos la opción de resolución ( -r
), que intenta resolver las direcciones de red a los nombres y los puertos a los protocolos.
El siguiente comando buscará las conexiones TCP establecidas e
ss
intentará resolver los nombres:ss -t -r estado establecido
![Estado ss -t -r establecido en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/14-1.png)
Se enumeran cuatro conexiones que se encuentran 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 buscar tomas en el estado de escucha:
ss -t -r escucha del estado
![ss -t -r estado escuchando en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/15-1.png)
Recv-Q Send-Q Dirección local: puerto Dirección par: proceso de puerto 0 128 localhost: 5939 0.0.0.0:* 0 4096 localhost% lo: dominio 0.0.0.0:* 0128 0.0.0.0:ssh 0.0.0.0:* 0 5 localhost: ipp 0.0.0.0:* 0100 localhost: smtp 0.0.0.0:* 0 128 [::]: ssh [::]: * 0 5 ip6-localhost: ipp [::]: * 0 100 ip6-localhost: smtp [::]: *
Listado de sockets por protocolo
Puede enumerar los sockets utilizando un protocolo particular con las opciones
dport
y sport
, que representan los puertos de destino y de origen, respectivamente.
Escribimos lo siguiente para enumerar los sockets utilizando el protocolo HTTPS en una
established
conexión (observe el espacio después del paréntesis de apertura y antes del cierre):ss -un estado establecido '(dport =: https o sport =: https)'
![ss -un estado establecido '(dport =: https o sport =: https)' en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/17.png)
Podemos usar el nombre del protocolo o el puerto generalmente asociado con ese protocolo. El puerto predeterminado para Secure Shell (SSH) es el puerto 22.
Usaremos el nombre del protocolo en un comando y luego lo repetiremos usando el número de puerto:
ss -a '(dport =: ssh o sport =: ssh)'
ss -a '(dport =: 22 o sport =: 22)'
![ss -a '(dport =: ssh o sport =: ssh)' en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/x12-1.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.4J0W0AMJK4.png)
Como se esperaba, obtenemos los mismos resultados.
Listado de conexiones a una dirección IP específica
Con la
dst
opción (destino), podemos enumerar las conexiones a una dirección IP de destino particular.
Escribimos lo siguiente:
ss -a dst 192.168.4.25
![ss -a dst 192.168.4.25 en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/13-1.png)
Procesos identificativos
Para ver qué procesos están usando los sockets, puede usar la opción de procesos (
-p
), como se muestra a continuación (tenga en cuenta que debe usar sudo
):sudo ss -t -p
![sudo ss -t -p en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/16-1.png)
Estado Recv-Q Enviar-Q Dirección local: Puerto Dirección par: Proceso de puerto ESTAB 0 0 192.168.4.28:57650 54.218.19.119:https usuarios: (("firefox", pid = 3378, fd = 151)) ESTAB 0 0 192.168.4.28:ssh 192.168.4.25:43946 usuarios: (("sshd", pid = 4086, fd = 4), ("sshd", pid = 3985, fd = 4))
Esto nos muestra que las dos conexiones establecidas en los sockets TCP están siendo utilizadas por el demonio SSH y Firefox.
Un digno sucesor
El
ss
comando proporciona la misma información proporcionada previamente por netstat
, pero de una manera más simple y accesible. Puede consultar la página del manual para obtener más opciones y consejos.![Una ventana de terminal en un sistema portátil Linux.](https://www.howtogeek.com/wp-content/uploads/2019/09/xstock-lede-linux-see-attribution.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.rjm91kC_Jl.png)
El
ss
comando es un reemplazo moderno para el 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 versus netstat
Un reemplazo para el
netstat
comando en desuso , ss
le brinda información detallada sobre cómo su computadora se comunica con otras computadoras, redes y servicios.ss
muestra estadísticas para el Protocolo de control de transmisión (TCP), Protocolo de datagramas de usuario (UDP), Unix (interproceso) y sockets sin procesar. Los sockets sin procesar funcionan en el nivel OSI de la red , lo que significa que los encabezados TCP y UDP deben ser manejados por el software de la aplicación, no por la capa de transporte. Los mensajes del Protocolo de mensajes de control de Internet (ICMP) y la utilidad de ping utilizan sockets sin procesar.Usando ss
No tiene que instalar
ss
, ya que es parte de una distribución de Linux actualizada. Sin embargo, su salida puede ser muy larga: hemos tenido resultados que contienen más de 630 líneas. Los resultados también son muy amplios.
Debido a esto, hemos incluido representaciones de texto de los resultados que obtuvimos, ya que no caben en una captura de pantalla. Los hemos recortado para que sean más manejables.
Listado de conexiones de red
El uso
ss
sin opciones de línea de comandos enumera los sockets que no escuchan. Es decir, enumera los enchufes que no están en estado de escucha.
Para ver esto, escriba lo siguiente:
ss
![ss en una ventana de terminal](https://www.howtogeek.com/wp-content/uploads/2020/07/2-2.png)
![Salida de ss en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/x1-1.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.c3DiaEfgex.png)
Netid State Recv-Q Send-Q Dirección local: puerto Dirección par: proceso de puerto 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 socket. En nuestro ejemplo, tenemos "u_str", una secuencia de Unix, un "udp" y "icmp6", un socket ICMP de la versión 6 de IP. Puede encontrar más descripciones de los tipos de socket 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.
- Send-Q : El número de paquetes enviados.
- Dirección local: Puerto : la dirección local y el puerto (o valores equivalentes para sockets Unix).
- Dirección de igual: puerto : la dirección remota y el puerto (o valores equivalentes para sockets Unix).
Para los sockets UDP, la columna "Estado" generalmente está en blanco. Para los sockets TCP, puede ser uno de los siguientes:
- ESCUCHAR: solo del lado del servidor. El socket está esperando una solicitud de conexión.
- SINCRONIZADO: solo del lado del cliente. Este socket ha realizado una solicitud de conexión y está esperando para ver si se acepta.
- SINCRONIZADO: solo del lado del servidor. Este socket está esperando una confirmación de conexión después de aceptar una solicitud de conexión.
- ESTABLECIDO: Servidor y clientes. Se ha establecido una conexión de trabajo entre el servidor y el cliente, lo que permite transferir datos entre los dos.
- FIN-WAIT-1: Servidor y clientes. Este socket está esperando una solicitud de finalización de conexión desde el socket remoto, o un acuse de recibo de una solicitud de finalización de conexión que se envió previamente desde este socket.
- FIN-WAIT-2: Servidor y clientes. Este socket está esperando una solicitud de terminación de conexión desde el socket remoto.
- CLOSE-WAIT: servidor y cliente. Este socket está esperando una solicitud de finalización de conexión del usuario local.
- CIERRE: Servidor y clientes. Este socket está esperando un acuse de recibo de solicitud de terminación de conexión desde el socket remoto.
- ÚLTIMO ACK: Servidor y cliente. Este socket está esperando un acuse de recibo de la solicitud de terminación de conexión que envió al socket remoto.
- TIME-WAIT: Servidor y clientes. Este socket envió un acuse de recibo al socket remoto para informarle que recibió la solicitud de finalización del socket remoto. Ahora está esperando asegurarse de que se recibió el reconocimiento.
- CERRADO: no hay conexión, por lo que el socket se ha terminado.
Listado de zócalos de escucha
Para ver los enchufes de escucha agregaremos la
-l
opción (escuchar), así:ss -l
![ss -l en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/3-2.png)
Netid State Recv-Q Send-Q Dirección local: puerto Dirección par: proceso de puerto nl UNCONN 0 0 rtnl: NetworkManager / 535 * nl UNCONN 0 0 rtnl: evolution-addre / 2987 * ... u_str ESCUCHAR 0 4096 / ejecutar / systemd / privado 13349 * 0 u_seq ESCUCHAR 0 4096 / ejecutar / udev / control 13376 * 0 u_str ESCUCHAR 0 4096 /tmp/.X11-unix/X0 33071 * 0 u_dgr UNCONN 0 0 / run / systemd / journal / syslog 13360 * 0 u_str ESCUCHAR 0 4096 /run/systemd/fsck.progress 13362 * 0 u_dgr UNCONN 0 0 / ejecutar / usuario / 1000 / systemd / notificar 32303 * 0
Todos estos enchufes están desconectados y escuchan. El "rtnl" significa enrutamiento netlink, que se utiliza para transferir información entre el núcleo y los procesos de espacio de usuario.
Listado de todos los enchufes
Para enumerar todos los sockets, puede usar la
-a
opción (todos):ss -a
![ss -a en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/4-2.png)
Netid State Recv-Q Send-Q Dirección local: puerto Dirección par: proceso de puerto nl UNCONN 0 0 rtnl: NetworkManager / 535 * nl UNCONN 0 0 rtnl: evolution-addre / 2987 * ... u_str ESCUCHAR 0100 público / showq 23222 * 0 u_str ESCUCHAR 0100 privado / error 23225 * 0 u_str ESCUCHAR 0100 privado / reintentar 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 ESCUCHAR 0 128 [::]: ssh [::]: * tcp ESCUCHAR 0 5 [:: 1]: ipp [::]: * tcp ESCUCHAR 0 100 [:: 1]: smtp [::]: *
La salida contiene todos los sockets, independientemente del estado.
Listado de sockets TCP
También puede aplicar un filtro para que solo se muestren los sockets coincidentes. Utilizaremos la
-t
opción (TCP), por lo que solo se enumerarán los sockets TCP:ss -a -t
![ss -a -t en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/5-2.png)
Listado de sockets UDP
La
-u
opción (UDP) realiza el mismo tipo de acción de filtrado. Esta vez, solo veremos sockets UDP:ss -a -u
![ss -a -u en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/6-1.png)
Estado Recv-Q Enviar-Q Dirección local: Puerto Dirección par: Proceso de puerto 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: dominio 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 [::]: *
Listado de sockets Unix
Para ver solo los sockets Unix, puede incluir la
-x
opción (Unix), como se muestra a continuación:ss -a -x
![ss -a -x en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/x7-1.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.-ptuvkUJZ0.png)
Netid State Recv-Q Send-Q Dirección local: puerto Dirección par: proceso de puerto 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
Listado de zócalos sin procesar
El filtro para sockets sin procesar es la
-w
opción (sin procesar):ss -a -w
![ss -a -w en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/8-1.png)
Listado de sockets de IP versión 4
Los sockets que utilizan el protocolo TCP / IP versión 4 se pueden enumerar utilizando la
-4
opción (IPV4):ss -a -4
![ss -a -4 en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/9-1.png)
Listado de zócalos IP versión 6
Puede activar el filtro correspondiente de la versión 6 de IP con la
-6
opción (IPV6), así:ss -a -6
![ss -a -6 en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/10-1.png)
Listado de sockets por estado
Puede enumerar los sockets por el estado en el que están con la
state
opción. Esto funciona con estados establecidos, de escucha o cerrados. También usaremos la opción de resolución ( -r
), que intenta resolver las direcciones de red a los nombres y los puertos a los protocolos.
El siguiente comando buscará las conexiones TCP establecidas e
ss
intentará resolver los nombres:ss -t -r estado establecido
![Estado ss -t -r establecido en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/14-1.png)
Se enumeran cuatro conexiones que se encuentran 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 buscar tomas en el estado de escucha:
ss -t -r escucha del estado
![ss -t -r estado escuchando en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/15-1.png)
Recv-Q Send-Q Dirección local: puerto Dirección par: proceso de puerto 0 128 localhost: 5939 0.0.0.0:* 0 4096 localhost% lo: dominio 0.0.0.0:* 0128 0.0.0.0:ssh 0.0.0.0:* 0 5 localhost: ipp 0.0.0.0:* 0100 localhost: smtp 0.0.0.0:* 0 128 [::]: ssh [::]: * 0 5 ip6-localhost: ipp [::]: * 0 100 ip6-localhost: smtp [::]: *
Listado de sockets por protocolo
Puede enumerar los sockets utilizando un protocolo particular con las opciones
dport
y sport
, que representan los puertos de destino y de origen, respectivamente.
Escribimos lo siguiente para enumerar los sockets utilizando el protocolo HTTPS en una
established
conexión (observe el espacio después del paréntesis de apertura y antes del cierre):ss -un estado establecido '(dport =: https o sport =: https)'
![ss -un estado establecido '(dport =: https o sport =: https)' en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/17.png)
Podemos usar el nombre del protocolo o el puerto generalmente asociado con ese protocolo. El puerto predeterminado para Secure Shell (SSH) es el puerto 22.
Usaremos el nombre del protocolo en un comando y luego lo repetiremos usando el número de puerto:
ss -a '(dport =: ssh o sport =: ssh)'
ss -a '(dport =: 22 o sport =: 22)'
![ss -a '(dport =: ssh o sport =: ssh)' en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/x12-1.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.4J0W0AMJK4.png)
Como se esperaba, obtenemos los mismos resultados.
Listado de conexiones a una dirección IP específica
Con la
dst
opción (destino), podemos enumerar las conexiones a una dirección IP de destino particular.
Escribimos lo siguiente:
ss -a dst 192.168.4.25
![ss -a dst 192.168.4.25 en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/13-1.png)
Procesos identificativos
Para ver qué procesos están usando los sockets, puede usar la opción de procesos (
-p
), como se muestra a continuación (tenga en cuenta que debe usar sudo
):sudo ss -t -p
![sudo ss -t -p en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/16-1.png)
Estado Recv-Q Enviar-Q Dirección local: Puerto Dirección par: Proceso de puerto ESTAB 0 0 192.168.4.28:57650 54.218.19.119:https usuarios: (("firefox", pid = 3378, fd = 151)) ESTAB 0 0 192.168.4.28:ssh 192.168.4.25:43946 usuarios: (("sshd", pid = 4086, fd = 4), ("sshd", pid = 3985, fd = 4))
Esto nos muestra que las dos conexiones establecidas en los sockets TCP están siendo utilizadas por el demonio SSH y Firefox.
Un digno sucesor
El
ss
comando proporciona la misma información proporcionada previamente por netstat
, pero de una manera más simple y accesible. Puede consultar la página del manual para obtener más opciones y consejos.![Una ventana de terminal en un sistema portátil Linux.](https://www.howtogeek.com/wp-content/uploads/2019/09/xstock-lede-linux-see-attribution.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.rjm91kC_Jl.png)
El
ss
comando es un reemplazo moderno para el 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 versus netstat
Un reemplazo para el
netstat
comando en desuso , ss
le brinda información detallada sobre cómo su computadora se comunica con otras computadoras, redes y servicios.ss
muestra estadísticas para el Protocolo de control de transmisión (TCP), Protocolo de datagramas de usuario (UDP), Unix (interproceso) y sockets sin procesar. Los sockets sin procesar funcionan en el nivel OSI de la red , lo que significa que los encabezados TCP y UDP deben ser manejados por el software de la aplicación, no por la capa de transporte. Los mensajes del Protocolo de mensajes de control de Internet (ICMP) y la utilidad de ping utilizan sockets sin procesar.Usando ss
No tiene que instalar
ss
, ya que es parte de una distribución de Linux actualizada. Sin embargo, su salida puede ser muy larga: hemos tenido resultados que contienen más de 630 líneas. Los resultados también son muy amplios.
Debido a esto, hemos incluido representaciones de texto de los resultados que obtuvimos, ya que no caben en una captura de pantalla. Los hemos recortado para que sean más manejables.
Listado de conexiones de red
El uso
ss
sin opciones de línea de comandos enumera los sockets que no escuchan. Es decir, enumera los enchufes que no están en estado de escucha.
Para ver esto, escriba lo siguiente:
ss
![ss en una ventana de terminal](https://www.howtogeek.com/wp-content/uploads/2020/07/2-2.png)
![Salida de ss en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/x1-1.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.c3DiaEfgex.png)
Netid State Recv-Q Send-Q Dirección local: puerto Dirección par: proceso de puerto 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 socket. En nuestro ejemplo, tenemos "u_str", una secuencia de Unix, un "udp" y "icmp6", un socket ICMP de la versión 6 de IP. Puede encontrar más descripciones de los tipos de socket 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.
- Send-Q : El número de paquetes enviados.
- Dirección local: Puerto : la dirección local y el puerto (o valores equivalentes para sockets Unix).
- Dirección de igual: puerto : la dirección remota y el puerto (o valores equivalentes para sockets Unix).
Para los sockets UDP, la columna "Estado" generalmente está en blanco. Para los sockets TCP, puede ser uno de los siguientes:
- ESCUCHAR: solo del lado del servidor. El socket está esperando una solicitud de conexión.
- SINCRONIZADO: solo del lado del cliente. Este socket ha realizado una solicitud de conexión y está esperando para ver si se acepta.
- SINCRONIZADO: solo del lado del servidor. Este socket está esperando una confirmación de conexión después de aceptar una solicitud de conexión.
- ESTABLECIDO: Servidor y clientes. Se ha establecido una conexión de trabajo entre el servidor y el cliente, lo que permite transferir datos entre los dos.
- FIN-WAIT-1: Servidor y clientes. Este socket está esperando una solicitud de finalización de conexión desde el socket remoto, o un acuse de recibo de una solicitud de finalización de conexión que se envió previamente desde este socket.
- FIN-WAIT-2: Servidor y clientes. Este socket está esperando una solicitud de terminación de conexión desde el socket remoto.
- CLOSE-WAIT: servidor y cliente. Este socket está esperando una solicitud de finalización de conexión del usuario local.
- CIERRE: Servidor y clientes. Este socket está esperando un acuse de recibo de solicitud de terminación de conexión desde el socket remoto.
- ÚLTIMO ACK: Servidor y cliente. Este socket está esperando un acuse de recibo de la solicitud de terminación de conexión que envió al socket remoto.
- TIME-WAIT: Servidor y clientes. Este socket envió un acuse de recibo al socket remoto para informarle que recibió la solicitud de finalización del socket remoto. Ahora está esperando asegurarse de que se recibió el reconocimiento.
- CERRADO: no hay conexión, por lo que el socket se ha terminado.
Listado de zócalos de escucha
Para ver los enchufes de escucha agregaremos la
-l
opción (escuchar), así:ss -l
![ss -l en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/3-2.png)
Netid State Recv-Q Send-Q Dirección local: puerto Dirección par: proceso de puerto nl UNCONN 0 0 rtnl: NetworkManager / 535 * nl UNCONN 0 0 rtnl: evolution-addre / 2987 * ... u_str ESCUCHAR 0 4096 / ejecutar / systemd / privado 13349 * 0 u_seq ESCUCHAR 0 4096 / ejecutar / udev / control 13376 * 0 u_str ESCUCHAR 0 4096 /tmp/.X11-unix/X0 33071 * 0 u_dgr UNCONN 0 0 / run / systemd / journal / syslog 13360 * 0 u_str ESCUCHAR 0 4096 /run/systemd/fsck.progress 13362 * 0 u_dgr UNCONN 0 0 / ejecutar / usuario / 1000 / systemd / notificar 32303 * 0
Todos estos enchufes están desconectados y escuchan. El "rtnl" significa enrutamiento netlink, que se utiliza para transferir información entre el núcleo y los procesos de espacio de usuario.
Listado de todos los enchufes
Para enumerar todos los sockets, puede usar la
-a
opción (todos):ss -a
![ss -a en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/4-2.png)
Netid State Recv-Q Send-Q Dirección local: puerto Dirección par: proceso de puerto nl UNCONN 0 0 rtnl: NetworkManager / 535 * nl UNCONN 0 0 rtnl: evolution-addre / 2987 * ... u_str ESCUCHAR 0100 público / showq 23222 * 0 u_str ESCUCHAR 0100 privado / error 23225 * 0 u_str ESCUCHAR 0100 privado / reintentar 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 ESCUCHAR 0 128 [::]: ssh [::]: * tcp ESCUCHAR 0 5 [:: 1]: ipp [::]: * tcp ESCUCHAR 0 100 [:: 1]: smtp [::]: *
La salida contiene todos los sockets, independientemente del estado.
Listado de sockets TCP
También puede aplicar un filtro para que solo se muestren los sockets coincidentes. Utilizaremos la
-t
opción (TCP), por lo que solo se enumerarán los sockets TCP:ss -a -t
![ss -a -t en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/5-2.png)
Listado de sockets UDP
La
-u
opción (UDP) realiza el mismo tipo de acción de filtrado. Esta vez, solo veremos sockets UDP:ss -a -u
![ss -a -u en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/6-1.png)
Estado Recv-Q Enviar-Q Dirección local: Puerto Dirección par: Proceso de puerto 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: dominio 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 [::]: *
Listado de sockets Unix
Para ver solo los sockets Unix, puede incluir la
-x
opción (Unix), como se muestra a continuación:ss -a -x
![ss -a -x en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/x7-1.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.-ptuvkUJZ0.png)
Netid State Recv-Q Send-Q Dirección local: puerto Dirección par: proceso de puerto 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
Listado de zócalos sin procesar
El filtro para sockets sin procesar es la
-w
opción (sin procesar):ss -a -w
![ss -a -w en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/8-1.png)
Listado de sockets de IP versión 4
Los sockets que utilizan el protocolo TCP / IP versión 4 se pueden enumerar utilizando la
-4
opción (IPV4):ss -a -4
![ss -a -4 en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/9-1.png)
Listado de zócalos IP versión 6
Puede activar el filtro correspondiente de la versión 6 de IP con la
-6
opción (IPV6), así:ss -a -6
![ss -a -6 en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/10-1.png)
Listado de sockets por estado
Puede enumerar los sockets por el estado en el que están con la
state
opción. Esto funciona con estados establecidos, de escucha o cerrados. También usaremos la opción de resolución ( -r
), que intenta resolver las direcciones de red a los nombres y los puertos a los protocolos.
El siguiente comando buscará las conexiones TCP establecidas e
ss
intentará resolver los nombres:ss -t -r estado establecido
![Estado ss -t -r establecido en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/14-1.png)
Se enumeran cuatro conexiones que se encuentran 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 buscar tomas en el estado de escucha:
ss -t -r escucha del estado
![ss -t -r estado escuchando en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/15-1.png)
Recv-Q Send-Q Dirección local: puerto Dirección par: proceso de puerto 0 128 localhost: 5939 0.0.0.0:* 0 4096 localhost% lo: dominio 0.0.0.0:* 0128 0.0.0.0:ssh 0.0.0.0:* 0 5 localhost: ipp 0.0.0.0:* 0100 localhost: smtp 0.0.0.0:* 0 128 [::]: ssh [::]: * 0 5 ip6-localhost: ipp [::]: * 0 100 ip6-localhost: smtp [::]: *
Listado de sockets por protocolo
Puede enumerar los sockets utilizando un protocolo particular con las opciones
dport
y sport
, que representan los puertos de destino y de origen, respectivamente.
Escribimos lo siguiente para enumerar los sockets utilizando el protocolo HTTPS en una
established
conexión (observe el espacio después del paréntesis de apertura y antes del cierre):ss -un estado establecido '(dport =: https o sport =: https)'
![ss -un estado establecido '(dport =: https o sport =: https)' en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/17.png)
Podemos usar el nombre del protocolo o el puerto generalmente asociado con ese protocolo. El puerto predeterminado para Secure Shell (SSH) es el puerto 22.
Usaremos el nombre del protocolo en un comando y luego lo repetiremos usando el número de puerto:
ss -a '(dport =: ssh o sport =: ssh)'
ss -a '(dport =: 22 o sport =: 22)'
![ss -a '(dport =: ssh o sport =: ssh)' en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/x12-1.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.4J0W0AMJK4.png)
Como se esperaba, obtenemos los mismos resultados.
Listado de conexiones a una dirección IP específica
Con la
dst
opción (destino), podemos enumerar las conexiones a una dirección IP de destino particular.
Escribimos lo siguiente:
ss -a dst 192.168.4.25
![ss -a dst 192.168.4.25 en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/13-1.png)
Procesos identificativos
Para ver qué procesos están usando los sockets, puede usar la opción de procesos (
-p
), como se muestra a continuación (tenga en cuenta que debe usar sudo
):sudo ss -t -p
![sudo ss -t -p en una ventana de terminal.](https://www.howtogeek.com/wp-content/uploads/2020/07/16-1.png)
Estado Recv-Q Enviar-Q Dirección local: Puerto Dirección par: Proceso de puerto ESTAB 0 0 192.168.4.28:57650 54.218.19.119:https usuarios: (("firefox", pid = 3378, fd = 151)) ESTAB 0 0 192.168.4.28:ssh 192.168.4.25:43946 usuarios: (("sshd", pid = 4086, fd = 4), ("sshd", pid = 3985, fd = 4))
Esto nos muestra que las dos conexiones establecidas en los sockets TCP están siendo utilizadas por el demonio SSH y Firefox.
Un digno sucesor
El
ss
comando proporciona la misma información proporcionada previamente por netstat
, pero de una manera más simple y accesible. Puede consultar la página del manual para obtener más opciones y consejos.
0 Comentarios