Quagga - Enrutamiento OSPF

Rafa Morales 13 Febrero 2014
8min
0
Linux

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.

Estructura de Quagga

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.

Red OSPF

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:

  1. A través de ficheros de configuración.
  2. 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

 

Archivos adjuntos
Adjunto Tamaño
enrutamiento-ospf.pdf 986.92 KB