Header Ads

BandwidthD

BandwidthD es una de esas herramientas de antaño, pero muy útiles y vigentes, que se usa básicamente para monitoreo del ancho de banda en una red local, aunque los datos recopilados pueden tener otros usos. 
Según el portal oficial, se puede "rastrear el uso de subredes de red TCP/IP y crea archivos html con gráficos, que se crean por IP individuales, mostrando la utilización en períodos (de 2, 8, 40, 400 días). Además, la utilización de cada dirección IP se puede cerrar en intervalos de 3.3 minutos, 10 minutos, 1 hora o 12 horas en formato cdf, o en un servidor de base de datos backend. El tráfico HTTP, TCP, UDP, ICMP, VPN y P2P están codificados por colores." 
Su instalación es sencilla. El paquete está en los repositorios oficiales:
sudo apt -y install bandwidthd
Si tenía una versión previa, se recomienda que elimine directorios y archivos antiguos antes de instalar:
sudo rm -rf /usr/sbin/bandwidthd /etc/bandwidthd /var/lib/bandwidthd /etc/init.d/bandwidthd /var/run/bandwidthd* >/dev/null 2>&1
Sin embargo, instalarla de manera desatendida puede ser un problema, ya que solicita la interfaz de red y rango de IPs a monitorear. 
Selección de interfaz de red (opción "any" para monitorear todas)

Selección de rangos IP/CIDR
Y el "man" o "help" no sirven de mucho:
$ bandwidthd --help
Usage: bandwidthd [OPTION]
Options:
    -D      Do not fork to background
    -l      List detected devices
    -c filename Alternate configuration file
    --help      Show this help

$ man bandwidthd
BANDWIDTHD(8)               System Manager's Manual              BANDWIDTHD(8)

NAME
bandwidthd - Tracks usage of TCP/IP and builds html files with graphs.

DESCRIPTION
BandwidthD tracks usage of TCP/IP network subnets and builds html files
with graphs to display utilization.  Charts  are  built  by  individual
IPs, and display utilization over 2 day, 8 day, 40 day, and 400 day pe‐
riods.  Furthermore, each ip address's utilization can be logged out at
intervals of 2.5 minutes, 10 minutes, 1 hour or 12 hours in cdf format.
HTTP, TCP, UDP, ICMP, VPN, and P2P traffic are color coded.

The configuration file "bandwidthd.conf" is described in it's own  man‐
ual page.

FILES
       /usr/sbin/bandwidthd               - daemon binary.
       /etc/init.d/bandwidthd             - startscript.
       /etc/bandwidthd/bandwidthd.conf    - configuration file.
       /var/run/bandwidthd.pid            - main process id file.
       /var/lib/bandwidthd/               - log directory.
       /var/lib/bandwidtd/htdocs/         - html and graphs output directory.

SEE ALSO
       bandwidthd.conf(5)

       Furter information available at the website:
       http://bandwidthd.sourceforge.net

AUTHOR
       This  manual page was written by Andreas Henriksson
       for the Debian GNU/Linux system.

                                  5 Jul 2004                     BANDWIDTHD(8)
Entonces, para evitar estas molestas pantallas, se debe instalar de la siguiente manera:
sudo DEBIAN_FRONTEND=noninteractive apt-get -y install bandwidthd
Una vez instalado, verifique los parámetros por default:
sudo debconf-show bandwidthd
  bandwidthd-pgsql/sensorid:
  bandwidthd/dev: any
  bandwidthd/promisc: false
  bandwidthd/metarefresh:
  bandwidthd/subnet: 169.254.0.0/16, 192.168.1.0/24, 192.168.122.0/24
  bandwidthd/outputcdf: true
  bandwidthd/recovercdf: true
Edite el archivo de configuración:
sudo nano /etc/bandwidthd/bandwidthd.conf
Y cambiarlos según sus necesidades. Ej: reemplazando el parámetro dev y subnet:
subnet 192.168.0.0/16
dev "wlp1s0"
Guarde los cambios y reinicie:
sudo /etc/init.d/bandwidthd restart
También puede realizar los cambios en el archivo de configuración sin editarlo, directamente desde el terminal, con el siguiente comando. Ej: para cambiar todos los rangos por 192.168.0.0/16. (Para mayor información sobre sponge pulse AQUI):
sudo sed "s:^subnet.*:subnet 192.168.0.0/16:g" /etc/bandwidthd/bandwidthd.conf | uniq | sudo sponge /etc/bandwidthd/bandwidthd.conf
O para cambiar la interfaz de red (ej: "wlp1s0"):
sudo sed -i 's:^dev "any":dev "wlp1s0":g' /etc/bandwidthd/bandwidthd.conf
Acceda a la plataforma:
http://localhost/bandwidthd/
Hasta aquí podría ser suficiente, sin embargo este aplicativo trabaja por el puerto 80 y esto eventualmente puede generar conflictos con otras aplicaciones que usen este puerto y el archivo de configuración no tiene opción para cambiarlo, así que hay dos maneras: La fácil y la difícil. 
La difícil, como bien lo indican en el foro, hay que descargar el código fuente y modificar el archivo bandwidthd.c en la línea 249, reemplazando el puerto (por ejemplo el 80 por el 8000) y compilar:
 if (sport == 8000 || dport == 8000)
                Stats->http += size;
La fácil es con Apache:
sudo apt -y install apache2
Asumiendo que ya tenemos instalado y parametrizado apache2 (y bandwidthd), creamos el directorio de bandwidthd en /var/www:
sudo mkdir -p /var/www/bandwidthd
Creamos un archivo VirtualHost en la ruta indicada (cambie el nombre del archivo según sus preferencias):
/etc/apache2/sites-enabled/bandwidthdaudit.conf
Con el siguiente contenido:
<VirtualHost *:11400>
	ServerAdmin webmaster@localhost
	DocumentRoot /var/www/bandwidthd
	<Directory/>
		Options FollowSymLinks
		DirectoryIndex index.html
		Options ExecCGI
		AllowOverride None
	</Directory>
	<Directory /var/www/bandwidthd/>
		AuthType Basic
        	AuthName "Restricted Content"
        	AuthUserFile /etc/apache2/.htpasswd
        	Require valid-user
	</Directory>

	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
	<Directory "/usr/lib/cgi-bin">
		AllowOverride None
		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        	Require all granted
	</Directory>

	ErrorLog ${APACHE_LOG_DIR}/error.log

	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn

	CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
En el VirtualHost anterior elegimos a modo de ejemplo el puerto 11400 (pero puede cambiarlo por cualquier otro disponible en su sistema). En cualquier caso debe agregarlo a Apache (y si tiene firewall, abrirlo). 
Edite el archivo ports.conf, agregue el número de puerto y guarde los cambios:
sudo nano /etc/apache2/ports.conf
# bandwidthd
Listen 11400
Creamos un enlace simbólico al directorio donde se encuentran los archivos de estadísticas:
sudo ln -s /var/lib/bandwidthd/htdocs/* /var/www/bandwidthd/
Reiniciamos los servicios:
sudo service apache2 restart
sudo /etc/init.d/bandwidthd restart
localhost:port
Y voilà. Ahora puede acceder por localhost o la IP del equipo con el nuevo puerto. Ejemplo:
http://localhost:11400
# o
http://192.168.0.10:11400
Con la tecnología de Blogger.