--- title: "Cómo configurar OSPF con FRRouting en Ubuntu 24.04" description: "Configura OSPF con FRRouting entre dos servidores Ubuntu 24.04: adyacencia, costes, autenticación MD5, redistribución de rutas y áreas stub, paso a paso." category: "Redes Avanzadas" language: es source: https://cubepath.com/es/docs/redes-avanzadas/configuracion-ospf-con-frrouting updated: 2026-09-25 --- # Cómo configurar OSPF con FRRouting en Ubuntu 24.04 OSPF (Open Shortest Path First) es un protocolo de enrutamiento dinámico de estado de enlace: cada router conoce la topología completa de su área y calcula el camino más corto hacia cada red. FRRouting (FRR) lo implementa en Linux con el daemon `ospfd`. En este tutorial conectarás dos servidores Ubuntu 24.04 con OSPF, harás que aprendan automáticamente las redes del otro y después ajustarás costes, autenticación, redistribución y áreas stub. ## Requisitos previos Para seguir esta guía necesitas: - Dos servidores con Ubuntu 24.04 LTS (en la guía, `r1` y `r2`) y un usuario no root con privilegios `sudo` en cada uno. - Una red privada entre ambos, por ejemplo una red privada de CubePath o una VLAN, con una interfaz dedicada en cada servidor. En los ejemplos es `10.10.0.0/24`, con `10.10.0.1` en `r1` y `10.10.0.2` en `r2`. - Acceso de consola o una interfaz de gestión distinta de la del enlace OSPF, por si un error de configuración corta la conectividad. Identifica el nombre de la interfaz de la red privada en cada servidor: ```bash ip -br addr ``` ```output lo UNKNOWN 127.0.0.1/8 ::1/128 eth0 UP your_server_ip/24 eth1 UP 10.10.0.1/24 ``` En esta guía la interfaz del enlace OSPF es `eth1`. Si en tu sistema se llama distinto (por ejemplo `ens19`), sustitúyela en todos los comandos y archivos. Cada router tendrá además una dirección de loopback que actuará como identificador estable y como red de prueba: | Router | Enlace (`eth1`) | Loopback | |--------|-----------------|----------| | r1 | `10.10.0.1/24` | `10.255.0.1/32` | | r2 | `10.10.0.2/24` | `10.255.0.2/32` | ## Paso 1: Instalar FRRouting Ejecuta este paso en los dos servidores. Añade la clave y el repositorio oficial de FRR: ```bash sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://deb.frrouting.org/frr/keys.gpg | sudo tee /etc/apt/keyrings/frrouting.gpg > /dev/null echo "deb [signed-by=/etc/apt/keyrings/frrouting.gpg] https://deb.frrouting.org/frr $(lsb_release -sc) frr-stable" | sudo tee /etc/apt/sources.list.d/frr.list ``` Instala FRR y las herramientas de recarga: ```bash sudo apt update sudo apt install frr frr-pythontools ``` Comprueba que está instalado: ```bash sudo vtysh -c "show version" ``` ```output FRRouting 10.x.y (r1) on Linux(6.8.0-xx-generic). ``` ## Paso 2: Activar ospfd y el reenvío IP En los dos servidores, activa el daemon de OSPF en `/etc/frr/daemons`: ```bash sudo sed -i 's/^ospfd=no/ospfd=yes/' /etc/frr/daemons grep ^ospfd= /etc/frr/daemons ``` ```output ospfd=yes ``` Para que el servidor encamine tráfico entre interfaces, y no solo aprenda rutas, activa el reenvío IP de forma persistente: ```bash echo "net.ipv4.ip_forward = 1" | sudo tee /etc/sysctl.d/99-routing.conf sudo sysctl --system ``` Reinicia FRR y comprueba que `ospfd` está en marcha: ```bash sudo systemctl restart frr systemctl status frr --no-pager ``` En la salida deben aparecer los procesos `zebra`, `staticd` y `ospfd`. OSPF no usa TCP ni UDP, sino el protocolo IP 89 con destino a las direcciones multicast `224.0.0.5` y `224.0.0.6`. Si tienes UFW activo, permite el tráfico entrante por la interfaz del enlace desde la red privada: ```bash sudo ufw allow in on eth1 from 10.10.0.0/24 ``` ## Paso 3: Configurar OSPF en ambos routers Abre el archivo de configuración de FRR en `r1`: ```bash sudo nano /etc/frr/frr.conf ``` Sustituye su contenido por lo siguiente: ```text frr defaults traditional hostname r1 log syslog informational service integrated-vtysh-config ! interface lo ip address 10.255.0.1/32 exit ! interface eth1 ip ospf network point-to-point no ip ospf passive exit ! router ospf ospf router-id 10.255.0.1 passive-interface default network 10.10.0.0/24 area 0 network 10.255.0.1/32 area 0 exit ! ``` Qué hace cada parte: - `interface lo` / `ip address` añade la IP de loopback desde el propio FRR, así que persiste tras reiniciar sin tocar Netplan. - `ospf router-id` fija el identificador del router. Debe ser único en todo el dominio OSPF. - `network ... area 0` indica qué interfaces participan en OSPF: las que tienen una IP dentro de esas redes. El área 0 es el backbone, obligatorio en cualquier diseño OSPF. - `passive-interface default` hace que OSPF anuncie las redes de todas las interfaces, pero no busque vecinos en ellas. `no ip ospf passive` en `eth1` lo desactiva solo en el enlace entre routers, lo que evita enviar paquetes OSPF hacia redes donde no hay routers. - `ip ospf network point-to-point` evita la elección de DR/BDR en un enlace con solo dos routers y acelera la formación de la adyacencia. En `r2`, crea el mismo archivo cambiando el hostname, la loopback y el router-id: ```text frr defaults traditional hostname r2 log syslog informational service integrated-vtysh-config ! interface lo ip address 10.255.0.2/32 exit ! interface eth1 ip ospf network point-to-point no ip ospf passive exit ! router ospf ospf router-id 10.255.0.2 passive-interface default network 10.10.0.0/24 area 0 network 10.255.0.2/32 area 0 exit ! ``` En cada servidor, valida el archivo y aplica la configuración: ```bash sudo /usr/lib/frr/frr-reload.py --test /etc/frr/frr.conf sudo systemctl reload frr ``` ## Paso 4: Verificar la adyacencia y las rutas Tras unos segundos, los routers se descubren mutuamente. En `r1`, consulta los vecinos: ```bash sudo vtysh -c "show ip ospf neighbor" ``` ```output Neighbor ID Pri State Up Time Dead Time Address Interface RXmtL RqstL DBsmL 10.255.0.2 1 Full/- 42.310s 37.690s 10.10.0.2 eth1:10.10.0.1 0 0 0 ``` El estado debe ser `Full`. El guion tras la barra indica que no hay DR/BDR, lo esperado en un enlace punto a punto. Comprueba que `r1` ha aprendido la loopback de `r2` y la ha instalado en la tabla del kernel: ```bash ip route show proto ospf ``` ```output 10.255.0.2 nhid 32 via 10.10.0.2 dev eth1 metric 20 ``` Y prueba la conectividad usando la loopback de `r1` como origen: ```bash ping -c 3 -I 10.255.0.1 10.255.0.2 ``` ```output 3 packets transmitted, 3 received, 0% packet loss, time 2003ms ``` Otras órdenes útiles para ver el estado de OSPF: ```bash sudo vtysh -c "show ip ospf interface eth1" sudo vtysh -c "show ip ospf route" sudo vtysh -c "show ip ospf database" ``` ## Paso 5: Ajustar los costes OSPF elige el camino con menor coste acumulado. Por defecto, el coste de una interfaz es `ancho de banda de referencia / ancho de banda de la interfaz`, con una referencia de 100 Mbit/s. Eso da coste 1 a cualquier enlace de 100 Mbit/s o más, así que OSPF no distingue entre 1 Gbit/s y 10 Gbit/s. Sube la referencia a 100 Gbit/s (el valor se expresa en Mbit/s) en todos los routers del dominio, dentro del bloque `router ospf` de `/etc/frr/frr.conf`: ```text router ospf ospf router-id 10.255.0.1 auto-cost reference-bandwidth 100000 passive-interface default network 10.10.0.0/24 area 0 network 10.255.0.1/32 area 0 exit ``` En interfaces virtuales el kernel no siempre informa de una velocidad real, así que es habitual fijar el coste a mano en cada enlace. Por ejemplo, para marcar un enlace como ruta de respaldo con coste alto: ```text interface eth1 ip ospf network point-to-point no ip ospf passive ip ospf cost 100 exit ``` Aplica los cambios y comprueba el coste de la interfaz: ```bash sudo systemctl reload frr sudo vtysh -c "show ip ospf interface eth1" | grep -i cost ``` ```output Router ID 10.255.0.1, Network Type POINTOPOINT, Cost: 100 ``` Si hay dos caminos hacia la misma red, el de menor coste total es el que acaba en la tabla de rutas. Con costes iguales, FRR instala ambos y reparte el tráfico (ECMP). ## Paso 6: Autenticar las adyacencias Sin autenticación, cualquier equipo conectado a la red del enlace podría inyectar rutas. Activa la autenticación MD5 en la interfaz del enlace de ambos routers, con la misma clave y el mismo identificador de clave: ```text interface eth1 ip ospf network point-to-point no ip ospf passive ip ospf authentication message-digest ip ospf message-digest-key 1 md5 your_ospf_key exit ``` Sustituye `your_ospf_key` por una clave de hasta 16 caracteres. Aplica el cambio en los dos servidores: ```bash sudo systemctl reload frr ``` Mientras solo un lado tenga la clave, la adyacencia caerá. Cuando ambos coincidan, vuelve a `Full`. Compruébalo: ```bash sudo vtysh -c "show ip ospf neighbor" sudo vtysh -c "show ip ospf interface eth1" | grep -i auth ``` ```output Cryptographic authentication enabled ``` ## Paso 7: Redistribuir rutas en OSPF Las redes que no están en una interfaz con OSPF, como rutas estáticas hacia otra red, no se anuncian por sí solas. `redistribute` las inyecta en OSPF como rutas externas. Filtra siempre lo que redistribuyes con un route-map para no anunciar rutas por accidente. Como ejemplo, en `r2` añade una ruta estática hacia una red que está detrás de otro equipo de su LAN y redistribúyela. Añade estas líneas a `/etc/frr/frr.conf` de `r2`: ```text ip route 172.20.0.0/24 blackhole ! ip prefix-list ESTATICAS-OSPF seq 10 permit 172.20.0.0/16 le 24 ! route-map ESTATICAS-A-OSPF permit 10 match ip address prefix-list ESTATICAS-OSPF exit ! router ospf ospf router-id 10.255.0.2 passive-interface default network 10.10.0.0/24 area 0 network 10.255.0.2/32 area 0 redistribute static metric-type 2 route-map ESTATICAS-A-OSPF exit ! ``` En un entorno real, sustituye `blackhole` por el siguiente salto real (por ejemplo `ip route 172.20.0.0/24 10.20.0.5`). Con `metric-type 2` (el valor por defecto) la métrica externa no suma el coste interno; con `metric-type 1` sí lo suma, lo que es útil si varios routers redistribuyen la misma red. Aplica el cambio en `r2` y comprueba en `r1` que la ruta llega como externa: ```bash sudo vtysh -c "show ip ospf route" ``` ```output ============ OSPF external routing table =========== N E2 172.20.0.0/24 [20/20] tag: 0 via 10.10.0.2, eth1 ``` ## Paso 8: Añadir un área stub En redes grandes, OSPF se divide en áreas para limitar el tamaño de la base de datos de cada router. Todas las áreas se conectan al área 0 a través de un ABR (Area Border Router). Un área stub no recibe rutas externas: los ABR le inyectan una ruta por defecto en su lugar, lo que reduce la tabla de los routers periféricos. Supón que `r2` conecta una tercera red, `10.30.0.0/24` en la interfaz `eth2`, donde hay otros routers en el área 1. `r2` pasa a ser ABR. En su `/etc/frr/frr.conf`: ```text interface eth2 ip ospf network point-to-point no ip ospf passive exit ! router ospf ospf router-id 10.255.0.2 passive-interface default network 10.10.0.0/24 area 0 network 10.255.0.2/32 area 0 network 10.30.0.0/24 area 1 area 1 stub area 1 range 10.30.0.0/16 redistribute static metric-type 2 route-map ESTATICAS-A-OSPF exit ``` - `area 1 stub` debe configurarse en todos los routers del área 1; si no coincide, no se forman las adyacencias. - `area 1 stub no-summary` convertiría el área en totalmente stub: ni rutas externas ni entre áreas, solo la ruta por defecto. - `area 1 range 10.30.0.0/16` resume en el ABR las redes del área 1 en un solo prefijo hacia el backbone. Aplica el cambio y comprueba las áreas del router: ```bash sudo systemctl reload frr sudo vtysh -c "show ip ospf" | grep -A3 "Area ID" ``` La salida lista el área `0.0.0.0 (Backbone)` y el área `0.0.0.1 (Stub)` con sus interfaces. ## Solución de problemas **El vecino no aparece o se queda en `Init` o `ExStart`.** Los dos lados deben coincidir en área, tipo de red, temporizadores hello/dead, MTU y autenticación. Compara la salida de `show ip ospf interface eth1` en ambos routers. Si el problema es la MTU (el vecino se queda en `ExStart`), iguala la MTU de las interfaces. **No llegan paquetes OSPF.** Captura el tráfico en la interfaz del enlace: ```bash sudo tcpdump -ni eth1 proto ospf ``` Si solo ves paquetes salientes, revisa el firewall del otro servidor y que la red privada permita multicast. **La interfaz no participa en OSPF.** Comprueba que su IP está dentro de una sentencia `network` y que no es pasiva: ```bash sudo vtysh -c "show ip ospf interface" ``` **Revisar los logs.** Los mensajes de `ospfd` se registran en el journal de FRR: ```bash sudo journalctl -u frr --since "10 min ago" ``` ## Conclusión Has configurado OSPF con FRRouting entre dos servidores Ubuntu 24.04, verificado la adyacencia y las rutas aprendidas, y añadido costes, autenticación MD5, redistribución filtrada y un área stub. Como siguientes pasos, puedes activar OSPFv3 (`ospf6d`) para IPv6, habilitar BFD (`bfdd`) para detectar caídas de enlace en menos de un segundo y guardar `/etc/frr/frr.conf` de cada router en control de versiones.