Quagga - Enrutamiento RIP

Rafa Morales 3 Marzo 2014
8min
2
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 RIP 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

RIP (Routing Information Protocol - Protocolo de Información de Enrutamiento) 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 Vector de Distancias, cada router calcula el camino más corto para llegar al resto de routers en la red en función del número de saltos, es decir, el número de routers que debe atravesar. El límite máximo de saltos en RIP es de 15, ya que 16 saltos se considera una ruta inalcanzable. Para conocer más sobre el funcionamiento de RIP os recomendamos que leáis el documento Enrutamiento RIP.pdf.

Las ventajas de RIP son que es más fácil de configurar con respecto a otros protocolos y que es soportado por la mayoría de los fabricantes. Las desventajas de RIP son que para determinar la mejor métrica únicamente toma en cuenta el número de saltos sin tener en cuenta otras métricas (ancho de banda, congestión, carga, retardo, fiabilidad, etc.), ni está diseñado para resolver cualquier posible problema de enrutamiento.

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=no
ospf6d=no
ripd=yes
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 RIP por ficheros

Ahora pasamos a la configuración ya propia del proceso RIP. 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/ripd.conf.sample /etc/quagga/ripd.conf

 

Una vez copiado, editamos el fichero /etc/quagga/ripd.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.

! -*- rip -*-
!
! RIPd sample configuration file
!
! $Id: ripd.conf.sample,v 1.1 2002/12/13 20:15:30 paul Exp $
! 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
!
! debug rip events
! debug rip packet
!
! Redes anunciadas en RIP
router rip
 network 10.0.0.0/24
 network 192.168.1.0/24
! network eth0
! route 10.0.0.0/8
! distribute-list private-only in eth0
!
!access-list private-only permit 10.0.0.0/8
!access-list private-only deny any
!
log file /var/log/quagga/ripd.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 RIP 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 ripd

telnet localhost 2602

En el fichero /etc/services se puede ver la asignación de puertos a cada uno de los procesos de Quagga:

ripd       2602/tcp       # ripd vty (zebra)

 

Para comprobar las rutas que se ha aprendido mediante la comunicación con el resto de routers:

router1> show ip rip
Codes: R - RIP, C - connected, S - Static, O - OSPF, B - BGP
Sub-codes:
      (n) - normal, (s) - static, (d) - default, (r) - redistribute,
      (i) - interface

     Network            Next Hop         Metric From            Tag Time
C(i) 10.0.0.0/24        0.0.0.0               1 self              0
R(n) 192.168.2.0/24     10.0.0.2              2 10.0.0.2          0 02:41
C(i) 192.168.1.0/24     0.0.0.0               1 self              0

Con "C" nos muestra las redes conectadas al router, y con "R" las aprendidas por RIP. También observamos la métrica para llegar a esa red y el "Time" restante hasta que la ruta sea obsoleta o caduque.

 

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 2
10.0.0.0/24 dev eth0  proto kernel  scope link  src 10.0.0.1

 

Archivos adjuntos
Adjunto Tamaño
enrutamiento-rip.pdf 1.17 MB

Hola muy Buenos días me intereso mucho su articulo y pues la verdad voy iniciando en el mundo de Debian y enrutamiento mi pregunta es donde se van escribiendo los comandos que menciona y si es compatible para cualquier version de Debian.

Le agradeceria demasiado si me pudiera ayudar

Gracias

Mié, 01/08/2018 - 16:27 Enlace permanente

La edición de los ficheros de configuración es desde el usuario root en la línea de comandos. A continuación, se lanza una conexión telnet y se empiezan a ejecutar directamente los comandos de RIP.

Llevo años que no lo he vuelto a utilizar, pero supongo que en las últimas versiones de Debían debe funcionar.

Saludos.

Vie, 03/08/2018 - 22:48 Enlace permanente