Cuando se despliega una VPN Site-to-Site entre sedes, lo habitual es empezar utilizando rutas estáticas. Es una solución sencilla y funcional, pero que se complica a medida que se añaden más ubicaciones o cambian las redes.
En este escenario partimos de una infraestructura ya operativa:
- VPN Site-to-Site entre un HUB y dos Spokes.
- Conectividad funcionando correctamente.
- SD-WAN desplegado en los Spokes.
El objetivo es sustituir las rutas estáticas por BGP, manteniendo la conectividad y simplificando la gestión de rutas.
Problema a resolver
En un entorno con varias sedes, gestionar rutas estáticas implica:
- Configurar rutas manualmente en cada equipo.
- Mantenerlas actualizadas ante cualquier cambio.
- Riesgo de inconsistencias entre dispositivos.
Además, si se añaden más enlaces, como puede ser una segunda VPN, la complejidad aumenta rápidamente.
Enfoque
La idea es sencilla:
- Establecer una sesión BGP entre el HUB y cada Spoke.
- Anunciar las redes locales de cada sede.
- Permitir que el HUB centralice el intercambio de rutas.
De esta forma, se evita la gestión manual y se prepara el entorno para crecer.
Escenario
El entorno está formado por:
- Un HUB.
- Spoke 1.
- Spoke 2.
- VPN IPsec entre el HUB y cada Spoke.
Configuración mediante GUI
La configuración de BGP se realiza desde:
- Network > BGP
En caso de que esta opción no esté disponible, tendremos que ir a System > Feature Visibility para activarla:

Esta opción habilitará, dentro del menú Network, las características de BGP y Routing Objects.
HUB
En el HUB se configura el AS local y se añaden los vecinos correspondientes a cada Spoke.
Parámetros principales:
- Local AS: 65002.
- Router ID: 10.100.1.1.
Spoke 1:
- Local AS: 65002.
- Vecino: 10.100.1.2.
Spoke 2:
- Local AS: 65002.
- Vecino: 10.100.1.3.
Configuración
Antes de comenzar con la configuración de BGP, será necesario crear dos objetos que vamos a utilizar. Primeramente mostraremos la creación mediante la CLI y seguidamente mediante la GUI de FortiGate:
HUB:
En este escenario se utilizan Route-Maps y Prefix-Lists para controlar qué rutas pueden anunciarse mediante BGP.
- ROUTE MAP:
Un Route-Map permite aplicar filtros o modificaciones sobre las rutas antes de anunciarlas.
En este caso se utiliza para:
- Permitir determinadas interfaces.
- Evitar anunciar rutas provenientes de la WAN.
- Filtrar tráfico no deseado.
config router route-map
edit "OVERLAY_OUT"
config rule
edit 1
set match-interface "Mgmt_Loopback"
unset set-ip-prefsrc
next
edit 2
set action deny
set match-interface "port1"
unset set-ip-prefsrc
next
edit 3
set match-ip-address "BGP_OUT"
unset set-ip-prefsrc
next
end
next
end

- PREFIX LIST:
Las Prefix-Lists permiten filtrar prefijos IP específicos.
En este laboratorio se utilizan para impedir el aprendizaje o anuncio de determinadas rutas mediante BGP.
config router prefix-list
edit "BGP_OUT"
next
end

Una vez creados los objetos, comenzamos con la configuración básica:
- BGP:
config router bgp
set as 65502
set router-id 10.100.1.1
set keepalive-timer 5
set holdtime-timer 30
set ibgp-multipath enable
set additional-path enable
set graceful-restart enable
config neighbor-group
edit "INET1_Overlay"
set next-hop-self enable
set remote-as 65502
next
end
config neighbor-range
edit 1
set prefix 192.168.216.0 255.255.255.0
set neighbor-group "INET1_Overlay"
next
end
config redistribute "connected"
set status enable
set route-map "OVERLAY_OUT"
end
config redistribute "rip"
end
config redistribute "ospf"
end
config redistribute "static"
set status enable
set route-map "OVERLAY_OUT"
end
config redistribute "isis"
end
config redistribute6 "connected"
end
config redistribute6 "rip"
end
config redistribute6 "ospf"
end
config redistribute6 "static"
end
config redistribute6 "isis"
end
end
- BGP:

- Neighbors:

- Neighbor Groups:
FortiGate permite agrupar vecinos BGP mediante Neighbor Groups.
Esto resulta especialmente útil cuando existen múltiples vecinos con configuraciones similares, evitando repetir parámetros manualmente.


- Neighbor Ranges:
Por otro lado, Neighbor Range permite aceptar automáticamente vecinos dentro de un rango determinado de IPs, asociándolos al grupo correspondiente.
Este enfoque simplifica la configuración y facilita la escalabilidad en entornos HUB & Spoke.


- Networks:

- IPv4 Redistribute:

- Dampening:

- Graceful Restart:

- Advanced Options:

- Best Path Selection:

