Son innumerables los comandos que podemos usar en ambientes Linux para numerosas tareas de orden administrativa y a nivel de red uno de los mas comunes pero a la vez de los más importantes es el comando netstat. Netstat (Network Status), es un comando con el cual es posible tener acceso a información completa de las conexiones de red y las estadísticas de red., gracias a netstat podemos ver los puertos abiertos, conexiones activas y otras estadísticas de red que son ideales para tareas de soporte.
- Tendremos acceso a la lista de puertos en escucha
- Es posible ver las rutas de red
- Tener acceso a las conexiones activas y las direcciones IP y puertos asociados a estas conexiones
- -r, --route: permite ver la tabla de ruteado
- -i, --interfaces: despliega la tabla de interfaz
- -s, --statistics: genera las estadísticas de la red
- -g, --groups: despliega la pertenencia a grupos multicast
- -M, --masquerade: nos permite ver las conexiones enmascaradas
- -v, --verbose: ofrece una descripción detallada
- -n, --numeric: no se resolverán nombres de direcciones
- --numeric-hosts: no resuelve nombres de anfitrión
- --numeric-users: no resuelve por nombres de usuario
- -e, --extend: muestra más información de la básica
- -p, --programs: despliega el nombre PID de los sockets
- -l, --listening: permite ver los sockets a la escucha de servidores
- -a, --all: despliega todos los sockets
Solvetic te explicará cómo usar este comando netstat en Linux para tener acceso a esta información de red.
Cómo usar netstat en Linux
Antes de iniciar, si no contamos con Netstat, podemos instalarlo ejecutando el siguiente comando:
sudo apt install net-tools
En primer lugar, vamos a ver todos los sockets conectados y en espera, para ello haremos uso del parámetro -a de la siguiente manera:
netstat -a | les
Podemos ver diversas columnas con información de nuestros sockets, encontramos dos secciones que son:
- Conexiones activas de Internet: hace referencia a las conexiones externas conectadas y los sockets locales que pueden escuchar solicitudes de conexión remota.
- Sockets activos de dominio UNIX: permite ver las conexiones internas conectadas y de escucha.
En la sección Conexiones activas encontramos algunas columnas como:
- Proto: es el protocolo usado en ese socket
- Recib: son los bytes entrantes recibidos y almacenados en el búfer.
- Enviad: son los bytes listos para ser enviados desde la cola de envío.
- Dirección local: es la dirección del extremo local de la conexión, por defecto veremos el nombre de host local en la dirección y el nombre del servicio en el puerto.
- Dirección remota: es la dirección y puerto del extremo remoto de la conexión.
- Estado: indica el estado del socket local.
Para el caso de los sockets UNIX encontramos columnas extras como:
- RefCnt: indica el número de procesos adjuntos conectados a este socket en particular.
- Flags: existen algunos valores como ACC (SO_ACCEPTON), SO_WAITDATA, SO_NOSPACE, etc.
- State: es el estado del socket, las opciones son FREE, LISTENING, CONNECTING, CONNECTED, DISCONNECTING.
- I-Node: es el inodo del sistema de archivos para ese socket.
- Path: es la ruta del sistema de ese socket.
Ahora, es posible ver solo los sockets asociados a TCP, para este caso ejecutamos lo siguiente: Vemos los detalles de cada uno de ellos.
netstat -at | les
Para el caso de UDP, vamos a ejecutar lo siguiente:
netstat -au | les
Para ver los sockets que están en estado de escucha en Linux, vamos a ejecutar lo siguiente:
netstat -l | les
Para este caso podemos usar combinaciones y buscar sockets de TCP o UDP, por ejemplo, para el caso de TCP ejecutamos:
netstat -lt | les
Una opción esencial de Netstat es la posibilidad de generar estadísticas en base al protocolo, para ello vamos a ejecutar el siguiente comando. Vemos los detalles de cada protocolo de forma integral.
netstat -st | les
Para tener acceso al PID del proceso, vamos a hacer uso del siguiente comando:
sudo netstat -p -at
Es posible ver las direcciones locales y remotas como direcciones IP mas no como dominios y nombres de host resueltos, para lograrlo vamos a usar el siguiente comando:
sudo netstat -an | les
Algunos de los puertos más usados son:
- 22: es el puerto de escucha Secure Shell (SSH).
- 25: es el puerto de escucha del protocolo SMTP)
- 53: es el puerto de escucha del Sistema de nombres de dominio (DNS)
- 68: es el puerto de escucha del Protocolo de configuración dinámica de host (DHCP)
- 631: es el puerto de escucha del sistema de impresión común UNIX (CUPS)
Para ver la tabla de enrutamiento de Linux, vamos a ejecutar lo siguiente:
sudo netstat -r
Allí encontramos columnas como:
- Destino: es la red de destino o el dispositivo host de destino
- Pasarela: es la dirección de la puerta de enlace
- Genmask: es la máscara de subred
- Indic: son banderas que permiten asociar identificar mejor el socket, algunos valores son U (la ruta esta activa), G (usa un Gateway), H (el objetivo es un anfitrión), M (modificado por el demonio de enrutamiento) y mas
- MSS: (Maximum Segment Size), es la mayor cantidad de datos que se puede recibir en un segmento TCP en Linux
- Ventana: indica el tamaño de ventana predeterminado para las conexiones TCP en la ruta
- Interfaz: es la interfaz usada
Es posible realizar la búsqueda directamente por el nombre del protocolo, en este caso usaremos la siguiente sintaxis:
sudo netstat -anp | grep "protocolo"
También podemos buscar por número de puerto:
sudo netstat -anp | grep ":puerto"
Para listar las interfaces ejecutamos lo siguiente:
sudo netstat -i
Finalmente, podemos ver los miembros de la transmisión multicast con el comando:
sudo netstat -g
Estas son algunas de las formas como nestat es un gran aliado para gestionar diversas tareas en Linux.