--- 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.