Sockstat es una utilidad de línea de comandos versátil que se utiliza para mostrar sockets abiertos de red y del sistema en FreeBSD. Básicamente, el comando sockstat se instala por defecto en FreeBSD y se usa comúnmente para mostrar el nombre de los procesos que abrieron un determinado puerto de red en un sistema FreeBSD.
Sin embargo, sockstat también puede enumerar los sockets abiertos según la versión del protocolo (ambas versiones de IP), el estado de la conexión y los puertos en los que un demonio o un programa se une y escucha.
Leer también: 20 ejemplos útiles de comandos "netstat" para comprobar las conexiones de red
También puede mostrar sockets de comunicación entre procesos, normalmente conocidos como sockets de dominio Unix o IPC. Comando Sockstat combinado con filtro grep o canalizado a través de utilidad awk demuestra ser una herramienta poderosa para la pila de redes locales.
Puede reducir los resultados de una conexión abierta según el usuario propietario del socket, el descriptor de archivo de un socket de red o el PID del proceso que abrió el socket.
En esta guía, enumeraremos algunos ejemplos de uso comunes, pero también muy poderosos, de la utilidad de red de línea de comandos sockstat en FreeBSD.
Ejecutado simplemente sin opciones o interruptores, el comando sockstat mostrará todos los sockets abiertos en un sistema FreeBSD, como se ilustra en la siguiente captura de pantalla.
# sockstat.
Los valores que se muestran en la salida de sockstat se describen como:
“??”
La notación implica que el punto final del socket no se pudo reconocer o establecer.Ejecutado con el -l
flag, el comando sockstat mostrará todos los sockets de escucha abiertos en la pila de red y todos Sockets de dominio Unix abiertos o canalizaciones con nombre involucradas en algún tipo de procesamiento de datos local en el sistema.
# sockstat -l.
Para mostrar todos los enchufes abiertos para IPv4 solo protocolo, emita el comando con el -4
bandera, como se sugiere en el siguiente ejemplo.
# sockstat -4.
Similar a la versión IPv4, también puede mostrar los enchufes de red abiertos para IPv6 solo, emitiendo el comando como se muestra a continuación.
# sockstat -6.
Para mostrar los enchufes de red basados solo en un protocolo de red específico, como TCP o UDP, utilizar el -PAG
bandera, seguida del nombre del argumento del protocolo.
Los nombres de los protocolos se pueden encontrar inspeccionando el contenido del /etc/protocols expediente. Actualmente, el protocolo ICMP no es compatible con la herramienta sockstat.
# sockstat -P tcp.
# sockstat -P udp.
Encadena ambos protocolos.
# sockstat –P tcp, udp.
Si desea mostrar todos los sockets abiertos TCP o UDP IP, según el número de puerto local o remoto, use los indicadores de comando y la sintaxis a continuación, como se ilustra en la captura de pantalla a continuación.
# sockstat -P tcp -p 443 [Mostrar puerto TCP HTTPS] # sockstat -P udp -p 53 [Mostrar puerto DNS UDP] # sockstat -P tcp -p 443,53,80,21 [Mostrar tanto TCP como UDP]
Para mostrar todos los enchufes abiertos y conectados, utilice el -C
bandera. Como se muestra en los ejemplos siguientes, puede enumerar todos HTTPS enchufes conectados o todos los enchufes conectados TCP emitiendo los comandos.
# sockstat -P tcp -p 443 -c. # sockstat -P tcp -c.
Para enumerar todos los sockets TCP abiertos en estado de escucha, agregue el -l
y -s
banderas, como se muestra en el siguiente ejemplo. Al ser un protocolo sin conexión, UDP no mantiene información sobre el estado de la conexión.
Los sockets abiertos UDP no se pueden mostrar usando su estado, porque el protocolo udp usa datagramas para enviar / recibir datos y no tiene un mecanismo incorporado para determinar el estado de la conexión.
# sockstat -46 -l -s.
Los sockets de dominio Unix, así como otras formas de comunicación entre procesos locales, como canalizaciones con nombre, se pueden mostrar mediante el comando sockstat utilizando el comando -u
bandera, como se muestra en la imagen de abajo.
# sockstat -u.
La salida del comando Sockstat se puede filtrar a través de utilidad grep para mostrar una lista de puertos abiertos por una aplicación o comando específico.
Suponga que desea enumerar todos los sockets asociados con Nginx servidor web, puede emitir el siguiente comando para realizar la tarea.
# sockstat -46 | grep nginx.
Para mostrar solo los sockets conectados asociados con el servidor web Nginx, ejecute el siguiente comando.
# sockstat -46 -c | grep nginx.
Puede enumerar todos los enchufes conectados asociados con HTTPS protocolo junto con el estado de cada conexión ejecutando el siguiente comando.
# sockstat -46 -s -P TCP -p 443 -c.
Para enumerar todos los sockets remotos asociados con el protocolo HTTP, puede ejecutar una de las siguientes combinaciones de comandos.
# sockstat -46 -c | egrep '80 | 443 '| awk '{imprimir $ 7}' | uniq -c | sort -nr. # sockstat -46 -c -p 80,443 | grep -v DIRECCIÓN | awk '{imprimir $ 7}' | uniq -c | sort -nr.
En caso de que desee averiguar cuántas conexiones HTTP solicita cada dirección IP remota, emita el siguiente comando. Este comando puede ser muy útil en caso de que desee determinar si su servidor web está bajo algún tipo de ataque DDOS. En caso de sospechas, debe investigar las direcciones IP con la tasa de solicitud más alta.
# sockstat -46 -c | egrep '80 | 443 '| awk '{imprimir $ 7}' | cut -d: -f1 | uniq -c | sort –nr.
Si ha configurado un servidor DNS de reenvío y almacenamiento en caché en sus instalaciones para atender a los clientes internos a través del protocolo de transporte TCP y desea mostrar una lista de todos los sockets
abierto por el resolutor, junto con el estado de cada conexión de socket, ejecute el siguiente comando.
# sockstat -46 -P tcp –p 53 -s.
Si no hay tráfico de DNS en la red, puede activar manualmente una consulta de DNS en el socket TCP desde la consola de la máquina local ejecutando lo siguiente comando de excavación. Luego, emita el comando anterior para enumerar todos los sockets de resolución.
# dig + tcp www.domain.com @ 127.0.0.1.
¡Eso es todo! Junto con netstat y lsof comando utilidades de línea, la línea de comandos sockstat es una poderosa utilidad que se utiliza para adquirir información de red y solucionar problemas de múltiples aspectos de la pila de redes FreeBSD y de los procesos y servicios relacionados con la red.
La contraparte del comando sockstat de FreeBSD en Linux está representada por la netstat o el nuevo ss mando. Lo crea o no, según la utilidad sockstat, puede encontrar una aplicación similar desarrollada para el sistema operativo Android, llamada SockStat - Simple Netstat GUI.