562 lines
21 KiB
Markdown
562 lines
21 KiB
Markdown
# OSPF Gateway Failover: SWE-HIPHOST → FIN-HIPHOST
|
||
|
||
## Проблема
|
||
|
||
У вас есть:
|
||
- BGP приносит список адресов
|
||
- Трафик фильтруется на шлюз `swe-hiphost`
|
||
- Нужно автоматически переключаться на `fin-hiphost` при недоступности `swe-hiphost`
|
||
- **Решение через OSPF**
|
||
|
||
## Архитектура решения через OSPF
|
||
|
||
```mermaid
|
||
graph TB
|
||
subgraph "HOME"
|
||
HOME[HOME<br/>home.rt.shx.su]
|
||
BGP[BGP Routes]
|
||
OSPF[OSPF Instance]
|
||
RT[Routing Table]
|
||
end
|
||
|
||
subgraph "Швеция"
|
||
SWE[SWE-HIPHOST<br/>swe.hiphost.rt.shx.su]
|
||
OSPF_SWE[OSPF<br/>redistribute=static]
|
||
BFD_SWE[BFD Session]
|
||
end
|
||
|
||
subgraph "Финляндия"
|
||
FIN[FIN-HIPHOST<br/>fin.hiphost.rt.shx.su]
|
||
OSPF_FIN[OSPF<br/>redistribute=static]
|
||
BFD_FIN[BFD Session]
|
||
end
|
||
|
||
%% OSPF связи
|
||
HOME -. "OSPF area" .- SWE
|
||
HOME -. "OSPF area" .- FIN
|
||
|
||
%% BFD мониторинг
|
||
SWE -. "BFD monitoring" .- FIN
|
||
HOME -. "BFD monitoring" .- SWE
|
||
HOME -. "BFD monitoring" .- FIN
|
||
|
||
%% Маршрутизация
|
||
BGP -. "BGP routes" .- HOME
|
||
OSPF -. "OSPF routes" .- HOME
|
||
RT -. "Active routes" .- HOME
|
||
|
||
style HOME fill:#e1f5fe
|
||
style SWE fill:#4caf50
|
||
style FIN fill:#ff9800
|
||
style OSPF fill:#ff5722
|
||
style BFD_SWE fill:#9c27b0
|
||
style BFD_FIN fill:#9c27b0
|
||
```
|
||
|
||
## Решение 1: OSPF с динамическими cost
|
||
|
||
### Настройка на SWE-HIPHOST (swe.hiphost.rt.shx.su):
|
||
|
||
```shell
|
||
# Настроить BFD для мониторинга доступности
|
||
/routing bfd
|
||
add interface=gre-FIN-HIPHOST interval=100ms multiplier=3
|
||
|
||
# Создать статические маршруты для BGP адресов
|
||
/ip route
|
||
add dst-address=173.194.0.0/16 gateway=fin-hiphost distance=1 check-gateway=bfd
|
||
add dst-address=74.125.0.0/16 gateway=fin-hiphost distance=1 check-gateway=bfd
|
||
add dst-address=142.250.0.0/16 gateway=fin-hiphost distance=1 check-gateway=bfd
|
||
add dst-address=172.217.0.0/16 gateway=fin-hiphost distance=1 check-gateway=bfd
|
||
add dst-address=216.58.0.0/16 gateway=fin-hiphost distance=1 check-gateway=bfd
|
||
add dst-address=34.0.0.0/8 gateway=fin-hiphost distance=1 check-gateway=bfd
|
||
add dst-address=35.0.0.0/8 gateway=fin-hiphost distance=1 check-gateway=bfd
|
||
add dst-address=142.0.0.0/8 gateway=fin-hiphost distance=1 check-gateway=bfd
|
||
|
||
# Включить redistribute в OSPF
|
||
/routing ospf instance
|
||
set [ find default=yes ] redistribute=connected,static
|
||
|
||
# Настроить OSPF интерфейс с динамическим cost
|
||
/routing ospf interface-template
|
||
add interfaces=gre-HOME cost=10 area=backbone
|
||
```
|
||
|
||
### Настройка на FIN-HIPHOST (fin.hiphost.rt.shx.su):
|
||
|
||
```shell
|
||
# Настроить BFD для мониторинга доступности
|
||
/routing bfd
|
||
add interface=gre-SWE-HIPHOST interval=100ms multiplier=3
|
||
|
||
# Создать статические маршруты для BGP адресов
|
||
/ip route
|
||
add dst-address=173.194.0.0/16 gateway=swe-hiphost distance=1 check-gateway=bfd
|
||
add dst-address=74.125.0.0/16 gateway=swe-hiphost distance=1 check-gateway=bfd
|
||
add dst-address=142.250.0.0/16 gateway=swe-hiphost distance=1 check-gateway=bfd
|
||
add dst-address=172.217.0.0/16 gateway=swe-hiphost distance=1 check-gateway=bfd
|
||
add dst-address=216.58.0.0/16 gateway=swe-hiphost distance=1 check-gateway=bfd
|
||
add dst-address=34.0.0.0/8 gateway=swe-hiphost distance=1 check-gateway=bfd
|
||
add dst-address=35.0.0.0/8 gateway=swe-hiphost distance=1 check-gateway=bfd
|
||
add dst-address=142.0.0.0/8 gateway=swe-hiphost distance=1 check-gateway=bfd
|
||
|
||
# Включить redistribute в OSPF
|
||
/routing ospf instance
|
||
set [ find default=yes ] redistribute=connected,static
|
||
|
||
# Настроить OSPF интерфейс с высоким cost (резервный)
|
||
/routing ospf interface-template
|
||
add interfaces=gre-HOME cost=100 area=backbone
|
||
```
|
||
|
||
### Настройка на HOME (home.rt.shx.su):
|
||
|
||
```shell
|
||
# Настроить BFD для мониторинга обоих шлюзов
|
||
/routing bfd
|
||
add interface=gre-SWE-HIPHOST interval=100ms multiplier=3
|
||
add interface=gre-FIN-HIPHOST interval=100ms multiplier=3
|
||
|
||
# OSPF интерфейсы
|
||
/routing ospf interface-template
|
||
add interfaces=gre-SWE-HIPHOST cost=10 area=backbone
|
||
add interfaces=gre-FIN-HIPHOST cost=100 area=backbone
|
||
|
||
# Создать routing table для BGP маршрутов
|
||
/routing table
|
||
add name=BGP-Routes fib
|
||
|
||
# Address-list для BGP маршрутов
|
||
/ip firewall address-list
|
||
add list=BGP-ROUTES list=173.194.0.0/16 comment="BGP route"
|
||
add list=BGP-ROUTES list=74.125.0.0/16 comment="BGP route"
|
||
add list=BGP-ROUTES list=142.250.0.0/16 comment="BGP route"
|
||
add list=BGP-ROUTES list=172.217.0.0/16 comment="BGP route"
|
||
add list=BGP-ROUTES list=216.58.0.0/16 comment="BGP route"
|
||
add list=BGP-ROUTES list=34.0.0.0/8 comment="BGP route"
|
||
add list=BGP-ROUTES list=35.0.0.0/8 comment="BGP route"
|
||
add list=BGP-ROUTES list=142.0.0.0/8 comment="BGP route"
|
||
|
||
# Routing rules для BGP маршрутов
|
||
/routing rule
|
||
add dst-address=173.194.0.0/16 action=lookup table=BGP-Routes
|
||
add dst-address=74.125.0.0/16 action=lookup table=BGP-Routes
|
||
add dst-address=142.250.0.0/16 action=lookup table=BGP-Routes
|
||
add dst-address=172.217.0.0/16 action=lookup table=BGP-Routes
|
||
add dst-address=216.58.0.0/16 action=lookup table=BGP-Routes
|
||
add dst-address=34.0.0.0/8 action=lookup table=BGP-Routes
|
||
add dst-address=35.0.0.0/8 action=lookup table=BGP-Routes
|
||
add dst-address=142.0.0.0/8 action=lookup table=BGP-Routes
|
||
```
|
||
|
||
## Решение 2: OSPF с динамическим cost на основе BFD
|
||
|
||
### Скрипт для динамического изменения OSPF cost:
|
||
|
||
```shell
|
||
# Скрипт на SWE-HIPHOST для изменения cost на основе доступности FIN
|
||
/system script
|
||
add name=adjust-ospf-cost-swe source={
|
||
:local finStatus [/routing bfd print where interface=gre-FIN-HIPHOST]
|
||
:local homeInterface [/routing ospf interface-template find where interfaces=gre-HOME]
|
||
|
||
:if ([:len $finStatus] > 0) do={
|
||
# FIN доступен - низкий cost (основной маршрут)
|
||
/routing ospf interface-template set $homeInterface cost=10
|
||
:log info "FIN-HIPHOST is UP - SWE cost=10 (primary)"
|
||
} else={
|
||
# FIN недоступен - высокий cost (резервный маршрут)
|
||
/routing ospf interface-template set $homeInterface cost=1000
|
||
:log info "FIN-HIPHOST is DOWN - SWE cost=1000 (backup)"
|
||
}
|
||
}
|
||
|
||
# Скрипт на FIN-HIPHOST для изменения cost на основе доступности SWE
|
||
/system script
|
||
add name=adjust-ospf-cost-fin source={
|
||
:local sweStatus [/routing bfd print where interface=gre-SWE-HIPHOST]
|
||
:local homeInterface [/routing ospf interface-template find where interfaces=gre-HOME]
|
||
|
||
:if ([:len $sweStatus] > 0) do={
|
||
# SWE доступен - высокий cost (резервный маршрут)
|
||
/routing ospf interface-template set $homeInterface cost=100
|
||
:log info "SWE-HIPHOST is UP - FIN cost=100 (backup)"
|
||
} else={
|
||
# SWE недоступен - низкий cost (основной маршрут)
|
||
/routing ospf interface-template set $homeInterface cost=10
|
||
:log info "SWE-HIPHOST is DOWN - FIN cost=10 (primary)"
|
||
}
|
||
}
|
||
|
||
# Запускать скрипты каждые 5 секунд
|
||
/system scheduler
|
||
add name=adjust-ospf-cost-swe interval=5s on-event=adjust-ospf-cost-swe
|
||
/system scheduler
|
||
add name=adjust-ospf-cost-fin interval=5s on-event=adjust-ospf-cost-fin
|
||
```
|
||
|
||
## Решение 3: OSPF с условными маршрутами
|
||
|
||
### Скрипт для условного создания маршрутов на основе BFD:
|
||
|
||
```shell
|
||
# Скрипт на SWE-HIPHOST
|
||
/system script
|
||
add name=conditional-routes-swe source={
|
||
:local finStatus [/routing bfd print where interface=gre-FIN-HIPHOST]
|
||
:local bgpRoutes [/routing bgp route print where active=yes]
|
||
|
||
:if ([:len $finStatus] > 0) do={
|
||
# FIN доступен - создать маршруты через FIN
|
||
:foreach route in=$bgpRoutes do={
|
||
:local dstAddress [:pick $route 0 [:find $route " "]]
|
||
:local existingRoute [/ip route print count-only where dst-address=$dstAddress and gateway=fin-hiphost]
|
||
|
||
:if ($existingRoute = 0) do={
|
||
/ip route add dst-address=$dstAddress gateway=fin-hiphost distance=1 check-gateway=bfd
|
||
:log info "Added route $dstAddress via FIN-HIPHOST"
|
||
}
|
||
}
|
||
} else={
|
||
# FIN недоступен - удалить маршруты через FIN
|
||
/ip route remove [find where gateway=fin-hiphost]
|
||
:log info "Removed routes via FIN-HIPHOST (unavailable)"
|
||
}
|
||
}
|
||
|
||
# Скрипт на FIN-HIPHOST
|
||
/system script
|
||
add name=conditional-routes-fin source={
|
||
:local sweStatus [/routing bfd print where interface=gre-SWE-HIPHOST]
|
||
:local bgpRoutes [/routing bgp route print where active=yes]
|
||
|
||
:if ([:len $sweStatus] > 0) do={
|
||
# SWE доступен - создать маршруты через SWE
|
||
:foreach route in=$bgpRoutes do={
|
||
:local dstAddress [:pick $route 0 [:find $route " "]]
|
||
:local existingRoute [/ip route print count-only where dst-address=$dstAddress and gateway=swe-hiphost]
|
||
|
||
:if ($existingRoute = 0) do={
|
||
/ip route add dst-address=$dstAddress gateway=swe-hiphost distance=1 check-gateway=bfd
|
||
:log info "Added route $dstAddress via SWE-HIPHOST"
|
||
}
|
||
}
|
||
} else={
|
||
# SWE недоступен - удалить маршруты через SWE
|
||
/ip route remove [find where gateway=swe-hiphost]
|
||
:log info "Removed routes via SWE-HIPHOST (unavailable)"
|
||
}
|
||
}
|
||
|
||
# Запускать каждые 30 секунд
|
||
/system scheduler
|
||
add name=conditional-routes-swe interval=30s on-event=conditional-routes-swe
|
||
/system scheduler
|
||
add name=conditional-routes-fin interval=30s on-event=conditional-routes-fin
|
||
```
|
||
|
||
## Решение 4: OSPF с route redistribution фильтрацией
|
||
|
||
### Настройка условного redistribute на основе BFD:
|
||
|
||
```shell
|
||
# Скрипт на SWE-HIPHOST для условного redistribute
|
||
/system script
|
||
add name=conditional-redistribute-swe source={
|
||
:local finStatus [/routing bfd print where interface=gre-FIN-HIPHOST]
|
||
|
||
:if ([:len $finStatus] > 0) do={
|
||
# FIN доступен - включить redistribute
|
||
/routing ospf instance set [find default=yes] redistribute=connected,static
|
||
:log info "SWE: FIN is UP - redistribute enabled"
|
||
} else={
|
||
# FIN недоступен - отключить redistribute
|
||
/routing ospf instance set [find default=yes] redistribute=connected
|
||
:log info "SWE: FIN is DOWN - redistribute disabled"
|
||
}
|
||
}
|
||
|
||
# Скрипт на FIN-HIPHOST для условного redistribute
|
||
/system script
|
||
add name=conditional-redistribute-fin source={
|
||
:local sweStatus [/routing bfd print where interface=gre-SWE-HIPHOST]
|
||
|
||
:if ([:len $sweStatus] > 0) do={
|
||
# SWE доступен - отключить redistribute (резервный)
|
||
/routing ospf instance set [find default=yes] redistribute=connected
|
||
:log info "FIN: SWE is UP - redistribute disabled (backup)"
|
||
} else={
|
||
# SWE недоступен - включить redistribute (основной)
|
||
/routing ospf instance set [find default=yes] redistribute=connected,static
|
||
:log info "FIN: SWE is DOWN - redistribute enabled (primary)"
|
||
}
|
||
}
|
||
|
||
# Запускать каждые 10 секунд
|
||
/system scheduler
|
||
add name=conditional-redistribute-swe interval=10s on-event=conditional-redistribute-swe
|
||
/system scheduler
|
||
add name=conditional-redistribute-fin interval=10s on-event=conditional-redistribute-fin
|
||
```
|
||
|
||
## Решение 5: OSPF с route filtering
|
||
|
||
### Настройка route filtering на основе BFD статуса:
|
||
|
||
```shell
|
||
# Создать route filters на SWE-HIPHOST
|
||
/routing ospf redistribute
|
||
add instance=default type=static route-filter=173.194.0.0/16
|
||
add instance=default type=static route-filter=74.125.0.0/16
|
||
add instance=default type=static route-filter=142.250.0.0/16
|
||
add instance=default type=static route-filter=172.217.0.0/16
|
||
add instance=default type=static route-filter=216.58.0.0/16
|
||
add instance=default type=static route-filter=34.0.0.0/8
|
||
add instance=default type=static route-filter=35.0.0.0/8
|
||
add instance=default type=static route-filter=142.0.0.0/8
|
||
|
||
# Скрипт для условного включения/отключения route filters
|
||
/system script
|
||
add name=toggle-route-filters source={
|
||
:local finStatus [/routing bfd print where interface=gre-FIN-HIPHOST]
|
||
:local sweStatus [/routing bfd print where interface=gre-SWE-HIPHOST]
|
||
|
||
# На SWE-HIPHOST
|
||
:if ([:len $finStatus] > 0) do={
|
||
# FIN доступен - включить фильтры (SWE будет анонсировать)
|
||
/routing ospf redistribute enable [find where type=static]
|
||
:log info "SWE: Route filters enabled (FIN is UP)"
|
||
} else={
|
||
# FIN недоступен - отключить фильтры (SWE не будет анонсировать)
|
||
/routing ospf redistribute disable [find where type=static]
|
||
:log info "SWE: Route filters disabled (FIN is DOWN)"
|
||
}
|
||
|
||
# На FIN-HIPHOST
|
||
:if ([:len $sweStatus] > 0) do={
|
||
# SWE доступен - отключить фильтры (FIN не будет анонсировать)
|
||
/routing ospf redistribute disable [find where type=static]
|
||
:log info "FIN: Route filters disabled (SWE is UP)"
|
||
} else={
|
||
# SWE недоступен - включить фильтры (FIN будет анонсировать)
|
||
/routing ospf redistribute enable [find where type=static]
|
||
:log info "FIN: Route filters enabled (SWE is DOWN)"
|
||
}
|
||
}
|
||
|
||
# Запускать каждые 10 секунд
|
||
/system scheduler
|
||
add name=toggle-route-filters interval=10s on-event=toggle-route-filters
|
||
```
|
||
|
||
## Проверка настройки
|
||
|
||
### Проверка OSPF маршрутов:
|
||
```shell
|
||
# На HOME проверить OSPF маршруты
|
||
/routing ospf route print
|
||
|
||
# Проверить OSPF соседей
|
||
/routing ospf neighbor print
|
||
|
||
# Проверить routing table BGP-Routes
|
||
/ip route print where routing-table=BGP-Routes
|
||
```
|
||
|
||
### Проверка BFD статуса:
|
||
```shell
|
||
# Проверить BFD сессии
|
||
/routing bfd print
|
||
|
||
# Проверить BFD детали
|
||
/routing bfd print detail
|
||
```
|
||
|
||
### Проверка маршрутов на шлюзах:
|
||
```shell
|
||
# На SWE-HIPHOST
|
||
/ip route print where dst-address~"173.194"
|
||
|
||
# На FIN-HIPHOST
|
||
/ip route print where dst-address~"173.194"
|
||
```
|
||
|
||
## Тестирование failover
|
||
|
||
### Тест 1: Отключение SWE-HIPHOST:
|
||
```shell
|
||
# Отключить GRE туннель на SWE
|
||
/interface gre disable [find where name=gre-HOME]
|
||
|
||
# Подождать 10-30 секунд и проверить OSPF маршруты на HOME
|
||
/routing ospf route print
|
||
|
||
# Проверить что маршруты идут через FIN
|
||
/ip route print where routing-table=BGP-Routes
|
||
```
|
||
|
||
### Тест 2: Отключение FIN-HIPHOST:
|
||
```shell
|
||
# Отключить GRE туннель на FIN
|
||
/interface gre disable [find where name=gre-HOME]
|
||
|
||
# Подождать и проверить что маршруты переключились на SWE
|
||
/routing ospf route print
|
||
```
|
||
|
||
## Мониторинг и логирование
|
||
|
||
### Настройка логирования:
|
||
```shell
|
||
# Включить логирование для OSPF
|
||
/system logging
|
||
add topics=ospf
|
||
|
||
# Включить логирование для BFD
|
||
/system logging
|
||
add topics=bfd
|
||
|
||
# Включить логирование для routing
|
||
/system logging
|
||
add topics=route
|
||
```
|
||
|
||
### Создание дашборда:
|
||
```shell
|
||
# Скрипт для отображения статуса
|
||
/system script
|
||
add name=show-ospf-status source={
|
||
:log info "=== OSPF Gateway Status ==="
|
||
:log info "BFD Status:"
|
||
/routing bfd print
|
||
:log info "OSPF Routes:"
|
||
/routing ospf route print
|
||
:log info "OSPF Neighbors:"
|
||
/routing ospf neighbor print
|
||
:log info "BGP Routes Table:"
|
||
/ip route print where routing-table=BGP-Routes
|
||
:log info "=== End Report ==="
|
||
}
|
||
|
||
# Запускать каждую минуту
|
||
/system scheduler
|
||
add name=ospf-status interval=1m on-event=show-ospf-status
|
||
```
|
||
|
||
## Полная конфигурация для копирования
|
||
|
||
### SWE-HIPHOST (swe.hiphost.rt.shx.su):
|
||
```shell
|
||
# BFD для мониторинга FIN
|
||
/routing bfd
|
||
add interface=gre-FIN-HIPHOST interval=100ms multiplier=3
|
||
|
||
# Статические маршруты через FIN
|
||
/ip route
|
||
add dst-address=173.194.0.0/16 gateway=fin-hiphost distance=1 check-gateway=bfd
|
||
add dst-address=74.125.0.0/16 gateway=fin-hiphost distance=1 check-gateway=bfd
|
||
add dst-address=142.250.0.0/16 gateway=fin-hiphost distance=1 check-gateway=bfd
|
||
add dst-address=172.217.0.0/16 gateway=fin-hiphost distance=1 check-gateway=bfd
|
||
add dst-address=216.58.0.0/16 gateway=fin-hiphost distance=1 check-gateway=bfd
|
||
add dst-address=34.0.0.0/8 gateway=fin-hiphost distance=1 check-gateway=bfd
|
||
add dst-address=35.0.0.0/8 gateway=fin-hiphost distance=1 check-gateway=bfd
|
||
add dst-address=142.0.0.0/8 gateway=fin-hiphost distance=1 check-gateway=bfd
|
||
|
||
# OSPF redistribute
|
||
/routing ospf instance
|
||
set [ find default=yes ] redistribute=connected,static
|
||
|
||
# OSPF интерфейс
|
||
/routing ospf interface-template
|
||
add interfaces=gre-HOME cost=10 area=backbone
|
||
```
|
||
|
||
### FIN-HIPHOST (fin.hiphost.rt.shx.su):
|
||
```shell
|
||
# BFD для мониторинга SWE
|
||
/routing bfd
|
||
add interface=gre-SWE-HIPHOST interval=100ms multiplier=3
|
||
|
||
# Статические маршруты через SWE
|
||
/ip route
|
||
add dst-address=173.194.0.0/16 gateway=swe-hiphost distance=1 check-gateway=bfd
|
||
add dst-address=74.125.0.0/16 gateway=swe-hiphost distance=1 check-gateway=bfd
|
||
add dst-address=142.250.0.0/16 gateway=swe-hiphost distance=1 check-gateway=bfd
|
||
add dst-address=172.217.0.0/16 gateway=swe-hiphost distance=1 check-gateway=bfd
|
||
add dst-address=216.58.0.0/16 gateway=swe-hiphost distance=1 check-gateway=bfd
|
||
add dst-address=34.0.0.0/8 gateway=swe-hiphost distance=1 check-gateway=bfd
|
||
add dst-address=35.0.0.0/8 gateway=swe-hiphost distance=1 check-gateway=bfd
|
||
add dst-address=142.0.0.0/8 gateway=swe-hiphost distance=1 check-gateway=bfd
|
||
|
||
# OSPF redistribute
|
||
/routing ospf instance
|
||
set [ find default=yes ] redistribute=connected,static
|
||
|
||
# OSPF интерфейс (резервный)
|
||
/routing ospf interface-template
|
||
add interfaces=gre-HOME cost=100 area=backbone
|
||
```
|
||
|
||
### HOME (home.rt.shx.su):
|
||
```shell
|
||
# BFD для мониторинга шлюзов
|
||
/routing bfd
|
||
add interface=gre-SWE-HIPHOST interval=100ms multiplier=3
|
||
add interface=gre-FIN-HIPHOST interval=100ms multiplier=3
|
||
|
||
# OSPF интерфейсы
|
||
/routing ospf interface-template
|
||
add interfaces=gre-SWE-HIPHOST cost=10 area=backbone
|
||
add interfaces=gre-FIN-HIPHOST cost=100 area=backbone
|
||
|
||
# Routing table для BGP маршрутов
|
||
/routing table
|
||
add name=BGP-Routes fib
|
||
|
||
# Address-list для BGP маршрутов
|
||
/ip firewall address-list
|
||
add list=BGP-ROUTES list=173.194.0.0/16 comment="BGP route"
|
||
add list=BGP-ROUTES list=74.125.0.0/16 comment="BGP route"
|
||
add list=BGP-ROUTES list=142.250.0.0/16 comment="BGP route"
|
||
add list=BGP-ROUTES list=172.217.0.0/16 comment="BGP route"
|
||
add list=BGP-ROUTES list=216.58.0.0/16 comment="BGP route"
|
||
add list=BGP-ROUTES list=34.0.0.0/8 comment="BGP route"
|
||
add list=BGP-ROUTES list=35.0.0.0/8 comment="BGP route"
|
||
add list=BGP-ROUTES list=142.0.0.0/8 comment="BGP route"
|
||
|
||
# Routing rules
|
||
/routing rule
|
||
add dst-address=173.194.0.0/16 action=lookup table=BGP-Routes
|
||
add dst-address=74.125.0.0/16 action=lookup table=BGP-Routes
|
||
add dst-address=142.250.0.0/16 action=lookup table=BGP-Routes
|
||
add dst-address=172.217.0.0/16 action=lookup table=BGP-Routes
|
||
add dst-address=216.58.0.0/16 action=lookup table=BGP-Routes
|
||
add dst-address=34.0.0.0/8 action=lookup table=BGP-Routes
|
||
add dst-address=35.0.0.0/8 action=lookup table=BGP-Routes
|
||
add dst-address=142.0.0.0/8 action=lookup table=BGP-Routes
|
||
|
||
# Логирование
|
||
/system logging
|
||
add topics=ospf
|
||
add topics=bfd
|
||
add topics=route
|
||
```
|
||
|
||
## Заключение
|
||
|
||
OSPF решение обеспечивает:
|
||
|
||
1. **Автоматический failover** через OSPF cost manipulation
|
||
2. **Быстрое обнаружение проблем** через BFD (100ms интервал)
|
||
3. **Динамическое управление маршрутами** через redistribute
|
||
4. **Элегантную интеграцию** с существующей OSPF инфраструктурой
|
||
5. **Автоматическое восстановление** при восстановлении доступности
|
||
|
||
**Преимущества OSPF подхода:**
|
||
- ✅ Использует существующую OSPF инфраструктуру
|
||
- ✅ Автоматическое распространение изменений
|
||
- ✅ Встроенная поддержка failover
|
||
- ✅ Меньше скриптов и ручного управления
|
||
- ✅ Более надежное решение
|
||
|
||
Теперь при недоступности SWE-HIPHOST OSPF автоматически выберет маршрут через FIN-HIPHOST, а при восстановлении вернется к SWE-HIPHOST. |