Configuración de OSPF con FRRouting en Linux

OSPF (Open Shortest Path First) es el protocolo de enrutamiento dinámico por enlace de estado más utilizado en redes empresariales, y FRRouting ofrece una implementación completa en Linux. Esta guía cubre la instalación de FRRouting, la configuración de áreas OSPF, las métricas de costo, la gestión de adyacencias, la redistribución de rutas y la resolución de problemas comunes.

Requisitos Previos

  • Ubuntu 20.04/22.04 o Debian 11/12
  • Acceso root
  • Múltiples interfaces de red (para un entorno OSPF realista)
  • Conocimientos básicos de TCP/IP y direccionamiento CIDR
# Habilitar el reenvío IP (imprescindible para el enrutamiento)
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

# Verificar
sysctl net.ipv4.ip_forward

Instalación de FRRouting

# Añadir el repositorio de FRRouting
curl -s https://deb.frrouting.org/frr/keys.gpg | \
  gpg --dearmor > /usr/share/keyrings/frrouting.gpg

echo "deb [signed-by=/usr/share/keyrings/frrouting.gpg] \
  https://deb.frrouting.org/frr \
  $(lsb_release -cs) frr-stable" \
  > /etc/apt/sources.list.d/frr.list

apt update
apt install -y frr frr-pythontools

# Habilitar el daemon OSPF
sed -i 's/^ospfd=no/ospfd=yes/' /etc/frr/daemons

# Si necesitas OSPFv3 para IPv6
# sed -i 's/^ospf6d=no/ospf6d=yes/' /etc/frr/daemons

# Iniciar FRRouting
systemctl enable frr
systemctl start frr

# Verificar que OSPF está activo
vtysh -c "show ospf"

Configuración Básica de OSPF

# Entrar a la shell de configuración de FRRouting
vtysh

configure terminal

# Nombre del router (aparece en los logs y en el ID del router)
hostname router-ospf-1

# Iniciar el proceso OSPF
router ospf

  # El router-id debe ser único en el dominio OSPF (generalmente la IP del loopback)
  ospf router-id 10.0.0.1

  # Anunciar las redes en OSPF - definir qué interfaces participan
  # Sintaxis: network <red> <wildcard> area <id-area>
  # Wildcard es la inversa de la máscara de subred
  network 10.0.0.0/32 area 0.0.0.0      # Interfaz loopback en el área backbone
  network 192.168.1.0/24 area 0.0.0.0    # Red LAN en el área backbone
  network 10.1.0.0/30 area 0.0.0.0       # Enlace punto a punto al siguiente router

  # Registrar las rutas OSPF como pasivas en interfaces donde no hay vecinos
  passive-interface default
  # Activar solo las interfaces que deben participar activamente
  no passive-interface eth0
  no passive-interface eth1

exit

write memory
exit

Configurar la interfaz loopback (recomendado para la estabilidad del router-id):

# Crear la interfaz loopback con una IP /32
ip link add loopback0 type dummy
ip addr add 10.0.0.1/32 dev loopback0
ip link set loopback0 up

# Hacer la configuración persistente
cat << 'EOF' >> /etc/network/interfaces
auto loopback0
iface loopback0 inet static
  address 10.0.0.1
  netmask 255.255.255.255
  pre-up ip link add loopback0 type dummy
EOF

Gestión de Áreas

OSPF organiza los routers en áreas para reducir el overhead del protocolo:

vtysh

configure terminal

router ospf
  ospf router-id 10.0.0.1

  # Área backbone (obligatoria) - área 0 o 0.0.0.0
  network 10.0.0.1/32 area 0
  network 10.1.0.0/30 area 0

  # Área 1 - red de servidores
  network 172.16.1.0/24 area 1
  network 10.1.1.0/30 area 1

  # Área 2 - red de usuarios
  network 172.16.2.0/24 area 2
  network 10.1.2.0/30 area 2

exit

# Configurar autenticación por área (MD5)
interface eth0
  ip ospf authentication message-digest
  ip ospf message-digest-key 1 md5 MiContraseñaOSPF
exit

write memory
exit

Configurar un Area Border Router (ABR) - router que conecta múltiples áreas:

vtysh

configure terminal

router ospf
  ospf router-id 10.0.0.2

  # Este router conecta el área 0 con el área 1
  network 10.1.0.0/30 area 0       # Enlace al área backbone
  network 172.16.1.0/24 area 1     # Red del área 1

  # Sumarizar las rutas del área 1 al anunciarlas al área 0
  # Esto reduce el tamaño de la tabla de rutas en el área backbone
  area 1 range 172.16.1.0/24

exit

write memory
exit

Costos y Métricas

El costo OSPF determina la ruta preferida hacia un destino (menor costo = preferida):

vtysh

configure terminal

# Cambiar el costo de referencia global (afecta el cálculo automático)
# El costo automático = referencia / ancho de banda de la interfaz
router ospf
  # Aumentar el ancho de banda de referencia para links de alta velocidad
  # Por defecto es 100 Mbps, aumentar a 100 Gbps para Gigabit y 10G
  auto-cost reference-bandwidth 100000
exit

