Enhance README.md with detailed instructions for configuring OSPF in "receive-only" mode on HOME. Added multiple approaches for achieving this configuration, including disabling route redistribution, using filters, and creating stub areas. Included a comparison table of methods and emphasized the importance of avoiding inter-server routing. Updated sections on OSPF instance isolation and provided comprehensive examples for each method.
This commit is contained in:
@@ -753,16 +753,147 @@ add src-address=192.168.222.0/24 action=lookup table=MSK # Основной т
|
|||||||
|
|
||||||
1. **Прямая связь между серверами**: VPSVILLE ↔ IHOR через GRE туннель 10.200.0.0/30
|
1. **Прямая связь между серверами**: VPSVILLE ↔ IHOR через GRE туннель 10.200.0.0/30
|
||||||
2. **OSPF анонсирует маршруты**: Каждый сервер анонсирует свои сети через OSPF
|
2. **OSPF анонсирует маршруты**: Каждый сервер анонсирует свои сети через OSPF
|
||||||
3. **HOME получает маршруты**: HOME получает маршруты от обоих серверов через OSPF
|
3. **HOME получает маршруты**: HOME получает маршруты от обоих серверов через OSPF (только получение)
|
||||||
4. **Автоматический failover**: Если один сервер недоступен, OSPF убирает маршруты через него
|
4. **Автоматический failover**: Если один сервер недоступен, OSPF убирает маршруты через него
|
||||||
5. **Оптимальные маршруты**: OSPF выбирает кратчайший путь между серверами
|
5. **Оптимальные маршруты**: OSPF выбирает кратчайший путь между серверами
|
||||||
|
|
||||||
|
### Настройка OSPF "только получение" на HOME
|
||||||
|
|
||||||
|
**ВАЖНО**: `passive=yes` отключает OSPF полностью, включая получение маршрутов! Это НЕ подходит для вашей задачи.
|
||||||
|
|
||||||
|
Для того чтобы HOME gateway только получал маршруты от VPSVILLE и IHOR, но не отправлял свои маршруты, используется несколько подходов:
|
||||||
|
|
||||||
|
### ❌ НЕ РАБОТАЕТ: Passive Mode
|
||||||
|
```shell
|
||||||
|
# ВНИМАНИЕ: Это НЕ работает!
|
||||||
|
add interfaces=gre-MSK-VPSVILLE-RTK cost=10 area=backbone passive=yes # ❌ Маршруты пропадут
|
||||||
|
```
|
||||||
|
|
||||||
|
**Почему не работает**: `passive=yes` отключает OSPF полностью - нет hello пакетов, нет соседства, нет маршрутов.
|
||||||
|
|
||||||
|
#### Способ 1: Отключение redistribute (Рекомендуемый)
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# На HOME - нормальные OSPF интерфейсы (получение + отправка hello)
|
||||||
|
/routing ospf interface-template
|
||||||
|
add interfaces=gre-MSK-VPSVILLE-RTK cost=10 area=backbone
|
||||||
|
add interfaces=gre-MSK-IHOR-RTK cost=10 area=backbone
|
||||||
|
add interfaces=gre-MSK-VPSVILLE-MTS cost=100 area=backbone
|
||||||
|
add interfaces=gre-MSK-IHOR-MTS cost=100 area=backbone
|
||||||
|
|
||||||
|
# Отключить redistribute (не анонсировать маршруты)
|
||||||
|
/routing ospf instance
|
||||||
|
set [ find default=yes ] redistribute=none
|
||||||
|
```
|
||||||
|
|
||||||
|
**Как это работает**:
|
||||||
|
- ✅ OSPF соседство устанавливается (hello пакеты отправляются)
|
||||||
|
- ✅ Маршруты от VPSVILLE/IHOR получаются
|
||||||
|
- ❌ HOME не анонсирует свои маршруты (redistribute=none)
|
||||||
|
|
||||||
|
#### Способ 2: Использование фильтров
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# На HOME - нормальные OSPF интерфейсы
|
||||||
|
/routing ospf interface-template
|
||||||
|
add interfaces=gre-MSK-VPSVILLE-RTK cost=10 area=backbone
|
||||||
|
add interfaces=gre-MSK-IHOR-RTK cost=10 area=backbone
|
||||||
|
|
||||||
|
# Создать фильтр который отклоняет все исходящие маршруты
|
||||||
|
/routing filter
|
||||||
|
add name=ospf-out-reject-all chain=output protocol=ospf rule="reject"
|
||||||
|
|
||||||
|
# Применить фильтр к OSPF instance
|
||||||
|
/routing ospf instance
|
||||||
|
set [ find default=yes ] out-filter=ospf-out-reject-all
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Способ 3: Stub Area (для сложных сетей)
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# Создать stub area для HOME
|
||||||
|
/routing ospf area
|
||||||
|
add name=home-stub instance=default area-id=0.0.0.1 stub=yes
|
||||||
|
|
||||||
|
# Добавить интерфейсы HOME в stub area
|
||||||
|
/routing ospf interface-template
|
||||||
|
add interfaces=gre-MSK-VPSVILLE-RTK cost=10 area=home-stub
|
||||||
|
add interfaces=gre-MSK-IHOR-RTK cost=10 area=home-stub
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Способ 4: Passive Mode (НЕ РЕКОМЕНДУЕТСЯ)
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# ВНИМАНИЕ: passive=yes отключает OSPF полностью, включая получение маршрутов!
|
||||||
|
# Этот способ НЕ работает для вашей задачи
|
||||||
|
|
||||||
|
# На HOME - интерфейсы в passive mode (НЕ РАБОТАЕТ!)
|
||||||
|
/routing ospf interface-template
|
||||||
|
add interfaces=gre-MSK-VPSVILLE-RTK cost=10 area=backbone passive=yes # ❌ Маршруты пропадут
|
||||||
|
add interfaces=gre-MSK-IHOR-RTK cost=10 area=backbone passive=yes # ❌ Маршруты пропадут
|
||||||
|
```
|
||||||
|
|
||||||
|
### Сравнение способов настройки OSPF "только получение"
|
||||||
|
|
||||||
|
| Способ | Простота | Совместимость | Гибкость | Работает | Рекомендация |
|
||||||
|
|--------|----------|---------------|----------|----------|--------------|
|
||||||
|
| **Отключение redistribute** | Высокая | Все версии | Низкая | ✅ Да | **Рекомендуемый** |
|
||||||
|
| **Фильтры** | Средняя | Все версии | Высокая | ✅ Да | Для точного контроля |
|
||||||
|
| **Stub Area** | Низкая | Все версии | Низкая | ✅ Да | Для сложных сетей |
|
||||||
|
| **Passive Mode** | Высокая | RouterOS 7.14+ | Низкая | ❌ Нет | НЕ РЕКОМЕНДУЕТСЯ |
|
||||||
|
|
||||||
|
### Рекомендуемая конфигурация для HOME
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# 1. OSPF instance без redistribute (НЕ анонсировать маршруты)
|
||||||
|
/routing ospf instance
|
||||||
|
set [ find default=yes ] redistribute=none
|
||||||
|
|
||||||
|
# 2. Нормальные OSPF интерфейсы (получение + отправка hello)
|
||||||
|
/routing ospf interface-template
|
||||||
|
add interfaces=gre-MSK-VPSVILLE-RTK cost=10 area=backbone
|
||||||
|
add interfaces=gre-MSK-IHOR-RTK cost=10 area=backbone
|
||||||
|
add interfaces=gre-MSK-VPSVILLE-MTS cost=100 area=backbone
|
||||||
|
add interfaces=gre-MSK-IHOR-MTS cost=100 area=backbone
|
||||||
|
|
||||||
|
# 3. Проверка что маршруты получаются
|
||||||
|
/routing ospf route print
|
||||||
|
/ip route print where protocol=ospf
|
||||||
|
```
|
||||||
|
|
||||||
|
### Проверка работы OSPF "только получение"
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# На HOME проверить что маршруты получаются
|
||||||
|
/routing ospf route print
|
||||||
|
|
||||||
|
# На VPSVILLE/IHOR проверить что маршруты от HOME не анонсируются
|
||||||
|
/routing ospf route print
|
||||||
|
|
||||||
|
# Проверить OSPF соседей
|
||||||
|
/routing ospf neighbor print
|
||||||
|
|
||||||
|
# Проверить что HOME не анонсирует маршруты
|
||||||
|
/routing ospf route print where originator=10.100.0.1
|
||||||
|
```
|
||||||
|
|
||||||
### Роль HOME в архитектуре
|
### Роль HOME в архитектуре
|
||||||
|
|
||||||
- **HOME - конечная точка**: Подключается к серверам по GRE, но не участвует в межсерверной маршрутизации
|
| Роль | Описание | OSPF настройка |
|
||||||
- **Получение маршрутов**: HOME получает маршруты от серверов через OSPF
|
|------|----------|----------------|
|
||||||
- **Policy routing**: HOME использует route tables для выбора нужного сервера/провайдера
|
| **Конечная точка** | Подключается к серверам по GRE, но не участвует в межсерверной маршрутизации | passive=yes |
|
||||||
- **Отправка трафика**: HOME отправляет трафик по правилам маршрутизации
|
| **Получение маршрутов** | HOME получает маршруты от серверов через OSPF | redistribute=none |
|
||||||
|
| **Policy routing** | HOME использует route tables для выбора нужного сервера/провайдера | routing rules |
|
||||||
|
| **Отправка трафика** | HOME отправляет трафик по правилам маршрутизации | route tables |
|
||||||
|
|
||||||
|
### Преимущества OSPF "только получение" на HOME
|
||||||
|
|
||||||
|
| Преимущество | Описание | Практическое применение |
|
||||||
|
|--------------|----------|-------------------------|
|
||||||
|
| **Безопасность** | HOME не раскрывает свои внутренние сети | Защита от несанкционированного доступа |
|
||||||
|
| **Производительность** | Меньше OSPF трафика | Снижение нагрузки на сеть |
|
||||||
|
| **Простота** | Меньше конфигурации | Легче поддерживать |
|
||||||
|
| **Контроль** | Точный контроль над маршрутизацией | Предсказуемое поведение сети |
|
||||||
|
|
||||||
### Пример маршрутизации
|
### Пример маршрутизации
|
||||||
|
|
||||||
@@ -1309,9 +1440,9 @@ Area 0.0.0.0 (Backbone) - HOME
|
|||||||
```shell
|
```shell
|
||||||
# На всех устройствах (HOME, MSK-VPSVILLE, MSK-IHOR, SWE-HIPHOST):
|
# На всех устройствах (HOME, MSK-VPSVILLE, MSK-IHOR, SWE-HIPHOST):
|
||||||
|
|
||||||
# 1. Создать backbone area
|
# 1. Создать backbone area (ВАЖНО: используйте area-id=0.0.0.1 вместо 0.0.0.0)
|
||||||
/routing ospf area
|
/routing ospf area
|
||||||
add name=backbone instance=default area-id=0.0.0.0
|
add name=backbone instance=default area-id=0.0.0.1
|
||||||
|
|
||||||
# 2. Добавить все GRE интерфейсы в backbone area
|
# 2. Добавить все GRE интерфейсы в backbone area
|
||||||
/routing ospf interface-template
|
/routing ospf interface-template
|
||||||
@@ -1326,6 +1457,328 @@ add interfaces=gre-MSK-IHOR-MTS cost=100 area=backbone
|
|||||||
add interfaces=gre-SWE-HIPHOST-MTS cost=100 area=backbone
|
add interfaces=gre-SWE-HIPHOST-MTS cost=100 area=backbone
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**ВАЖНО**: В некоторых случаях area-id=0.0.0.0 может вызывать проблемы. Если OSPF не работает с area-id=0.0.0.0, используйте area-id=0.0.0.1.
|
||||||
|
|
||||||
|
### Решение: Изоляция серверов через отдельные OSPF Instances
|
||||||
|
|
||||||
|
Проблема: Когда все серверы в одной OSPF area, создаются нежелательные маршруты типа VPSVILLE → HOME → IHOR.
|
||||||
|
|
||||||
|
**Решение: Использовать отдельные OSPF instances для каждого сервера**
|
||||||
|
|
||||||
|
#### Конфигурация с отдельными OSPF Instances:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# На HOME (home.rt.shx.su):
|
||||||
|
# Создаем отдельные OSPF instances для каждого сервера с разным distance
|
||||||
|
/routing ospf instance
|
||||||
|
add name=vpsville-instance router-id=10.100.0.1 distance=110 # Основной (Ростелеком)
|
||||||
|
add name=ihor-instance router-id=10.100.0.1 distance=120 # Резервный (МТС)
|
||||||
|
|
||||||
|
# Создаем areas для каждого instance
|
||||||
|
/routing ospf area
|
||||||
|
add name=vpsville-area instance=vpsville-instance area-id=0.0.0.0
|
||||||
|
add name=ihor-area instance=ihor-instance area-id=0.0.0.0
|
||||||
|
|
||||||
|
# VPSVILLE интерфейсы в свой instance
|
||||||
|
/routing ospf interface-template
|
||||||
|
add interfaces=gre-MSK-VPSVILLE-RTK cost=10 area=vpsville-area instance=vpsville-instance
|
||||||
|
add interfaces=gre-MSK-VPSVILLE-MTS cost=100 area=vpsville-area instance=vpsville-instance
|
||||||
|
|
||||||
|
# IHOR интерфейсы в свой instance
|
||||||
|
add interfaces=gre-MSK-IHOR-RTK cost=10 area=ihor-area instance=ihor-instance
|
||||||
|
add interfaces=gre-MSK-IHOR-MTS cost=100 area=ihor-area instance=ihor-instance
|
||||||
|
|
||||||
|
# На MSK-VPSVILLE (msk.vpsville.rt.shx.su):
|
||||||
|
# Только один OSPF instance для связи с HOME
|
||||||
|
/routing ospf instance
|
||||||
|
set [ find default=yes ] name=vpsville-instance router-id=10.100.0.2
|
||||||
|
|
||||||
|
/routing ospf area
|
||||||
|
add name=vpsville-area instance=vpsville-instance area-id=0.0.0.0
|
||||||
|
|
||||||
|
/routing ospf interface-template
|
||||||
|
add interfaces=gre-MSK-VPSVILLE-RTK cost=10 area=vpsville-area instance=vpsville-instance
|
||||||
|
add interfaces=gre-MSK-VPSVILLE-MTS cost=100 area=vpsville-area instance=vpsville-instance
|
||||||
|
|
||||||
|
# На MSK-IHOR (msk.ihor.rt.shx.su):
|
||||||
|
# Только один OSPF instance для связи с HOME
|
||||||
|
/routing ospf instance
|
||||||
|
set [ find default=yes ] name=ihor-instance router-id=10.100.0.3
|
||||||
|
|
||||||
|
/routing ospf area
|
||||||
|
add name=ihor-area instance=ihor-instance area-id=0.0.0.0
|
||||||
|
|
||||||
|
/routing ospf interface-template
|
||||||
|
add interfaces=gre-MSK-IHOR-RTK cost=10 area=ihor-area instance=ihor-instance
|
||||||
|
add interfaces=gre-MSK-IHOR-MTS cost=100 area=ihor-area instance=ihor-instance
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Альтернатива: Route Tables для полного контроля
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# На HOME создать отдельные таблицы маршрутизации
|
||||||
|
/routing table
|
||||||
|
add name=vpsville-table fib
|
||||||
|
add name=ihor-table fib
|
||||||
|
|
||||||
|
# Настроить routing rules для выбора таблицы
|
||||||
|
/routing rule
|
||||||
|
add src-address=192.168.111.0/24 action=lookup table=vpsville-table # HomeLab → VPSVILLE
|
||||||
|
add src-address=192.168.222.0/24 action=lookup table=ihor-table # Основной трафик → IHOR
|
||||||
|
|
||||||
|
# OSPF автоматически добавит маршруты в соответствующие таблицы
|
||||||
|
# В vpsville-table будет маршрут от VPSVILLE
|
||||||
|
# В ihor-table будет маршрут от IHOR
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Почему отдельные OSPF Instances работают:
|
||||||
|
|
||||||
|
1. **Полная изоляция**: Каждый сервер работает в своем OSPF instance
|
||||||
|
2. **Нет межсерверных маршрутов**: VPSVILLE и IHOR не могут создать маршруты друг к другу через HOME
|
||||||
|
3. **Прямая связь**: Каждый сервер анонсирует маршруты только напрямую HOME
|
||||||
|
4. **Простота**: Каждый instance работает независимо, без сложных area настроек
|
||||||
|
|
||||||
|
#### Важные особенности отдельных OSPF Instances:
|
||||||
|
|
||||||
|
**Дублирование маршрутов:**
|
||||||
|
- ✅ **Нормально**: HOME получает маршрут 0.0.0.0/0 от каждого сервера
|
||||||
|
- ✅ **Автоматический выбор**: RouterOS выбирает маршрут с лучшим distance
|
||||||
|
- ✅ **Failover**: Если один сервер недоступен, используется маршрут от другого
|
||||||
|
|
||||||
|
**Cost работает только внутри instance:**
|
||||||
|
- ❌ **Между instances**: Cost не сравнивается
|
||||||
|
- ✅ **Внутри instance**: Cost работает нормально (Ростелеком vs МТС)
|
||||||
|
- ✅ **Distance**: Используется для приоритизации между instances
|
||||||
|
|
||||||
|
**Пример маршрутов на HOME:**
|
||||||
|
```shell
|
||||||
|
/ip route print where dst-address=0.0.0.0/0
|
||||||
|
# Результат:
|
||||||
|
# dst-address=0.0.0.0/0 gateway=10.100.2.2 distance=110 # От VPSVILLE (основной)
|
||||||
|
# dst-address=0.0.0.0/0 gateway=10.100.4.2 distance=120 # От IHOR (резервный)
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Детальное объяснение проблемы и решения:
|
||||||
|
|
||||||
|
**Проблема с одним OSPF instance:**
|
||||||
|
- Все серверы в одном OSPF instance обмениваются всеми маршрутами
|
||||||
|
- VPSVILLE может создать маршрут VPSVILLE → HOME → IHOR
|
||||||
|
- IHOR может создать маршрут IHOR → HOME → VPSVILLE
|
||||||
|
- Это создает нежелательные межсерверные маршруты через HOME
|
||||||
|
- HOME становится транзитным узлом между серверами
|
||||||
|
|
||||||
|
**Решение с отдельными OSPF instances:**
|
||||||
|
- **VPSVILLE-HOME**: Работает в отдельном instance (vpsville-instance)
|
||||||
|
- **IHOR-HOME**: Работает в отдельном instance (ihor-instance)
|
||||||
|
- **Полная изоляция**: Серверы не могут создать маршруты друг к другу
|
||||||
|
- **Прямая связь**: Каждый сервер анонсирует маршруты только напрямую HOME
|
||||||
|
|
||||||
|
#### Схема работы отдельных OSPF Instances:
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
graph TB
|
||||||
|
subgraph "OSPF Instance: vpsville-instance"
|
||||||
|
HOME_VPS[HOME<br/>home.rt.shx.su]
|
||||||
|
VPSVILLE[MSK-VPSVILLE<br/>msk.vpsville.rt.shx.su]
|
||||||
|
GRE_VPS[GRE туннели<br/>VPSVILLE-HOME]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph "OSPF Instance: ihor-instance"
|
||||||
|
HOME_IHR[HOME<br/>home.rt.shx.su]
|
||||||
|
IHOR[MSK-IHOR<br/>msk.ihor.rt.shx.su]
|
||||||
|
GRE_IHR[GRE туннели<br/>IHOR-HOME]
|
||||||
|
end
|
||||||
|
|
||||||
|
HOME_VPS -. "OSPF" .- GRE_VPS
|
||||||
|
GRE_VPS --> VPSVILLE
|
||||||
|
|
||||||
|
HOME_IHR -. "OSPF" .- GRE_IHR
|
||||||
|
GRE_IHR --> IHOR
|
||||||
|
|
||||||
|
%% НЕТ связи между instances!
|
||||||
|
VPSVILLE -. "НЕТ OSPF" .- IHOR
|
||||||
|
|
||||||
|
style HOME_VPS fill:#e1f5fe
|
||||||
|
style HOME_IHR fill:#e1f5fe
|
||||||
|
style VPSVILLE fill:#ff9800
|
||||||
|
style IHOR fill:#ff9800
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Преимущества отдельных OSPF Instances:
|
||||||
|
|
||||||
|
| Преимущество | Описание | Практическое применение |
|
||||||
|
|--------------|----------|-------------------------|
|
||||||
|
| **Полная изоляция** | Каждый сервер в своем instance | Нет межсерверных маршрутов |
|
||||||
|
| **Простота** | Простая настройка без сложных areas | Легко понять и поддерживать |
|
||||||
|
| **Контроль** | Точный контроль над маршрутизацией | HOME получает маршруты только напрямую |
|
||||||
|
| **Масштабируемость** | Легко добавлять новые серверы | Каждый новый сервер получает свой instance |
|
||||||
|
| **Отладка** | Простая диагностика проблем | Проблемы локализованы в конкретном instance |
|
||||||
|
| **Производительность** | Меньше OSPF трафика | Каждый instance работает независимо |
|
||||||
|
|
||||||
|
#### Сравнение подходов для решения проблемы межсерверных маршрутов:
|
||||||
|
|
||||||
|
| Подход | Дублирование маршрутов | Cost между серверами | Сложность настройки | Рекомендация |
|
||||||
|
|--------|------------------------|---------------------|-------------------|--------------|
|
||||||
|
| **Один OSPF instance** | ❌ Нет дублирования | ✅ Cost работает | 🟢 Простая | ❌ Создает межсерверные маршруты |
|
||||||
|
| **Один instance + фильтры** | ❌ Нет дублирования | ✅ Cost работает | 🟡 Средняя | ✅ **Рекомендуемый** |
|
||||||
|
| **Отдельные instances** | ✅ Есть дублирование | ❌ Cost не работает | 🟢 Простая | ✅ Альтернатива |
|
||||||
|
| **Route Tables** | ✅ Нет дублирования | ✅ Полный контроль | 🟡 Средняя | ✅ Для сложных случаев |
|
||||||
|
| **NSSA Areas** | ✅ Нет дублирования | ✅ Cost работает | 🔴 Сложная | ❌ Избыточно для вашей задачи |
|
||||||
|
|
||||||
|
#### Решение 3: Один OSPF Instance с фильтрами (рекомендуемое)
|
||||||
|
|
||||||
|
**Лучшее решение**: Использовать один OSPF instance с фильтрами для запрета межсерверных маршрутов.
|
||||||
|
|
||||||
|
#### Конфигурация с одним OSPF Instance и фильтрами:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# На HOME (home.rt.shx.su):
|
||||||
|
# Один OSPF instance
|
||||||
|
/routing ospf instance
|
||||||
|
set [ find default=yes ] router-id=10.100.0.1
|
||||||
|
|
||||||
|
# Одна area
|
||||||
|
/routing ospf area
|
||||||
|
add name=backbone instance=default area-id=0.0.0.0
|
||||||
|
|
||||||
|
# Все интерфейсы в один instance с разным cost
|
||||||
|
/routing ospf interface-template
|
||||||
|
# Ростелеком (основной провайдер) - низкий cost
|
||||||
|
add interfaces=gre-MSK-VPSVILLE-RTK cost=10 area=backbone
|
||||||
|
add interfaces=gre-MSK-IHOR-RTK cost=10 area=backbone
|
||||||
|
|
||||||
|
# МТС (резервный провайдер) - высокий cost
|
||||||
|
add interfaces=gre-MSK-VPSVILLE-MTS cost=100 area=backbone
|
||||||
|
add interfaces=gre-MSK-IHOR-MTS cost=100 area=backbone
|
||||||
|
|
||||||
|
# Создать фильтр для запрета межсерверных маршрутов (простой вариант)
|
||||||
|
/routing filter
|
||||||
|
add name=ospf-no-inter-server chain=input protocol=ospf rule="if (dst-address=10.100.0.0/16) { reject } else { accept }"
|
||||||
|
|
||||||
|
# Применить фильтр к OSPF instance
|
||||||
|
/routing ospf instance
|
||||||
|
set [ find default=yes ] in-filter=ospf-no-inter-server
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Альтернативный фильтр (более точный):
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# Создать фильтр который отклоняет маршруты между серверами
|
||||||
|
/routing filter
|
||||||
|
add name=ospf-block-inter-server chain=input protocol=ospf rule="if (dst-address=10.100.2.0/30 && src-address=10.100.4.0/30) { reject } else { accept }"
|
||||||
|
add name=ospf-block-inter-server chain=input protocol=ospf rule="if (dst-address=10.100.4.0/30 && src-address=10.100.2.0/30) { reject } else { accept }"
|
||||||
|
add name=ospf-block-inter-server chain=input protocol=ospf rule="if (dst-address=10.100.1.0/30 && src-address=10.100.3.0/30) { reject } else { accept }"
|
||||||
|
add name=ospf-block-inter-server chain=input protocol=ospf rule="if (dst-address=10.100.3.0/30 && src-address=10.100.1.0/30) { reject } else { accept }"
|
||||||
|
|
||||||
|
# Применить фильтр
|
||||||
|
/routing ospf instance
|
||||||
|
set [ find default=yes ] in-filter=ospf-block-inter-server
|
||||||
|
```
|
||||||
|
|
||||||
|
#### На серверах (VPSVILLE, IHOR):
|
||||||
|
```shell
|
||||||
|
# Обычная OSPF конфигурация без изменений
|
||||||
|
/routing ospf instance
|
||||||
|
set [ find default=yes ] router-id=10.100.0.2 # или 10.100.0.3 для IHOR
|
||||||
|
|
||||||
|
/routing ospf area
|
||||||
|
add name=backbone instance=default area-id=0.0.0.0
|
||||||
|
|
||||||
|
/routing ospf interface-template
|
||||||
|
add interfaces=gre-MSK-VPSVILLE-RTK cost=10 area=backbone # или gre-MSK-IHOR-RTK
|
||||||
|
add interfaces=gre-MSK-VPSVILLE-MTS cost=100 area=backbone # или gre-MSK-IHOR-MTS
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Почему это решение лучше:
|
||||||
|
|
||||||
|
1. ✅ **Cost работает**: Все в одном instance, cost сравнивается
|
||||||
|
2. ✅ **Нет межсерверных маршрутов**: Фильтры блокируют нежелательные маршруты
|
||||||
|
3. ✅ **Простота**: Один instance, простая настройка
|
||||||
|
4. ✅ **Гибкость**: Можно точно настроить что блокировать
|
||||||
|
5. ✅ **Производительность**: Меньше OSPF трафика чем с отдельными instances
|
||||||
|
|
||||||
|
#### Как работают фильтры:
|
||||||
|
|
||||||
|
**Простой фильтр** (рекомендуемый):
|
||||||
|
```shell
|
||||||
|
# Блокирует ВСЕ маршруты к 10.100.0.0/16
|
||||||
|
if (dst-address=10.100.0.0/16) { reject } else { accept }
|
||||||
|
```
|
||||||
|
|
||||||
|
**Что это означает:**
|
||||||
|
- ✅ HOME получает маршруты 0.0.0.0/0 от серверов
|
||||||
|
- ❌ HOME НЕ получает маршруты к GRE туннелям (10.100.x.x)
|
||||||
|
- ✅ Серверы не могут создать маршруты друг к другу через HOME
|
||||||
|
- ✅ Cost работает для выбора оптимального пути к интернету
|
||||||
|
|
||||||
|
**Результат:**
|
||||||
|
- VPSVILLE анонсирует: 0.0.0.0/0 (cost=10 через Ростелеком, cost=100 через МТС)
|
||||||
|
- IHOR анонсирует: 0.0.0.0/0 (cost=10 через Ростелеком, cost=100 через МТС)
|
||||||
|
- HOME выбирает лучший маршрут на основе cost
|
||||||
|
- НЕТ маршрутов типа VPSVILLE → HOME → IHOR
|
||||||
|
|
||||||
|
#### Проверка работы одного OSPF Instance с фильтрами:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# Проверить OSPF instance
|
||||||
|
/routing ospf instance print
|
||||||
|
|
||||||
|
# Проверить OSPF соседей
|
||||||
|
/routing ospf neighbor print
|
||||||
|
|
||||||
|
# Проверить маршруты
|
||||||
|
/routing ospf route print
|
||||||
|
|
||||||
|
# Проверить интерфейсы
|
||||||
|
/routing ospf interface-template print
|
||||||
|
|
||||||
|
# Проверить фильтры
|
||||||
|
/routing filter print
|
||||||
|
|
||||||
|
# Проверить что нет межсерверных маршрутов
|
||||||
|
/routing ospf route print where dst-address~"10.100"
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Мониторинг отдельных OSPF Instances:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# На HOME проверить маршруты от VPSVILLE (vpsville-instance)
|
||||||
|
/routing ospf route print where instance=vpsville-instance
|
||||||
|
|
||||||
|
# На HOME проверить маршруты от IHOR (ihor-instance)
|
||||||
|
/routing ospf route print where instance=ihor-instance
|
||||||
|
|
||||||
|
# Проверить OSPF соседей в каждом instance
|
||||||
|
/routing ospf neighbor print where instance=vpsville-instance
|
||||||
|
/routing ospf neighbor print where instance=ihor-instance
|
||||||
|
|
||||||
|
# Убедиться что нет межсерверных маршрутов
|
||||||
|
/routing ospf route print where dst-address~"10.100"
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Диагностика проблем с отдельными Instances:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# Если маршруты не получаются, проверить:
|
||||||
|
# 1. OSPF instances
|
||||||
|
/routing ospf instance print
|
||||||
|
|
||||||
|
# 2. OSPF соседей
|
||||||
|
/routing ospf neighbor print
|
||||||
|
|
||||||
|
# 3. GRE туннели
|
||||||
|
/interface gre print
|
||||||
|
|
||||||
|
# 4. Interface template
|
||||||
|
/routing ospf interface-template print
|
||||||
|
|
||||||
|
# 5. Логи OSPF
|
||||||
|
/log print where topics~"ospf"
|
||||||
|
|
||||||
|
# 6. Проверить что нет межсерверных маршрутов
|
||||||
|
/ip route print where protocol=ospf
|
||||||
|
```
|
||||||
|
|
||||||
### Преимущества простой схемы (Area 0.0.0.0):
|
### Преимущества простой схемы (Area 0.0.0.0):
|
||||||
|
|
||||||
1. **Простота настройки**: Все устройства в одной area
|
1. **Простота настройки**: Все устройства в одной area
|
||||||
@@ -1577,11 +2030,11 @@ set [ find default=yes ] router-id=10.100.0.5 redistribute=connected
|
|||||||
### Конфигурация на HOME (home.rt.shx.su):
|
### Конфигурация на HOME (home.rt.shx.su):
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
# 1. OSPF конфигурация
|
# 1. OSPF конфигурация - только получение маршрутов
|
||||||
/routing ospf area
|
/routing ospf area
|
||||||
add name=backbone instance=default area-id=0.0.0.0
|
add name=backbone instance=default area-id=0.0.0.0
|
||||||
|
|
||||||
# 2. Добавить интерфейсы к московским серверам в OSPF
|
# 2. Добавить интерфейсы к московским серверам в OSPF (нормальные)
|
||||||
/routing ospf interface-template
|
/routing ospf interface-template
|
||||||
# Ростелеком (основной провайдер) - низкий cost
|
# Ростелеком (основной провайдер) - низкий cost
|
||||||
add interfaces=gre-MSK-VPSVILLE-RTK cost=10 area=backbone
|
add interfaces=gre-MSK-VPSVILLE-RTK cost=10 area=backbone
|
||||||
@@ -1595,6 +2048,10 @@ add interfaces=gre-MSK-IHOR-MTS cost=100 area=backbone
|
|||||||
/routing rule
|
/routing rule
|
||||||
add src-address=192.168.111.0/24 action=lookup table=MTS # HomeLab → МТС
|
add src-address=192.168.111.0/24 action=lookup table=MTS # HomeLab → МТС
|
||||||
add src-address=192.168.222.0/24 action=lookup table=MSK # Основной трафик → Ростелеком
|
add src-address=192.168.222.0/24 action=lookup table=MSK # Основной трафик → Ростелеком
|
||||||
|
|
||||||
|
# 4. Отключить redistribute на HOME (не анонсировать маршруты)
|
||||||
|
/routing ospf instance
|
||||||
|
set [ find default=yes ] redistribute=none
|
||||||
```
|
```
|
||||||
|
|
||||||
### Межсерверные туннели (OSPF кластер)
|
### Межсерверные туннели (OSPF кластер)
|
||||||
|
|||||||
Reference in New Issue
Block a user