Cómo convertir una caja de Linux en un router OSPF y BGP

Probablemente hayas oído hablar de routers de gigantes como Cisco y Nortel, pero ¿qué pasa con Linux? Si bien Linux se ha convertido en una opción cada vez más viable como servidor, pocos se dan cuenta de su potencial como enrutador de funciones completas. Con GNU Zebra, tu caja de Linux puede actuar como un enrutador que admite protocolos TCP/IP como RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, BGP-4 y BGP-4+. Voy a mostrarte cómo instalar, configurar y utilizar Zebra para convertir una caja de Linux en un enrutador OSPF y BGP.

Índice de Contenido
  1. Construyendo un enrutador avanzado
  2. Instalación de Zebra
  3. Configurando Zebra
  4. Configurando OSPF
  5. Configurando BGP
  6. Resumen

Construyendo un enrutador avanzado

Si has configurado una caja de Linux como firewall, ya has construido un enrutador de Linux simple. Sin embargo, vamos a ver cómo usar Linux para construir un enrutador avanzado que pueda comunicarse mediante protocolos de enrutamiento dinámico. Estos protocolos permiten a los enrutadores comunicarse entre sí y compartir información sobre rutas a través de una red. Esto es increíblemente importante en redes grandes (como Internet), donde el enrutamiento estático es impracticable.

Por ejemplo, incluso con la sumarización de rutas (donde solo se anuncia el bloque más grande posible), una tabla de enrutamiento de Border Gateway Protocol (BGP) aún contiene más de 100,000 entradas. El gran número de entradas, combinado con la velocidad de cambio, hace que la asignación de rutas estáticas sea imposible. La necesidad de protocolos de enrutamiento dinámico es obvia, incluso en redes más pequeñas que Internet, como las grandes redes corporativas.

Aunque BGP, un Protocolo Externo de Puerta de Enlace (EGP, por sus siglas en inglés), es el trabajo principal de Internet, otros son más adecuados para su uso en internetworks más pequeños. El protocolo Open Shortest Path First (OSPF) es un Protocolo Interno de Puerta de Enlace (IGP) y es uno de los más utilizados. GNU Zebra es un paquete de software de código abierto que te permite ejecutar BGP y/o OSPF en Linux.

Instalación de Zebra

Puedes descargar la última versión fuente de Zebra desde Zebra.org. También están disponibles paquetes específicos de distribución de varias fuentes, incluyendo Redhat y Debian. Si estás instalando desde la fuente, encontrarás que el procedimiento de instalación estándar es aplicable. Simplemente extrae el paquete y ejecuta:
./configure
make
make install

El script de configuración detectará qué pilas IP están instaladas en tu sistema y configurará automáticamente el soporte para ellas. En el entorno actual, esto probablemente significa solo IPv4, pero los usuarios de IPv6 estarán contentos de saber que Zebra también lo detectará y lo admitirá.

Cómo utilizar Isearch para buscar archivos de texto en Linux

Una vez que hayas instalado el programa, es posible que sea necesario agregar algunas líneas a /etc/services. Los demonios de Zebra funcionan en sus propias líneas de terminal virtual (VTY), por lo que tu sistema necesita saber cuáles son. Aquí están las líneas que deberías agregar:
zebrasrv        2600/tcp             # zebra service
zebra           2601/tcp              # zebra vty
ripd            2602/tcp              # RIPd vty
ripngd          2603/tcp              # RIPngd vty
ospfd           2604/tcp              # OSPFd vty
bgpd            2605/tcp             # BGPd vty
ospf6d          2606/tcp              # OSPF6d vty

Configurando Zebra

Si estás familiarizado con Cisco IOS, no deberías tener problemas para poner en funcionamiento Zebra en poco tiempo. Cada uno de los demonios de Zebra utiliza una VTY separada para permitir la configuración dinámica a través de una sesión Telnet. Entonces, si necesitas configurar OSPF, simplemente Telnet a la puerta 2604 en la caja de Linux. Para modificar la tabla de enrutamiento del kernel o configurar la redistribución entre protocolos de enrutamiento, debes Telnet a la puerta 2601. Este es el demonio de Zebra, que actúa como administrador de kernel y maneja la comunicación entre los otros demonios y el sistema mismo.