# Establecer el costo manualmente en una interfaz específica
interface eth0
  # Costo bajo = ruta preferida (conexión de fibra de 10Gbps)
  ip ospf cost 10
exit

interface eth1
  # Costo alto = ruta de respaldo (conexión de 100Mbps)
  ip ospf cost 100
exit

write memory
exit

Gestión de Adyacencias

Las adyacencias OSPF (vecindades) deben formarse para intercambiar rutas:

vtysh

configure terminal

# Configurar el tipo de red en las interfaces para optimizar las adyacencias
interface eth0
  # Red punto a punto: no hay elección DR/BDR
  ip ospf network point-to-point

  # Tiempos del protocolo (más agresivos para detección rápida de fallos)
  # Hello cada 2 segundos, tiempo muerto de 6 segundos
  ip ospf hello-interval 2
  ip ospf dead-interval 6

  # BFD para detección de fallos sub-segundo (requiere kernel BFD)
  ip ospf bfd
exit

interface eth1
  # Red broadcast: se eligen DR y BDR
  ip ospf network broadcast

  # Prioridad del DR (0 = no puede ser DR, mayor número = mayor probabilidad)
  ip ospf priority 100
exit

write memory
exit

Verificar el estado de las adyacencias:

# Ver todos los vecinos OSPF y su estado
vtysh -c "show ip ospf neighbor"

# El estado debe ser FULL para un correcto intercambio de rutas
# Estados posibles: DOWN, INIT, 2WAY, EXSTART, EXCHANGE, LOADING, FULL

# Ver los detalles de un vecino específico
vtysh -c "show ip ospf neighbor 192.168.1.2 detail"

# Ver la base de datos de estado de enlace (LSDB)
vtysh -c "show ip ospf database"

Redistribución de Rutas

vtysh

configure terminal

router ospf
  # Redistribuir rutas estáticas en OSPF
  # metric-type 2 = métrica externa tipo 2 (no se añade costo interno)
  redistribute static metric-type 2

  # Redistribuir rutas conectadas (interfaces directas)
  redistribute connected metric 10

  # Redistribuir rutas BGP en OSPF
  redistribute bgp metric-type 1 subnets

  # Redistribuir con un route-map para filtrar
  redistribute static route-map FILTRO-ESTATICAS
exit

# Crear el route-map de filtrado
route-map FILTRO-ESTATICAS permit 10
  match ip address prefix-list PREFIJOS-PERMITIDOS
  set metric 100
exit

route-map FILTRO-ESTATICAS deny 20
exit

ip prefix-list PREFIJOS-PERMITIDOS permit 10.100.0.0/16 le 24

write memory
exit

Áreas Stub y NSSA

Las áreas Stub reducen el tamaño de la tabla de rutas en áreas periféricas:

vtysh

configure terminal

router ospf

  # Configurar el área 2 como stub
  # Los routers del área 2 no recibirán LSAs externos (rutas externas a OSPF)
  area 2 stub

  # Área stub sin ruta por defecto (no-summary)
  # Los ABRs no inyectan rutas inter-área, solo se usa la ruta por defecto
  area 3 stub no-summary

  # Área NSSA (Not-So-Stubby Area) - permite redistribución local de rutas externas
  area 4 nssa

exit

write memory
exit

Solución de Problemas

# Ver el resumen del estado OSPF
vtysh -c "show ip ospf"

# Ver la tabla de rutas aprendidas por OSPF
vtysh -c "show ip ospf route"

# Ver las interfaces OSPF y su estado
vtysh -c "show ip ospf interface"

# Ver la base de datos LSA detallada
vtysh -c "show ip ospf database summary"

# Buscar una ruta específica en la LSDB
vtysh -c "show ip ospf database router 10.0.0.1"

# Activar debugging de OSPF (usar solo en entornos de prueba)
vtysh -c "debug ospf event"
vtysh -c "debug ospf packet all"

# Ver los logs de OSPF
journalctl -u frr -f | grep OSPF

# Verificar la tabla de enrutamiento del sistema
ip route show | grep ospf

Los vecinos no forman adyacencia:

# Verificar que los tiempos hello/dead coinciden entre vecinos
vtysh -c "show ip ospf interface eth0"

# Verificar que las áreas coinciden
vtysh -c "show ip ospf neighbor"

# Verificar que no hay un firewall bloqueando OSPF
# OSPF usa el protocolo IP 89 (no TCP/UDP)
tcpdump -i eth0 proto ospf

# Verificar la autenticación
vtysh -c "show ip ospf interface eth0" | grep -i auth

Conclusión

OSPF con FRRouting proporciona una solución de enrutamiento dinámico robusta y bien documentada para entornos Linux, con soporte completo para áreas, autenticación, BFD y redistribución de rutas. La correcta jerarquía de áreas es fundamental para la escalabilidad: el área backbone (área 0) debe ser el núcleo, y las áreas periféricas deben usar stub o NSSA cuando sea posible para reducir el overhead del protocolo. FRRouting y vtysh ofrecen una experiencia similar a los equipos de red Cisco o Juniper, facilitando la transición de hardware a software de enrutamiento.