# Настройка OSPF Cost для управления приоритетом маршрутов ## Цель Иметь оба маршрута с возможностью управления приоритетом через OSPF cost: - `10.100.5.2%SWE-HIPHOST-MTS` (прямой туннель HOME→SWE) - `10.200.2.2%SWE-HIPHOST-MTS` (через IHOR→SWE) ## Архитектура решения ```mermaid graph TB subgraph "HOME" HOME[HOME
home.rt.shx.su] end subgraph "Москва" IHOR[MSK-IHOR
msk.ihor.rt.shx.su] end subgraph "Швеция" SWE[SWE-HIPHOST
swe.hiphost.rt.shx.su] end %% GRE туннели HOME -- "GRE RTK→IHOR
cost=10" --> IHOR HOME -- "GRE RTK→SWE
cost=1000" --> SWE %% Межсерверный туннель IHOR -- "GRE IHOR→SWE
cost=10" --> SWE %% OSPF маршруты SWE -. "OSPF 0.0.0.0/0
cost=1000" .- HOME SWE -. "OSPF 0.0.0.0/0
cost=20" .- IHOR IHOR -. "OSPF 0.0.0.0/0
cost=20" .- HOME style HOME fill:#e1f5fe style IHOR fill:#ff9800 style SWE fill:#4caf50 ``` ## Настройка OSPF Cost ### На HOME (home.rt.shx.su): ```shell # Создать area 0.0.0.4 /routing ospf area add name=ihor-swe-area instance=default area-id=0.0.0.4 # Настроить cost для приоритизации маршрутов /routing ospf interface-template # IHOR (приоритетный) - низкий cost add interfaces=gre-MSK-IHOR-RTK cost=10 area=ihor-swe-area add interfaces=gre-MSK-IHOR-MTS cost=100 area=ihor-swe-area # SWE (резервный) - высокий cost add interfaces=gre-SWE-HIPHOST-RTK cost=1000 area=ihor-swe-area add interfaces=gre-SWE-HIPHOST-MTS cost=2000 area=ihor-swe-area ``` ### На MSK-IHOR (msk.ihor.rt.shx.su): ```shell # Создать area 0.0.0.4 /routing ospf area add name=ihor-swe-area instance=default area-id=0.0.0.4 # Настроить cost для туннелей к HOME /routing ospf interface-template add interfaces=gre-MSK-IHOR-RTK cost=10 area=ihor-swe-area add interfaces=gre-MSK-IHOR-MTS cost=100 area=ihor-swe-area # Настроить cost для туннеля к SWE add interfaces=gre-SWE-HIPHOST cost=10 area=ihor-swe-area # Статический маршрут через SWE /ip route add dst-address=0.0.0.0/0 gateway=10.200.2.2 distance=1 # OSPF redistribute /routing ospf instance set [ find default=yes ] redistribute=connected,static ``` ### На SWE-HIPHOST (swe.hiphost.rt.shx.su): ```shell # Создать area 0.0.0.4 /routing ospf area add name=ihor-swe-area instance=default area-id=0.0.0.4 # Настроить cost для туннелей к HOME (высокий cost) /routing ospf interface-template add interfaces=gre-SWE-HIPHOST-RTK cost=1000 area=ihor-swe-area add interfaces=gre-SWE-HIPHOST-MTS cost=2000 area=ihor-swe-area # Настроить cost для туннеля к IHOR (низкий cost) add interfaces=gre-IHOR-SWE cost=10 area=ihor-swe-area # OSPF redistribute /routing ospf instance set [ find default=yes ] redistribute=connected,static ``` ## Логика работы OSPF Cost ### Расчет cost для маршрутов: 1. **Маршрут через IHOR (приоритетный):** - HOME → IHOR: cost=10 - IHOR → SWE: cost=10 - **Общий cost = 20** 2. **Прямой маршрут HOME → SWE (резервный):** - HOME → SWE: cost=1000 - **Общий cost = 1000** ### Результат: - ✅ Маршрут через IHOR будет выбран как основной (cost=20) - ✅ Прямой маршрут будет резервным (cost=1000) - ✅ При отказе IHOR автоматически переключится на прямой маршрут ## Альтернативные настройки Cost ### Вариант 1: Более агрессивная разница ```shell # На HOME /routing ospf interface-template # IHOR (приоритетный) add interfaces=gre-MSK-IHOR-RTK cost=10 area=ihor-swe-area add interfaces=gre-MSK-IHOR-MTS cost=100 area=ihor-swe-area # SWE (резервный) - очень высокий cost add interfaces=gre-SWE-HIPHOST-RTK cost=5000 area=ihor-swe-area add interfaces=gre-SWE-HIPHOST-MTS cost=10000 area=ihor-swe-area ``` ### Вариант 2: Минимальная разница ```shell # На HOME /routing ospf interface-template # IHOR (приоритетный) add interfaces=gre-MSK-IHOR-RTK cost=10 area=ihor-swe-area add interfaces=gre-MSK-IHOR-MTS cost=100 area=ihor-swe-area # SWE (резервный) - небольшая разница add interfaces=gre-SWE-HIPHOST-RTK cost=100 area=ihor-swe-area add interfaces=gre-SWE-HIPHOST-MTS cost=200 area=ihor-swe-area ``` ### Вариант 3: По провайдерам ```shell # На HOME /routing ospf interface-template # Ростелеком (основной провайдер) add interfaces=gre-MSK-IHOR-RTK cost=10 area=ihor-swe-area add interfaces=gre-SWE-HIPHOST-RTK cost=100 area=ihor-swe-area # МТС (резервный провайдер) add interfaces=gre-MSK-IHOR-MTS cost=100 area=ihor-swe-area add interfaces=gre-SWE-HIPHOST-MTS cost=1000 area=ihor-swe-area ``` ## Проверка настройки ### На HOME: ```shell # Проверить OSPF интерфейсы и их cost /routing ospf interface-template print # Проверить OSPF маршруты с cost /routing ospf route print # Проверить таблицу маршрутизации /ip route print where protocol=ospf # Проверить что маршрут через IHOR активен /ip route print where gateway=10.100.4.2 ``` ### На MSK-IHOR: ```shell # Проверить OSPF интерфейсы /routing ospf interface-template print # Проверить статический маршрут /ip route print where dst-address=0.0.0.0/0 # Проверить OSPF соседей /routing ospf neighbor print ``` ### На SWE-HIPHOST: ```shell # Проверить OSPF интерфейсы /routing ospf interface-template print # Проверить OSPF соседей /routing ospf neighbor print ``` ## Тестирование приоритизации ### Тест 1: Проверка активного маршрута ```shell # На HOME проверить активный маршрут /ip route print where dst-address=0.0.0.0/0 # Должен показать маршрут через IHOR как активный ``` ### Тест 2: Проверка traceroute ```shell # Проверить маршрут к YouTube traceroute 173.194.0.1 # Должен показать: HOME → IHOR → SWE → YouTube ``` ### Тест 3: Тест failover ```shell # Отключить GRE туннель IHOR→SWE /interface gre disable [ find where name=gre-SWE-HIPHOST ] # Проверить что маршрут переключился на прямой /ip route print where dst-address=0.0.0.0/0 # Включить туннель обратно /interface gre enable [ find where name=gre-SWE-HIPHOST ] # Проверить что вернулся к IHOR /ip route print where dst-address=0.0.0.0/0 ``` ## Мониторинг cost ### Создать скрипт для мониторинга: ```shell /system script add name=check-ospf-cost source={ :log info "=== OSPF Cost Check ===" :log info "OSPF Interfaces:" /routing ospf interface-template print :log info "OSPF Routes:" /routing ospf route print :log info "Active Routes:" /ip route print where protocol=ospf } ``` ### Запуск мониторинга: ```shell /system script run check-ospf-cost ``` ## Динамическое изменение cost ### Для временного переключения на прямой маршрут: ```shell # Временно увеличить cost для IHOR /routing ospf interface-template set [ find where interfaces=gre-MSK-IHOR-RTK ] cost=1000 set [ find where interfaces=gre-MSK-IHOR-MTS ] cost=2000 # Проверить что маршрут переключился /ip route print where dst-address=0.0.0.0/0 ``` ### Для возврата к IHOR: ```shell # Вернуть низкий cost для IHOR /routing ospf interface-template set [ find where interfaces=gre-MSK-IHOR-RTK ] cost=10 set [ find where interfaces=gre-MSK-IHOR-MTS ] cost=100 # Проверить что маршрут вернулся /ip route print where dst-address=0.0.0.0/0 ``` ## Полная конфигурация для копирования ### HOME (home.rt.shx.su): ```shell # Создать area 0.0.0.4 /routing ospf area add name=ihor-swe-area instance=default area-id=0.0.0.4 # OSPF интерфейсы с приоритизацией по cost /routing ospf interface-template # IHOR (приоритетный) - низкий cost add interfaces=gre-MSK-IHOR-RTK cost=10 area=ihor-swe-area add interfaces=gre-MSK-IHOR-MTS cost=100 area=ihor-swe-area # SWE (резервный) - высокий cost add interfaces=gre-SWE-HIPHOST-RTK cost=1000 area=ihor-swe-area add interfaces=gre-SWE-HIPHOST-MTS cost=2000 area=ihor-swe-area # Routing table YouTube /routing table add name=YouTube fib # Address-list YouTube /ip firewall address-list add list=YouTube list=173.194.0.0/16 comment="YouTube" add list=YouTube list=74.125.0.0/16 comment="YouTube" add list=YouTube list=142.250.0.0/16 comment="YouTube" add list=YouTube list=172.217.0.0/16 comment="YouTube" add list=YouTube list=216.58.0.0/16 comment="YouTube" add list=YouTube list=34.0.0.0/8 comment="YouTube" add list=YouTube list=35.0.0.0/8 comment="YouTube" add list=YouTube list=142.0.0.0/8 comment="YouTube" # Routing rules /routing rule add dst-address=173.194.0.0/16 action=lookup table=YouTube add dst-address=74.125.0.0/16 action=lookup table=YouTube add dst-address=142.250.0.0/16 action=lookup table=YouTube add dst-address=172.217.0.0/16 action=lookup table=YouTube add dst-address=216.58.0.0/16 action=lookup table=YouTube add dst-address=34.0.0.0/8 action=lookup table=YouTube add dst-address=35.0.0.0/8 action=lookup table=YouTube add dst-address=142.0.0.0/8 action=lookup table=YouTube # Маршрут в таблице YouTube через IHOR /ip route add dst-address=0.0.0.0/0 gateway=10.100.4.2 routing-table=YouTube distance=1 ``` ### MSK-IHOR (msk.ihor.rt.shx.su): ```shell # GRE туннель к SWE /interface gre add name=gre-SWE-HIPHOST remote-address= local-address= /ip address add address=10.200.2.1/30 interface=gre-SWE-HIPHOST # Создать area 0.0.0.4 /routing ospf area add name=ihor-swe-area instance=default area-id=0.0.0.4 # OSPF интерфейсы /routing ospf interface-template add interfaces=gre-MSK-IHOR-RTK cost=10 area=ihor-swe-area add interfaces=gre-MSK-IHOR-MTS cost=100 area=ihor-swe-area add interfaces=gre-SWE-HIPHOST cost=10 area=ihor-swe-area # Статический маршрут через SWE /ip route add dst-address=0.0.0.0/0 gateway=10.200.2.2 distance=1 # OSPF redistribute /routing ospf instance set [ find default=yes ] redistribute=connected,static ``` ### SWE-HIPHOST (swe.hiphost.rt.shx.su): ```shell # GRE туннель от IHOR /interface gre add name=gre-IHOR-SWE remote-address= local-address= /ip address add address=10.200.2.2/30 interface=gre-IHOR-SWE # Создать area 0.0.0.4 /routing ospf area add name=ihor-swe-area instance=default area-id=0.0.0.4 # OSPF интерфейсы /routing ospf interface-template add interfaces=gre-SWE-HIPHOST-RTK cost=1000 area=ihor-swe-area add interfaces=gre-SWE-HIPHOST-MTS cost=2000 area=ihor-swe-area add interfaces=gre-IHOR-SWE cost=10 area=ihor-swe-area # OSPF redistribute /routing ospf instance set [ find default=yes ] redistribute=connected,static ``` ## Заключение Данная настройка обеспечивает: 1. **Оба маршрута существуют** (прямой и через IHOR) 2. **Управление приоритетом через OSPF cost** 3. **Автоматический failover** при отказе основного маршрута 4. **Гибкость настройки** - можно легко изменить приоритеты Теперь у вас будет полный контроль над маршрутизацией через настройку OSPF cost.