En la configuración anterior se han utilizado varios parámetros adicionales que conviene explicar:
- set keepalive-timer 5: Define cada cuántos segundos se envían mensajes Keepalive entre vecinos BGP para comprobar que la sesión sigue activa.
- set holdtime-timer 30: Tiempo máximo que se esperará sin recibir Keepalives antes de considerar caída la sesión BGP.
- set ibgp-multipath enable: Permite instalar múltiples rutas BGP hacia el mismo destino cuando tienen el mismo coste.
- set additional-path enable: Permite anunciar múltiples rutas para un mismo prefijo, mejorando escenarios con varios caminos disponibles.
- set graceful-restart enable: Ayuda a mantener las rutas temporalmente durante reinicios del proceso BGP, reduciendo cortes de tráfico.
- set next-hop-self enable: Hace que el FortiGate anuncie su propia IP como siguiente salto (next-hop) hacia otros vecinos BGP.
- set soft-reconfiguration enable: Permite refrescar políticas BGP sin necesidad de reiniciar completamente la sesión.
- set update-source «VPN_INET1»: Fuerza a utilizar la interfaz indicada como origen de la sesión BGP.
Spoke 1:
- ROUTE MAP:
config router route-map
edit "DENEGAR_WAN"
config rule
edit 1
set match-interface "Mgmt_Loopback"
unset set-ip-prefsrc
next
edit 2
set action deny
set match-interface "port1"
unset set-ip-prefsrc
next
end
next
end

- PREFIX LIST:
config router prefix-list
edit "DENEGAR_BGP"
config rule
edit 1
set action deny
set prefix any
unset ge
unset le
next
end
next
end

- BGP:
config router bgp
set as 65502
set router-id 10.100.1.2
set keepalive-timer 5
set holdtime-timer 30
set ibgp-multipath enable
set additional-path enable
config neighbor
edit "192.168.216.1"
set next-hop-self enable
set soft-reconfiguration enable
set interface "VPN_INET1"
set prefix-list-in "DENEGAR_BGP"
set remote-as 65502
set update-source "VPN_INET1"
next
end
config redistribute "connected"
set status enable
set route-map "DENEGAR_WAN"
end
config redistribute "rip"
end
config redistribute "ospf"
end
config redistribute "static"
end
config redistribute "isis"
end
config redistribute6 "connected"
end
config redistribute6 "rip"
end
config redistribute6 "ospf"
end
config redistribute6 "static"
end
config redistribute6 "isis"
end
end
- BGP:

- Neighbors:


- Neightbor Groups:

- Neighbor Ranges:

- Networks:

- IPv4 Redistribute:

- Dampening:

- Graceful Restart:

- Advanced Options:

- Best Path Selection:

Spoke 2:
- ROUTE MAP:
config router route-map
edit "DENEGAR_WAN"
config rule
edit 1
set match-interface "Mgmt_Loopback"
unset set-ip-prefsrc
next
edit 2
set action deny
set match-interface "port1"
unset set-ip-prefsrc
next
end
next
end

- PREFIX LIST:
config router prefix-list
edit "DENEGAR_BGP"
config rule
edit 1
set action deny
set prefix any
unset ge
unset le
next
end
next
end

- BGP:
config router bgp
set as 65502
set router-id 10.100.1.3
set keepalive-timer 5
set holdtime-timer 30
set ibgp-multipath enable
set additional-path enable
config neighbor
edit "192.168.216.1"
set next-hop-self enable
set soft-reconfiguration enable
set interface "VPN_INET1"
set prefix-list-in "DENEGAR_BGP"
set remote-as 65502
set update-source "VPN_INET1"
next
end
config redistribute "connected"
set status enable
set route-map "DENEGAR_WAN"
end
config redistribute "rip"
end
config redistribute "ospf"
end
config redistribute "static"
end
config redistribute "isis"
end
config redistribute6 "connected"
end
config redistribute6 "rip"
end
config redistribute6 "ospf"
end
config redistribute6 "static"
end
config redistribute6 "isis"
end
end
Verificación
Una vez aplicada la configuración, se debe comprobar que las sesiones están establecidas:
get router info bgp summary
Y revisar las rutas aprendidas:
get router info routing-table bgp
Eliminación de rutas estáticas
Una vez validado el funcionamiento de BGP:
- Eliminar rutas estáticas.
- Verificar que el tráfico sigue funcionando.
Es recomendable hacerlo de forma progresiva.
Consideraciones
Antes de aplicar cambios en producción:
- Verificar conectividad entre vecinos BGP.
- Revisar que las redes anunciadas existen.
- Evitar solapamientos de direccionamiento.
- Validar primero en un subconjunto de equipos.
Integración con SD-WAN
En este caso, los Spokes ya disponen de SD-WAN.
Esto permite, en un futuro:
- Añadir una segunda VPN.
- Establecer múltiples sesiones BGP.
- Utilizar SD-WAN para seleccionar el mejor camino.
Problemas típicos
- BGP no levanta → falta de conectividad o puerto TCP/179 bloqueado.
- Sesión establecida pero sin rutas → falta network.
- Rutas no se instalan → conflicto con rutas estáticas.
- Spokes no se ven entre sí → el HUB no anuncia correctamente.
Conclusión
El uso de BGP sobre una VPN Site-to-Site permite simplificar la gestión de rutas en entornos con múltiples sedes.
Frente a un enfoque basado en rutas estáticas, el enrutamiento dinámico facilita la escalabilidad y reduce la carga operativa.
