Cómo monitorear el tráfico de red en Linux con nethogs
Me encanta monitorear el tráfico de red en mi máquina Linux, especialmente cuando quiero saber la velocidad a la que se están transfiriendo los datos. ¿Algún proceso está abusando del ancho de banda de la red en mi sistema Ubuntu? ¿Cuál es una buena herramienta para resolver este problema?
¿Has usado nethogs alguna vez? Si no, está bien porque te explicaré cómo usarlo en este tutorial.
Que es nethogs
nethogs es una herramienta muy útil cuando se trata de averiguar qué PID está causando problemas con el tráfico de su red, ya que agrupa el ancho de banda por proceso en lugar de dividir el tráfico por protocolo o por subred, como hacen la mayoría de las herramientas. Tiene muchas funciones, admite tanto IPv4 como IPv6 y, en mi opinión, es la mejor utilidad cuando desea identificar programas que consumen todo su ancho de banda en su máquina Linux.
nethogs tiene algunas características interesantes
Algunas características importantes de los nethogs se enumeran a continuación.
- Muestra la velocidad de carga y descarga de TCP por proceso
- Admite Ethernet y PPP
- Admite tanto IPv4 como IPv6
Instalar nethogs
Antes de usar nethogs, debe instalar libncurses5-dev y libpcap0.8-dev. El siguiente comando se puede usar para instalar libpcap y ncurses en máquinas basadas en Debian como Ubuntu.
sudo apt-get install libncurses5-dev libpcap0.8-dev
Utilice el administrador de paquetes apt para descargar nethogs como se muestra a continuación.
sudo apt-get install nethogs
Los usuarios de Fedora pueden escribir los siguientes comandos en su terminal.
sudo yum install ncurses ncurses-devel
sudo yum install libpcap libcap-devel
Luego use el siguiente comando para instalar nethogs en RHEL o CentOS o Fedora Linux.
yum install nethogs
¿Por qué necesitamos instalar los módulos libcap y ncurses en nuestra máquina? El motivo de esta instalación es que necesitamos información y estadísticas de captura de paquetes de red a nivel de usuario. También necesitamos una biblioteca de programación API como libpcap para capturar el tráfico de red.
Cómo usar nethogs
Ejecute nethogs con el siguiente comando en su terminal.
nethogs
¿Que ves?
Obtengo el siguiente resultado cuando ejecuto el comando nethogs en mi terminal.
You need to be root to run NetHogs!
Ahora que ha terminado de instalar nethogs en su máquina, es hora de algunos comandos prácticos y consejos interesantes.
Ejecute nethogs nuevamente escribiendo el comando nethogs en su terminal.
nethogs
Nota: Si obtiene el siguiente error mientras ejecuta nethogs en su sistema Linux, generalmente significa que está tratando de monitorear una interfaz que no tiene una dirección IP asignada o probablemente no está conectada.
ioctl failed while establishing local IP for selected device eth0. You may specify the device on the command line.
Para resolver este problema ejecute el comando dirección IP en su terminal para averiguar si las interfaces tienen una dirección IP.
sudo ip addr
La siguiente salida se muestra en mi pantalla cuando se ejecuta el comando anterior.
1: lo: mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc mq state DOWN qlen 1000 link/ether 50:46:5d:2c:82:bf brd ff:ff:ff:ff:ff:ff 3: wlan0: mtu 1500 qdisc mq state UP qlen 1000 link/ether dc:85:de:42:40:d3 brd ff:ff:ff:ff:ff:ff inet 192.168.0.10/24 brd 192.168.0.255 scope global wlan0 inet6 fe80::de85:deff:fe42:40d3/64 scope link valid_lft forever preferred_lft forever 4: vmnet1: mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000 link/ether 00:50:56:c0:00:01 brd ff:ff:ff:ff:ff:ff inet 172.16.98.1/24 brd 172.16.98.255 scope global vmnet1 inet6 fe80::250:56ff:fec0:1/64 scope link valid_lft forever preferred_lft forever 5: vmnet8: mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000 link/ether 00:50:56:c0:00:08 brd ff:ff:ff:ff:ff:ff inet 172.16.183.1/24 brd 172.16.183.255 scope global vmnet8 inet6 fe80::250:56ff:fec0:8/64 scope link valid_lft forever preferred_lft forever
Ahora, si quiero monitorear wla0, simplemente ejecuto el comando nethogs wlan0 en mi terminal.
nethogs wlan0
La siguiente captura de pantalla muestra el resultado del comando anterior.
Como puede ver en la captura de pantalla anterior, nethogs ofrece un informe muy claro sobre el programa que está consumiendo el ancho de banda de mi red. En el momento que tomé la captura de pantalla, google chrome estaba reproduciendo una canción en youtube.
Todos los que tengan un poco de experiencia técnica pueden entender fácilmente a partir de la captura de pantalla anterior que nethogs nos brinda detalles sobre la identificación del proceso del programa que usa ancho de banda, el programa que consume este ancho de banda, el dispositivo que se está monitoreando, envió datos y recibió datos
Hay muchas opciones útiles que se pueden utilizar con nethogs. Por ejemplo, puede utilizar la opción -D para establecer el retraso de la frecuencia de actualización.
Por ejemplo, si desea establecer 3 segundos como su tasa de actualización, escriba el siguiente comando en su terminal.
nethogs -d 3 wlan0
La opción -pag ayuda a oler en modo promisorio, pero de acuerdo con las páginas del manual de nethogs no se recomienda.
nethogs -p wlan0
¿Tiene curiosidad por saber la versión de la herramienta nethogs que está utilizando en su máquina? Luego use la opción -V.
nethogs -V
Obtengo el siguiente resultado cuando intento obtener la versión de nethogs.
version 0.8.0
Y si desea monitorear un dispositivo específico, use el siguiente comando.
sudo nethogs eth0
También puede monitorear el ancho de banda de la red de múltiples interfaces de red. Por ejemplo, intente ejecutar el siguiente comando en su terminal.
sudo nethogs eth0 eth1
Me gusta usar nethogs en modo de rastreo, ya que supera las conexiones una por una.
nethogs -t wlan0