Trabajar con red en Linux puede ser una tarea o sencilla o compleja según el uso de comandos y utilidades que tengas para ver aspectos relevantes de ella, la red trabaja con cientos de aspectos tanto a nivel físico como lógico y debido a esto Linux nos ofrece el comando netstat para ayudarnos en la administración de la red. Netstat (Network status), es un comando desarrollado para a desplegar diferentes estadísticas de la red en tiempo real, enfocándose en aspectos como estadísticas de protocolos de red , conexiones de red activas, puertos abiertos, tablas de enrutamiento y más.
- Ver estadísticas de IPv4 (en los protocolos IP, ICMP, TCP y UDP).
- Ver estadísticas de Ethernet.
- Acceder a estadísticas de IPv6 (en los protocolos IPv6, ICMPv6, TCP sobre IPv6).
- Ver las conexiones TCP activas.
netstat [-a] [-b] [-e] [-n] [-o] [-p <Protocolo>] [-r] [-s] [<intervalo>]
- -a: mostrará todas las conexiones TCP que están activas y además los puertos TCP y UDP de escucha en el equipo.
- -b: nos permite ver el ejecutable que habilita la conexión o puerto de escucha.
- -e: muestra las estadísticas de Ethernet con detalles como la cantidad de bytes y paquetes enviados y recibidos.
- -n: despliega las conexiones TCP activas.
- -o: nos muestra las conexiones TCP activas añadiendo el ID de proceso (PID) de cada conexión.
- -p <Protocolo>: permite ver las conexiones para el protocolo que indiquemos, allí podemos usar protocolos como tcp, udp, icmp, ip, tcpv6, udpv6, icmpv6 o ipv6.
- -s: muestra las estadísticas por protocolo, por defecto las estadísticas desplegadas serán para los protocolos TCP, UDP, ICMP e IP.
- -r: nos permite ver el contenido de la tabla de enrutamiento IP de Linux.
- <intervalo>: crear una nueva vista de los detalles en el intervalo de segundos indicado.
- -c: imprime la información de enrutamiento de la caché.
- -i, --interfaces: muestra la tabla de interfaz.
- -g, --groups: nos muestra la pertenencia a grupos multicast.
- -M, --masquerade: despliega las conexiones enmascaradas.
- -v, --verbose: indica una descripción mas completa de la orden.
- --numeric-hosts: no resuelve nombres de anfitrión.
- --numeric-ports: no resuelve por nombres de puerto.
- --numeric-users: no resuelve por nombres de usuario.
Solvetic ahora te explicara como hacer uso de este comando en Linux para tener una mejore perspectiva de los aspectos de la red.
Cómo usar netstat en Linux
Abrimos la terminal, en primer lugar vamos a ejecutar el siguiente comando para instalar la utilidad ( si aún no la tenemos):
sudo apt install net-tools
Debemos ingresar la contraseña.
Este comando aplica para Debian y Ubuntu, para otras distribuciones ejecuta:
sudo yum install net-tools (RHEL/CentOS/Fedora) sudo emerge -a sys-apps/net-tools (Gentoo) sudo zypper install net-tools (OpenSUSE)
Ahora vamos a usar el siguiente comando para tener información detallada:
netstat -v
Las columnas manejan un identificador, estos son:
- Proto: es el nombre del protocolo (TCP o UDP)
- Dirección local: es la dirección IP del equipo local y el número de puerto que está en uso, en caso de que el puerto no haya sido establecido, el número de puerto será visto como un asterisco (*)
- Dirección remota: es la dirección IP y el número de puerto del equipo remoto donde está conectado el socket
- Estado: es el estado del protocolo TCP; estas opciones son CLOSE_WAIT, CLOSED, ESTABLISHED, FIN_WAIT_1, FIN_WAIT_2, LAST_ACK, LISTEN, SYN_RECEIVED, SYN_SEND, TIMED_WAIT, UNKNOW
Si deseamos ver la tabla de enrutamiento vamos a ejecutar el siguiente comando:
netstat -nr
En este caso encontramos los siguientes valores:
- Destino: indica el destino de la red (dirección IP o notación CIDR).
- Pasarela: es la dirección IP de la puerta de enlace para la red de destino, si podemos acceder directamente al destino en la red local, la puerta de enlace se mostrará con la dirección 0.0.0.0.
- Genmask: es la máscara de red donde se especifica la porción de red del destino.
- Indic: son los indicadores de enrutamiento donde podemos ver información adicional sobre la ruta, 'U' indica que la ruta está activa y 'G' indica que la ruta es a una puerta de enlace directamente.
- MSS: es el tamaño máximo de segmento para conexiones TCP en la ruta.
- Ventana: indica el tamaño máximo de ventana para las conexiones TCP de esta ruta.
- irtt: es el valor inicial de RTT (Round Trip Time) para las conexiones TCP asignadas.
- Interface: es la interfaz de red asociada a la ruta.
Con el siguiente comando podemos ver las estadísticas del adaptador de red:
netstat -ai
Allí encontramos valores como:
- Iface: es el nombre de la interfaz de red
- MTU: es la unidad máxima de transmisión, hace referencia al tamaño máximo de un paquete de datos a transmitir a través de la interfaz
- RX-OK: es el número de paquetes recibidos sin errores
- RX-ERR: es el número de paquetes recibidos con errores
- RX-DRP: indica el número de paquetes recibidos que han sido descartados
- RX-OVR: es el número de paquetes recibidos que fueron desbordados (datos perdidos)
- TX-OK: es el número de paquetes transmitidos con éxito
- TX-ERR: nos enseña el número de paquetes que no se pudieron transmitir por errores
- TX-DRP: es el número de paquetes transmitidos descartados.
- TX-OVR: es el número de paquetes transmitidos que fueron desbordados
- Flg: son banderas asociadas a la interfaz, sus valores son 'B' para transmisión, 'M' para multidifusión, 'R' para ejecución, 'U' para arriba, 'L' para loopback
Si necesitamos ver las conexiones RAW, UDP, TCP, o UNIX vamos a ejecutar lo siguiente:
netstat -ant
Allí vemos el protocolo usado, la cantidad de paquetes enviados y recibidos, las direcciones de origen y destino y el estado del protocolo.
Si el objetivo es ver los servicios usados vamos a ejecutar el siguiente comando. Vemos los mismos detalles añadiendo el PID.
netstat -pnltu
Con netstat podremos llevar una administración completa de la red y saber como esta su estado para tomar medidas o no.