---
title: NfSen
author: Taller de diseño de redes universitarias
---
Laboratorio de NfSen
====================
Metas
-----
- Aprenda a exportar flujos desde un enrutador Cisco
- Aprenda a instalar las herramientas nfdump y NfSen
- Aprender a configurar y utilizar la función Top Talkers
#### Notas
- Los comandos precedidos por el signo de pesos "\$", deben ser ejecutados como
un usuario general - y no como superusuario (root).
- Los comandos precedidos por el signo de número "\#", Implica que debe estar
trabajando como root.
- Los comandos precedidos por lineas de comando más específicas (e.g. "rtrX>"
or "mysql>") implica que deben ser ejecutados en equipos remotos, o dentro
de otras aplicaciones.
- Estas instrucciones suponen que usted es el usuario root. Si no lo es,
anteponga ''sudo'' a los comandos shell (los que no están en ''mysql'') o
invoque temporalmente privilegios de root con ''sudo -s''.
Configurar su colector
----------------------
### Instalar NFDump y software asociado
NFdump es parte de las herramientas del colector de flujo de Netflow, que incluye:
nfcapd, nfdump, nfreplay, nfexpire, nftest, nfgen
Hay un paquete en Ubuntu, pero es demasiado viejo - por eso lo que vamos a
construir desde la fuente. En primer lugar, compruebe que tiene las herramientas
de construcción y dependencias:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$ sudo apt-get update
$ sudo apt-get install build-essential autoconf
$ sudo apt-get install rrdtool mrtg librrds-perl librrdp-perl librrd-dev \
libmailtools-perl php5 bison flex
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ahora proceder a descargar y construir. Tenga en cuenta que sólo el último paso
(make install) tiene que hacerse como root.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$ cd
$ wget http://www.ws.nsrc.org/downloads/nfdump-1.6.13.tar.gz
$ tar xvzf nfdump-1.6.13.tar.gz
$ cd nfdump-1.6.13
$ ./configure --help # optional, shows the build settings available
$ ./configure --enable-nfprofile --enable-nftrack
$ make
$ sudo make install
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
### Probando nfcapd y nfdump
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$ mkdir /tmp/nfcap-test
$ nfcapd -E -p 900X -l /tmp/nfcap-test
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Stop the tool with CTRL+C, then look at the contents of /tmp/nfcap-test
Detenga la herramienta con CTRL + C, luego observe el contenido de /tmp/nfcap-test
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$ ls -l /tmp/nfcap-test
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Debería ver uno o más archivos llamados `nfcapd.
`
Procese el/los archivo(s) con nfdump:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
nfdump -r /tmp/nfcap-test/nfcapd.201Ywwxxyyzz | less
nfdump -r /tmp/nfcap-test/nfcapd.201Ywwxxyyzz -s srcip/bytes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Usted debe obtener alguna información útil :)
### Instalación y configuración de NfSen
Descargar y compilar. El parche es para solucionar un problema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$ cd
$ wget http://www.ws.nsrc.org/downloads/nfsen-1.3.6p1.tar.gz
$ tar xvzf nfsen-1.3.6p1.tar.gz
$ cd nfsen-1.3.6p1
$ wget http://www.ws.nsrc.org/downloads/nfsen-socket6.patch
$ patch -p0 < nfsen-socket6.patch
$ cd etc
$ cp nfsen-dist.conf nfsen.conf
$ editor nfsen.conf
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Establezca la variable "$BASEDIR"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$BASEDIR = "/var/nfsen";
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Establecer los usuarios de manera adecuada para que Apache pueda acceder a los archivos:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$WWWUSER = 'www-data'; $WWWGROUP = 'www-data';
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Establezca el tamaño del búfer en algo pequeño, para que veamos los datos
rápidamente. No deberia hacer esto en un sistema de producción.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Receive buffer size for nfcapd - see man page nfcapd(1)
$BUFFLEN = 2000;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Busque la definición de % sources y cámbiela por:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%sources=(
'bdr1-campusX' => {'port'=>'900X','col'=>'#0000ff','type'=>'netflow'},
);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(Sustituya su número de grupo por **X** y quite o comente las fuentes de muestra
existentes). Ahora guarde y salga del archivo.
Finalmente, cambie el HTMLDIR de `/var/www/nfsen/` a `/var/www/html/nfsen/`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$HTMLDIR = "/var/www/html/nfsen/";
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
### Crear el usuario de netflow en el sistema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$ sudo useradd -d /var/nfsen -G www-data -m -s /bin/false netflow
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
### Instalar NfSen e iniciarlo
Change directory back to just inside the source directory:
Cambiar el directorio de vuelta al directorio de origen:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$ cd
$ cd nfsen-1.3.6p1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ahora, finalmente, instalamos:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$ sudo perl install.pl etc/nfsen.conf
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Presione ENTRAR cuando se le pida la ruta de acceso a Perl.
### Instalar el script de inicio
Para que nfsen se inicie y se detenga automáticamente cuando se inicie el sistema,
agregue un enlace al directorio init.d apuntando al script de inicio nfsen:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$ sudo ln -s /var/nfsen/bin/nfsen /etc/init.d/nfsen
$ sudo update-rc.d nfsen defaults 20
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Iniciar NfSen
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$ sudo service nfsen start
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Compruebe que los procesos nfcapd se han iniciado:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$ ps auxwww | grep nfcapd
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
### Ver flujos a través de la web:
Puede encontrar la página de nfsen aquí:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
http://pc1-campusX.ws.nsrc.org/nfsen/nfsen.php
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Todos en el grupo pueden señalar su navegador web en esta página.
Puede ver un mensaje como:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Frontend - Backend version mismatch!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Esto desaparecerá si vuelves a cargar la página, no es un problema.
¡Hecho! Demuestre su sistema de trabajo a los instructores del taller.
Notes
-----
### Mensajes de error
En algunas versiones más recientes de distribución de Linux (Fedora Core 16 y
superiores, Ubuntu 12.04 LTS y superiores, etc.), se puede ver un error como
este al iniciar nfsen:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Subroutine Lookup::pack_sockaddr_in6 redefined at
/usr/share/perl/5.14/Exporter.pm line 67.
at /var/nfsen/libexec/Lookup.pm line 43
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Nfsen seguirá cargando y funcionando correctamente, por lo que puede ignorar este
error por ahora (o resolver el problema y devolver algo al proyecto nfsen! :-)).
### Agregando fuentes
Si tiene varios enrutadores en su red enviando flujos al mismo colector,
puede configurarlos para enviarlos a diferentes puertos del colector o puede
indicar a nfsen la dirección IP de origen de cada enrutador. Esto permite a
nfsen mostrar datos distintos de cada fuente.
NO HAGA ESTO AHORA, ya que sólo tiene un solo enrutador, pero si lo necesitaba,
lo haría de la siguiente manera:
- editar /var/nfsen/etc/nfsen.conf, y agregar las fuente(s), por ejemplo:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%sources = (
'bdr1-campus1' => {'port' => '9001', 'col' => '#e4e4e4' },
'bdr1-campus2' => {'port' => '9002', 'col' => '#0000ff' },
'bdr1-campus3' => {'port' => '9003', 'col' => '#00cc00' },
);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Re-configurando NfSen.
Tendrá que ejecutar esto cada vez que modifique `/var/nfsen/etc/nfsen.conf`:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$ sudo /etc/init.d/nfsen reconfig
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Usted deberia ver:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
New sources to configure : bdr1-campus2 bdr1-campus3
Continue? [y/n] y
Add source 'bdr1-campus2'
Add source 'bdr1-campus3'
Start/restart collector on port '9002' for (bdr1-campus2)[pid]
Start/restart collector on port '9003' for (bdr1-campus3)[pid]
Restart nfsend:[pid]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Nota: Ud. tendría que ajustar la configuración de flujos en cada dispositivo para que
lleguen a su instancia de nfSen.