# Исправление OSPF маршрутизации: 10.200.2.2 вместо 10.100.5.2 ## Проблема На HOME создается маршрут: - ❌ `10.100.5.2%SWE-HIPHOST-MTS` (прямой туннель HOME→SWE) - ✅ Нужно: `10.200.2.2%SWE-HIPHOST-MTS` (через IHOR→SWE) ## Причина проблемы OSPF анонсирует маршруты напрямую от SWE-HIPHOST через туннель HOME→SWE, а не через IHOR→SWE. ## Решение 1: Отключить прямой OSPF от SWE-HIPHOST ### На HOME (home.rt.shx.su): ```shell # Отключить GRE туннели к SWE из OSPF /routing ospf interface-template remove [ find where interfaces=gre-SWE-HIPHOST-RTK ] remove [ find where interfaces=gre-SWE-HIPHOST-MTS ] # Проверить что остались только туннели к IHOR /routing ospf interface-template print ``` ### На SWE-HIPHOST (swe.hiphost.rt.shx.su): ```shell # Отключить GRE туннели к HOME из OSPF /routing ospf interface-template remove [ find where interfaces=gre-SWE-HIPHOST-RTK ] remove [ find where interfaces=gre-SWE-HIPHOST-MTS ] # Оставить только туннель к IHOR /routing ospf interface-template print ``` ## Решение 2: Использовать разные OSPF areas ### На HOME (home.rt.shx.su): ```shell # Создать отдельную area для IHOR /routing ospf area add name=ihor-area instance=default area-id=0.0.0.4 # Создать отдельную area для SWE (если нужен прямой доступ) add name=swe-area instance=default area-id=0.0.0.5 # Добавить туннели к IHOR в area 0.0.0.4 /routing ospf interface-template add interfaces=gre-MSK-IHOR-RTK cost=10 area=ihor-area add interfaces=gre-MSK-IHOR-MTS cost=100 area=ihor-area # Добавить туннели к SWE в area 0.0.0.5 (с высоким cost) add interfaces=gre-SWE-HIPHOST-RTK cost=200 area=swe-area add interfaces=gre-SWE-HIPHOST-MTS cost=300 area=swe-area ``` ### На MSK-IHOR (msk.ihor.rt.shx.su): ```shell # Добавить в area 0.0.0.4 /routing ospf area add name=ihor-area instance=default area-id=0.0.0.4 # Туннели к HOME в area 0.0.0.4 /routing ospf interface-template add interfaces=gre-MSK-IHOR-RTK cost=10 area=ihor-area add interfaces=gre-MSK-IHOR-MTS cost=100 area=ihor-area # Туннель к SWE в area 0.0.0.4 add interfaces=gre-SWE-HIPHOST cost=10 area=ihor-area ``` ### На SWE-HIPHOST (swe.hiphost.rt.shx.su): ```shell # Добавить в area 0.0.0.4 (для IHOR) и 0.0.0.5 (для HOME) /routing ospf area add name=ihor-area instance=default area-id=0.0.0.4 add name=swe-area instance=default area-id=0.0.0.5 # Туннель к IHOR в area 0.0.0.4 /routing ospf interface-template add interfaces=gre-IHOR-SWE cost=10 area=ihor-area # Туннели к HOME в area 0.0.0.5 (с высоким cost) add interfaces=gre-SWE-HIPHOST-RTK cost=200 area=swe-area add interfaces=gre-SWE-HIPHOST-MTS cost=300 area=swe-area ``` ## Решение 3: Использовать OSPF cost для приоритизации ### На HOME (home.rt.shx.su): ```shell # Настроить cost так чтобы IHOR был приоритетным /routing ospf interface-template # IHOR (приоритетный) - низкий cost add interfaces=gre-MSK-IHOR-RTK cost=10 area=backbone add interfaces=gre-MSK-IHOR-MTS cost=100 area=backbone # SWE (резервный) - очень высокий cost add interfaces=gre-SWE-HIPHOST-RTK cost=1000 area=backbone add interfaces=gre-SWE-HIPHOST-MTS cost=2000 area=backbone ``` ## Решение 4: Использовать OSPF filters (рекомендуемое) ### На HOME (home.rt.shx.su): ```shell # Создать фильтр который отклоняет маршруты от SWE напрямую /routing filter add name=ospf-block-direct-swe chain=input protocol=ospf rule="if (originator=10.100.0.5 && dst-address=0.0.0.0/0) { reject } else { accept }" # Применить фильтр к OSPF instance /routing ospf instance set [ find default=yes ] in-filter=ospf-block-direct-swe ``` ### Альтернативный фильтр (более точный): ```shell # Блокировать маршруты где gateway = прямой туннель к SWE /routing filter add name=ospf-block-swe-gateway chain=input protocol=ospf rule="if (gateway=10.100.5.2) { reject } else { accept }" add name=ospf-block-swe-gateway chain=input protocol=ospf rule="if (gateway=10.100.6.2) { reject } else { accept }" # Применить фильтр /routing ospf instance set [ find default=yes ] in-filter=ospf-block-swe-gateway ``` ## Решение 5: Использовать route tables для изоляции ### На HOME (home.rt.shx.su): ```shell # Создать отдельные routing tables /routing table add name=IHOR-ROUTES fib add name=SWE-ROUTES fib # Routing rules для выбора таблицы /routing rule add dst-address=0.0.0.0/0 action=lookup table=IHOR-ROUTES # OSPF будет добавлять маршруты в соответствующие таблицы # В IHOR-ROUTES будет маршрут через IHOR # В SWE-ROUTES будет маршрут через SWE (если нужен) ``` ## Проверка решения ### На HOME: ```shell # Проверить OSPF маршруты /routing ospf route print # Проверить таблицу маршрутизации /ip route print where protocol=ospf # Проверить что нет маршрутов через 10.100.5.2 /ip route print where gateway=10.100.5.2 # Проверить что есть маршруты через 10.200.2.2 /ip route print where gateway=10.200.2.2 ``` ### На MSK-IHOR: ```shell # Проверить что IHOR анонсирует маршрут /routing ospf route print # Проверить статический маршрут /ip route print where dst-address=0.0.0.0/0 ``` ## Рекомендуемое решение **Рекомендую использовать Решение 1 + Решение 4**: 1. **Отключить прямые OSPF туннели HOME→SWE** 2. **Использовать фильтр для блокировки прямых маршрутов от SWE** 3. **Получать маршруты только через IHOR** ### Полная конфигурация: #### На HOME (home.rt.shx.su): ```shell # 1. Отключить прямые туннели к SWE из OSPF /routing ospf interface-template remove [ find where interfaces=gre-SWE-HIPHOST-RTK ] remove [ find where interfaces=gre-SWE-HIPHOST-MTS ] # 2. Создать фильтр для блокировки прямых маршрутов от SWE /routing filter add name=ospf-block-direct-swe chain=input protocol=ospf rule="if (originator=10.100.0.5 && dst-address=0.0.0.0/0) { reject } else { accept }" # 3. Применить фильтр /routing ospf instance set [ find default=yes ] in-filter=ospf-block-direct-swe # 4. Убедиться что туннели к IHOR в OSPF /routing ospf interface-template add interfaces=gre-MSK-IHOR-RTK cost=10 area=backbone add interfaces=gre-MSK-IHOR-MTS cost=100 area=backbone ``` #### На SWE-HIPHOST (swe.hiphost.rt.shx.su): ```shell # Отключить прямые туннели к HOME из OSPF /routing ospf interface-template remove [ find where interfaces=gre-SWE-HIPHOST-RTK ] remove [ find where interfaces=gre-SWE-HIPHOST-MTS ] # Оставить только туннель к IHOR /routing ospf interface-template add interfaces=gre-IHOR-SWE cost=10 area=backbone ``` ## Тестирование ### Тест 1: Проверка маршрутов ```shell # На HOME проверить маршруты /ip route print where protocol=ospf # Должен показать маршрут через IHOR, НЕ через SWE ``` ### Тест 2: Проверка traceroute ```shell # Проверить маршрут к YouTube traceroute 173.194.0.1 # Должен показать: HOME → IHOR → SWE → YouTube ``` ### Тест 3: Проверка OSPF соседей ```shell # Проверить OSPF соседей /routing ospf neighbor print # Должен показать только IHOR, НЕ SWE ``` ## Заключение После применения этих настроек: - ✅ Маршрут 0.0.0.0/0 будет идти через `10.200.2.2%SWE-HIPHOST-MTS` - ❌ Маршрут через `10.100.5.2%SWE-HIPHOST-MTS` будет заблокирован - ✅ YouTube трафик будет идти через IHOR → SWE - ✅ Автоматический failover через OSPF сохранится