Echemos un vistazo a cómo pondríamos en funcionamiento OSPF y BGP en un servidor de prueba. Los demonios de Zebra utilizan archivos de texto sin formato para almacenar sus configuraciones. Para nuestro enrutador OSPF/BGP, se utilizarán tres archivos: zebra.conf, ospfd.conf y bgpd.conf. El archivo zebra.conf, por ejemplo, se verá algo así:
! Configuración de Zebra guardada desde vty
! 2002/02/28 01:46:12
!
hostname LinuxRouter
password zebra
enable password z3bRa
log file /var/log/zebra/zebra.log
!
interface eth0
  description Interface a Red Externa
  ip address 10.0.0.1/24
!
interface eth1
  description Interface a Red Interna
  ip address 192.168.66.1/24

Los signos de exclamación sirven como marcadores de comentarios o espaciadores. El resto de la configuración debería ser más o menos autoexplicativa. Hay varios tipos diferentes de interfaces de red (Ethernet, ISDN, etc.) y Zebra puede utilizar cualquiera de las que sean reconocidas por el kernel Linux.

La máscara de subred se realiza con bits de red (por ejemplo, /24) en lugar de la máscara completa, que en este caso sería 255.255.255.0. También ten en cuenta que hay dos contraseñas, una para el modo de usuario y otra para el modo privilegiado. Esto es útil para proporcionar acceso a no administradores y es fundamental si estás creando un servidor de rutas o un espejo. Cualquier administrador de BGP te dirá que los espejos son clave para solucionar problemas de enrutamiento, ya que te permiten ver las rutas tal como se ven desde el punto de vista de un AS externo. (AS significa Sistema Autónomo, básicamente, un grupo de dispositivos bajo la misma política o administración). El enrutamiento BGP se realiza mediante números AS, que son números registrados controlados por el Registro de Números de Internet Americano (ARIN). Para obtener más información sobre BGP, lee "Cómo usar BGP para lograr redundancia en Internet".

El siguiente paso es iniciar los programas necesarios. Puedes hacer esto con los siguientes comandos:
/usr/sbin/zebra –dk
/usr/sbin/ospfd –d
/usr/sbin/bgpd –d

Guía para entender y gestionar los permisos de archivos y directorios en Linux

En el primer comando, iniciamos zebra, el demonio que realmente actualizará la tabla de enrutamiento del kernel. La opción –dk le indica al programa que se ejecute como un demonio (la d), básicamente manteniéndolo en segundo plano. El k es una opción adicional que indica a Zebra que mantenga las rutas que ya están configuradas en la caja. Esto es útil si estás probando Zebra y no quieres eliminar tu tabla de enrutamiento accidentalmente. Normalmente, las rutas e interfaces se configuran con una combinación de los comandos ifconfig y route. Zebra es un reemplazo completo de esta forma de administración de rutas.

Configurando OSPF

Ahora que los servicios necesarios están en funcionamiento, realiza una conexión Telnet al puerto 2604 de la máquina local para comenzar la configuración de OSPF. Ingresa al modo privilegiado escribiendo enable (tal como lo harías en Cisco IOS) y luego ingresa la contraseña de modo privilegiado. Luego, se accede al modo de configuración con el comando configuration terminal. Zebra también aceptará abreviaturas en concordancia con su similitud con Cisco. También se aceptan las entradas list y ?, que proporcionan un menú de comandos posibles y una breve explicación.

También te alegrará ver que se admite el autocompletado con la tecla TAB. Esta es una buena función, especialmente si estás acostumbrado a utilizarla. Luego, deberemos decirle al demonio qué redes se van a anunciar a través de OSPF, junto con el área asociada. Ingresa a la configuración de OSPF escribiendo router ospf y luego network 192.168.66.0/24 area 0. Esto le indica al enrutador que vamos a usar OSPF para anunciar la red 192.168.66.0 con una máscara de subred de 255.255.255.0.

