Quagga es un conjunto de herramientas que permiten implementar en un sistema Linux los protocolos de enrutamiento OSPF, RIP y BGP, gestionando, para ello, la tabla de enrutamiento del propio núcleo del sistema. Utiliza un manejo y sintaxis parecida a la que usan los routers de CISCO. Es un proyecto paralelo al proyecto original GNU Zebra, del cual se separó. En este artículo vamos a explicar cómo activar y configurar el enrutamiento OSPF en un router Linux, de manera básica, sin pretender explicar en detalle todos los parámetros de uso y configuración del servicio.
Quagga se compone de dos procesos:
- Proceso Zebra: Es el que modificala tabla de enrutamiento del núcleo del sistema.
- Proceso OSPF, RIP y/o BGP: Es el que le indica a Zebra qué modificaciones realizar en la tabla de enrutamiento.
OSPF (Open Shortest Path First - Primer camino más corto abierto) es un protocolo de enrutamiento interior, en el que los routers intercambian entre sí las subredes a las que están conectados y, mediante el algoritmo de Dijkstra, cada router calcula el camino más corto para llegar al resto de routers en la red. Para conocer más sobre el funcionamiento de OSPF os recomendamos que leáis el documento Enrutamiento OSPF.pdf, y si aún os quedan dudas sobre el tipo de áreas que podemos encontrar en OSPF, podéis ampliarlo con el siguiente enlace.
Nos vamos a basar en las direcciones IP del siguiente ejemplo. Configuraremos uno de los routers, realizando el mismo proceso en el otro.
Instalación
Podemos instalar Quagga desde los repositorios oficiales de Debian:
apt-get install quagga
Métodos de configuración
Los procesos de Quagga pueden configurarse de dos formas diferentes:
- A través de ficheros de configuración.
- A través de VTY (Virtual Terminal Interface), que son conexiones a través de telnet con cada uno de los procesos de quagga.
Monitorización
La monitorización en tiempo real de los procesos de Quagga sólo es posible realizarla mediante VTY.
Inicio y parada del servicio
Podemos iniciar y parar el servicio completo de Quagga al igual que cualquier otro servicio de SysV:
/etc/init.d/quagga start /etc/init.d/quagga stop
Configuración de Zebra por ficheros
Comenzamos configurando los procesos de enrutamiento que vamos a habilitar. Para ello editamos el fichero /etc/quagga/daemons y modificamos a "yes" los que nos interesan en nuestro caso:
zebra=yes bgpd=no ospfd=yes ospf6d=no ripd=no ripngd=no isisd=no babeld=no
El fichero /etc/quagga/debian.conf se encarga de lanzar los demonios como servicios. No tenemos que modificar nada.
Continuamos con la configuración del proceso Zebra. Para ello tenemos que copiarnos el fichero de ejemplo que nos ofrece el paquete para no tener que escribir todas las opciones:
cp /usr/share/doc/quagga/examples/zebra.conf.sample /etc/quagga/zebra.conf
Una vez copiado, editamos el fichero /etc/quagga/zebra.conf. A continuación os detallo el contenido al completo del fichero explicando los parámetros más importantes.
Las líneas que comienzan con el carácter ! son comentarios.
! -*- zebra -*- ! ! zebra sample configuration file ! ! ! Nombre del host hostname router1 ! Clave de acceso a VTY password clave ! Clave de acceso al modo configuración de VTY ! Si las claves coinciden no nos preguntará clave ! al entrar en modo configuración (opción "enable" del VTY) enable password clave ! ! Configuración de las interfaces del equipo local ! !interface lo ! description test of desc. ! interface eth0 ip address 10.0.0.1/24 interface eth1 ip address 192.168.1.1/24 !interface sit0 ! multicast ! ! Rutas estáticas del equipo local ! !ip route 0.0.0.0/0 203.181.89.241 ! ! Fichero de log log file /var/log/quagga/zebra.log ! ! Habilita el acceso por terminal VTY line vty
Configuración de OSPF por ficheros
Ahora pasamos a la configuración ya propia del proceso OSPF. Para ello tenemos que copiarnos el fichero de ejemplo que nos ofrece el paquete para no tener que escribir todas las opciones:
cp /usr/share/doc/quagga/examples/ospfd.conf.sample /etc/quagga/ospfd.conf
Una vez copiado, editamos el fichero /etc/quagga/ospfd.conf. A continuación os detallo el contenido al completo del fichero explicando los parámetros más importantes.
Las líneas que comienzan con el carácter ! son comentarios.
! -*- ospf -*- ! ! OSPFd sample configuration file ! ! ! Nombre del host hostname router1 ! Clave de acceso a VTY password clave ! Clave de acceso al modo configuración de VTY ! Si las claves coinciden no nos preguntará clave ! al entrar en modo configuración (opción "enable" del VTY) enable password clave ! ! Interfaces configuradas en zebra.conf disponibles para OSPF interface eth0 interface eth1 ! ! Identificador del router ! Redes anunciadas y área a la que pertenecen router ospf ospf router-id 10.0.0.1 network 10.0.0.0/24 area 0 network 192.168.1.0/24 area 0 ! ! Fichero de log log file /var/log/quagga/ospfd.log ! ! Habilita el acceso por terminal VTY line vty
Acceso a Zebra por VTY
Si hemos habilitado la conexión del proceso por VTY, tal y como hemos comentado en los ficheros de configuración anteriores, podremos conectarnos tanto para monitorizar como configurar el proceso.
telnet localhost zebra telnet localhost 2601
En el fichero /etc/services se puede ver la asignación de puertos a cada uno de los procesos de Quagga:
zebra 2601/tcp # zebra vty
El proceso nos preguntará la clave de acceso que hemos configurado anteriormente (la primera de ellas), y nos aparecerá un prompt con el nombre del router:
router1>
Accedemos al modo monitorización, donde podremos consultar los valores actuales cargados en el proceso. Pulsando la tecla tabulador nos mostrará y completará las opciones que tenemos disponibles.
Si queremos mostrar una lista de todos los comandos disponibles podemos utilizar:
router1> list
Siempre podemos acceder a la ayuda con el carácter:
router1> ?
Si queremos mostrar la información sobre las interfaces o las rutas del equipo:
router1> show interface router1> show ip route
Si queremos acceder al modo configuración, ejecutaremos el siguiente comando:
router1> enable
Si en los ficheros de configuración hemos establecido la contraseña "enable password clave", tendremos que introducirla, siempre que sea diferente a la configurada en "password clave".
En este caso observaremos cómo el prompt se modifica ligeramente:
router1#
Uno de los comando que podemos ejecutar en este modo es el que nos muestra una lista de toda la configuración del proceso como si del fichero de configuración se tratara:
router1# show runing-config
Estos comandos pueden ser siempre abreviados mientras no existan otros que comiencen igual:
router1# show run
No seguimos comentando los parámentros de configuración porque no es el fin de este artículo.
Acceso a OSPF por VTY
Si hemos habilitado la conexión del proceso por VTY, tal y como hemos comentado en los ficheros de configuración anteriores, podremos conectarnos tanto para monitorizar como configurar el proceso.
telnet localhost ospfd telnet localhost 2604
En el fichero /etc/services se puede ver la asignación de puertos a cada uno de los procesos de Quagga:
ospfd 2604/tcp # ospfd vty (zebra)
Comenzamos comprobando si el router detecta a los routers vecinos:
router1> show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL 10.0.0.2 1 Full/Backup 35.710s 10.0.0.2 eth0:10.0.0.1 0 0 0
Podemos comprobar el Router Link State y el Network Link State:
router1> show ip ospf database OSPF Router with ID (10.0.0.1) Router Link States (Area 0.0.0.0) Link ID ADV Router Age Seq# CkSum Link count 10.0.0.1 10.0.0.1 25 0x80000011 0x6c19 2 10.0.0.2 10.0.0.2 1731 0x80000013 0x3f3a 2 Net Link States (Area 0.0.0.0) Link ID ADV Router Age Seq# CkSum 10.0.0.1 10.0.0.1 1745 0x80000005 0x6f9a
Y finalmente, la tabla de rutas que se ha creado. Comprobaremos las rutas aprendidas, el coste de cada una de ellas y el área a la que pertenecen. Además indicarán cómo llegar a esas rutas. La letra "N" inicial indica una ruta hacia una red y la "R" una ruta hacia un router.
router1> show ip ospf route ============ OSPF network routing table ============ N 192.168.1.0/24 [10] area: 0.0.0.0 directly attached to eth1 N 192.168.2.0/24 [20] area: 0.0.0.0 via 10.0.0.2, eth0 N 10.0.0.0/24 [10] area: 0.0.0.0 directly attached to eth0 ============ OSPF router routing table ============= ============ OSPF external routing table ===========
Desde el núcleo de Linux también podemos comprobar si las rutas vecinas se han incluido en el sistema mediante el siguiente comando. Las nuevas rutas estarán señaladas con la palabra "zebra" para indicar su procedencia.
# ip route 192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.1 192.168.2.0/24 via 10.0.0.2 dev eth0 proto zebra metric 20 10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.1
Adjunto | Tamaño |
---|---|
enrutamiento-ospf.pdf | 986.92 KB |
Enlaces transversales de Book para Quagga - Enrutamiento OSPF
Quagga - Enrutamiento OSPF escrito por Rafa Morales está protegido por una licencia Creative Commons Atribución-NoComercial-SinDerivadas 4.0 Internacional