Files
shx-network/ospf_ihor_swe_routing.md

379 lines
12 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Настройка OSPF для получения маршрута 0.0.0.0/0 через IHOR→SWE-HIPHOST
## Текущая ситуация
У вас настроено:
- OSPF area 0.0.0.4
- Получение маршрута 0.0.0.0/0 от SWE-HIPHOST напрямую
- Нужно получать маршрут 0.0.0.0/0 через IHOR→SWE-HIPHOST (10.200.2.2)
## Архитектура решения
```mermaid
graph TB
subgraph "HOME"
HOME[HOME<br/>home.rt.shx.su]
end
subgraph "Москва"
IHOR[MSK-IHOR<br/>msk.ihor.rt.shx.su]
end
subgraph "Швеция"
SWE[SWE-HIPHOST<br/>swe.hiphost.rt.shx.su]
end
%% GRE туннели
HOME -- "GRE RTK→IHOR<br/>10.100.4.0/30" --> IHOR
HOME -- "GRE RTK→SWE<br/>10.100.6.0/30" --> SWE
%% Межсерверный туннель
IHOR -- "GRE IHOR→SWE<br/>10.200.2.0/30" --> SWE
%% OSPF маршруты
SWE -. "OSPF 0.0.0.0/0<br/>через IHOR" .- IHOR
IHOR -. "OSPF 0.0.0.0/0<br/>area 0.0.0.4" .- HOME
style HOME fill:#e1f5fe
style IHOR fill:#ff9800
style SWE fill:#4caf50
```
## Пошаговая настройка
### Шаг 1: Настройка GRE туннеля IHOR→SWE-HIPHOST
#### На MSK-IHOR (msk.ihor.rt.shx.su):
```shell
# Создать GRE туннель к SWE-HIPHOST (если не создан)
/interface gre add name=gre-SWE-HIPHOST remote-address=<SWE_WAN_IP> local-address=<IHOR_WAN_IP>
/ip address add address=10.200.2.1/30 interface=gre-SWE-HIPHOST
# Добавить в OSPF area 0.0.0.4
/routing ospf area
add name=ihor-swe-area instance=default area-id=0.0.0.4
/routing ospf interface-template
add interfaces=gre-SWE-HIPHOST cost=10 area=ihor-swe-area
```
#### На SWE-HIPHOST (swe.hiphost.rt.shx.su):
```shell
# Создать GRE туннель от IHOR (если не создан)
/interface gre add name=gre-IHOR-SWE remote-address=<IHOR_WAN_IP> local-address=<SWE_WAN_IP>
/ip address add address=10.200.2.2/30 interface=gre-IHOR-SWE
# Добавить в OSPF area 0.0.0.4
/routing ospf area
add name=ihor-swe-area instance=default area-id=0.0.0.4
/routing ospf interface-template
add interfaces=gre-IHOR-SWE cost=10 area=ihor-swe-area
```
### Шаг 2: Настройка OSPF на IHOR для анонса маршрута 0.0.0.0/0
#### На MSK-IHOR (msk.ihor.rt.shx.su):
```shell
# Настроить OSPF instance для redistribute
/routing ospf instance
set [ find default=yes ] router-id=10.100.0.3 redistribute=connected,static
# Создать статический маршрут 0.0.0.0/0 через SWE-HIPHOST
/ip route
add dst-address=0.0.0.0/0 gateway=10.200.2.2 distance=1
# Или более точно - только для определенных подсетей
/ip route
add dst-address=173.194.0.0/16 gateway=10.200.2.2 distance=1
add dst-address=74.125.0.0/16 gateway=10.200.2.2 distance=1
add dst-address=142.250.0.0/16 gateway=10.200.2.2 distance=1
add dst-address=172.217.0.0/16 gateway=10.200.2.2 distance=1
add dst-address=216.58.0.0/16 gateway=10.200.2.2 distance=1
add dst-address=34.0.0.0/8 gateway=10.200.2.2 distance=1
add dst-address=35.0.0.0/8 gateway=10.200.2.2 distance=1
add dst-address=142.0.0.0/8 gateway=10.200.2.2 distance=1
```
### Шаг 3: Настройка OSPF на HOME для получения маршрута через IHOR
#### На 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
# Добавить GRE туннель к IHOR в area 0.0.0.4
/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
# Убедиться что GRE туннель к SWE НЕ участвует в OSPF (если не нужен прямой маршрут)
# /routing ospf interface-template remove [ find where interfaces=gre-SWE-HIPHOST-RTK ]
# /routing ospf interface-template remove [ find where interfaces=gre-SWE-HIPHOST-MTS ]
```
### Шаг 4: Настройка Policy Based Routing для YouTube
#### На HOME (home.rt.shx.su):
```shell
# Создать 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 для YouTube трафика
/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
```
## Альтернативный подход: Использование OSPF cost
Если хотите получать маршрут от обоих серверов, но с приоритетом через IHOR:
### На HOME (home.rt.shx.su):
```shell
# Добавить оба туннеля в 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=200 area=ihor-swe-area
add interfaces=gre-SWE-HIPHOST-MTS cost=300 area=ihor-swe-area
```
## Проверка настройки
### На HOME:
```shell
# Проверить OSPF areas
/routing ospf area print
# Проверить OSPF интерфейсы
/routing ospf interface-template print
# Проверить OSPF маршруты
/routing ospf route print
# Проверить таблицу маршрутизации
/ip route print where protocol=ospf
# Проверить routing table YouTube
/ip route print where routing-table=YouTube
```
### На MSK-IHOR:
```shell
# Проверить GRE туннель к SWE
/interface gre print where name~"SWE"
# Проверить OSPF соседей
/routing ospf neighbor print
# Проверить анонсируемые маршруты
/routing ospf route print
# Проверить статические маршруты
/ip route print where dst-address=0.0.0.0/0
```
### На SWE-HIPHOST:
```shell
# Проверить GRE туннель от IHOR
/interface gre print where name~"IHOR"
# Проверить OSPF соседей
/routing ospf neighbor print
```
## Тестирование
### Тест 1: Проверка OSPF соседства
```shell
# На HOME проверить OSPF соседей
/routing ospf neighbor print
# Должен показать соседа IHOR в area 0.0.0.4
```
### Тест 2: Проверка маршрутов
```shell
# На HOME проверить маршруты
/ip route print where protocol=ospf
# Должен показать маршрут 0.0.0.0/0 через IHOR
```
### Тест 3: Проверка YouTube маршрутизации
```shell
# Проверить маршрут к YouTube
traceroute 173.194.0.1
# Должен показать путь: HOME → IHOR → SWE → YouTube
```
### Тест 4: Проверка failover
```shell
# Отключить GRE туннель IHOR→SWE
/interface gre disable [ find where name=gre-SWE-HIPHOST ]
# Проверить что маршрут исчез
/ip route print where protocol=ospf
# Включить туннель обратно
/interface gre enable [ find where name=gre-SWE-HIPHOST ]
```
## Возможные проблемы и решения
### Проблема 1: OSPF соседство не устанавливается
**Решение:**
```shell
# Проверить GRE туннели
/interface gre print
# Проверить ping через туннели
ping 10.200.2.2 count=5
# Проверить OSPF настройки
/routing ospf area print
/routing ospf interface-template print
```
### Проблема 2: Маршрут 0.0.0.0/0 не анонсируется
**Решение:**
```shell
# На IHOR проверить redistribute
/routing ospf instance print
# Проверить статические маршруты
/ip route print where dst-address=0.0.0.0/0
# Проверить OSPF маршруты
/routing ospf route print
```
### Проблема 3: Маршрут идет не через тот туннель
**Решение:**
```shell
# Проверить cost на интерфейсах
/routing ospf interface-template print
# Проверить distance маршрутов
/ip route print where protocol=ospf
```
## Полная конфигурация для копирования
### MSK-IHOR (msk.ihor.rt.shx.su):
```shell
# GRE туннель к SWE
/interface gre add name=gre-SWE-HIPHOST remote-address=<SWE_WAN_IP> local-address=<IHOR_WAN_IP>
/ip address add address=10.200.2.1/30 interface=gre-SWE-HIPHOST
# OSPF 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 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=<IHOR_WAN_IP> local-address=<SWE_WAN_IP>
/ip address add address=10.200.2.2/30 interface=gre-IHOR-SWE
# OSPF 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-IHOR-SWE cost=10 area=ihor-swe-area
```
### HOME (home.rt.shx.su):
```shell
# OSPF area 0.0.0.4
/routing ospf area
add name=ihor-swe-area instance=default area-id=0.0.0.4
# OSPF интерфейсы к IHOR
/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
# 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
/ip route
add dst-address=0.0.0.0/0 gateway=10.100.4.2 routing-table=YouTube distance=1
```
## Заключение
Данная настройка обеспечивает:
1. **OSPF area 0.0.0.4** для изоляции маршрутов IHOR→SWE
2. **Получение маршрута 0.0.0.0/0 через IHOR** (10.200.2.2)
3. **Routing table YouTube** для направленного трафика
4. **Автоматический failover** через OSPF
Теперь весь YouTube трафик будет идти по маршруту HOME → IHOR → SWE → YouTube через area 0.0.0.4.