En este ejemplo, también vamos a hacer que la interfaz eth0 sea una interfaz pasiva para que las actualizaciones de enrutamiento no se envíen desde ella. Esto es importante para fines de prueba cuando otros enrutadores en esa dirección pueden estar escuchando. Puedes hacer esto con el comando passive-interface eth0. Una vez que hayas realizado los cambios, sal del modo de configuración escribiendo end y luego guárdalo con el comando write file. Aquí tienes una muestra de cómo se verá esto:
labrat:~# telnet 0 2604
Trying 0.0.0.0…
Connected to 0.
Escape character is ‘^]’.
 
Hello, this is zebra (versión 0.84b)
Copyright 1996-2000 Kunihiro Ishiguro
 
Verificación de acceso de usuario
 
Contraseña:
ospfd> enable
Contraseña:
ospfd# configure terminal
ospfd(config)# router ospf
ospfd(config-router)# network 192.168.66.0/24 area 0
ospfd(config-router)# passive-interface eth0
ospfd(config-router)# end
ospfd# write file
Configuración guardada en /etc/zebra/ospfd.conf

Recuerda que para que OSPF o BGP operen en una interfaz, esa interfaz debe estar activa. Para activar manualmente una interfaz, inicia sesión en el puerto 2601 y ejecuta un comando no shut en la interfaz correspondiente.

Configurando BGP

BGP se configura de manera muy similar a OSPF. Para comenzar, abre una sesión Telnet al puerto 2605. Después de ejecutar configure terminal, ingresa al modo de configuración de BGP escribiendo router bgp <número AS>. Como se mencionó anteriormente, BGP utiliza números AS para establecer relaciones de vecindad y enrutamiento de tráfico. En nuestro entorno de prueba, usaremos un número AS privado, que puede oscilar entre 64512 y 65534. Luego, se instalan las redes que se anunciarán mediante BGP con el comando network. No existen opciones de área en BGP, por lo que nuestro comando sería network 192.168.66.0/24. A diferencia de OSPF, los vecinos de BGP deben asignarse estáticamente. Puedes hacer esto de la siguiente manera: neighbor <IP del vecino> remote-as <número AS remoto>. Aquí tienes un ejemplo de cómo se verá esto:
labrat:~# telnet 0 2605
Trying 0.0.0.0…
Connected to 0.
Escape character is ‘^]’.
 
Hello, this is zebra (versión 0.84b)
Copyright 1996-2000 Kunihiro Ishiguro
 
Verificación de acceso de usuario
 
Contraseña:
bgpd> enable
Contraseña:
bgpd# configure terminal
bgpd(config)# router bgp 65530
bgpd(config-router)# network 192.168.66.0/24
bgpd(config-router)# neighbor 10.0.0.5 remote-as 65531
bgpd(config-router)# end
bgpd# write file
Configuración guardada en /etc/zebra/bgpd.conf

Cómo configurar un servidor Linux como puerta de enlace para una red local

Tanto OSPF como BGP tienen una gran cantidad de opciones, lo suficiente como para estar fuera del alcance de este artículo. Recomiendo estudiar un poco sobre cada protocolo antes de trabajar con él en un entorno de producción. La documentación de GNU Zebra también puede ayudar en este sentido.

Resumen

Las redes incluyen una variedad de opciones para enrutamiento de tráfico. Cuando se trata de enrutadores, hay muchas opciones de hardware disponibles, pero pueden ser costosas, razón suficiente para considerar convertir un sistema Linux en un enrutador totalmente funcional. Zebra suite de demonios de enrutamiento hace posible esto. Con soporte para IPv4, IPv6 y una amplia variedad de protocolos, Zebra puede abordar todas tus necesidades de enrutamiento. También aprovecha la experiencia y el conocimiento que muchos administradores ya han adquirido al trabajar con enrutadores basados en Cisco IOS.

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Código abierto, allí encontraras muchos artículos similares a Cómo convertir una caja de Linux en un router OSPF y BGP , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.