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.


