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:
@@ -1651,9 +1651,9 @@ 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
|
||||
|
||||
# Создать фильтр для запрета межсерверных маршрутов (простой вариант)
|
||||
# Создать фильтр для запрета маршрутов через HOME как gateway
|
||||
/routing filter
|
||||
add name=ospf-no-inter-server chain=input protocol=ospf rule="if (dst-address=10.100.0.0/16) { reject } else { accept }"
|
||||
add name=ospf-no-inter-server chain=input protocol=ospf rule="if (gateway=10.100.0.0/16) { reject } else { accept }"
|
||||
|
||||
# Применить фильтр к OSPF instance
|
||||
/routing ospf instance
|
||||
@@ -1663,18 +1663,29 @@ set [ find default=yes ] in-filter=ospf-no-inter-server
|
||||
#### Альтернативный фильтр (более точный):
|
||||
|
||||
```shell
|
||||
# Создать фильтр который отклоняет маршруты между серверами
|
||||
# Создать фильтр который отклоняет маршруты через HOME как gateway
|
||||
/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 }"
|
||||
add name=ospf-block-inter-server chain=input protocol=ospf rule="if (gateway=10.100.2.1) { reject } else { accept }"
|
||||
add name=ospf-block-inter-server chain=input protocol=ospf rule="if (gateway=10.100.4.1) { reject } else { accept }"
|
||||
add name=ospf-block-inter-server chain=input protocol=ospf rule="if (gateway=10.100.1.1) { reject } else { accept }"
|
||||
add name=ospf-block-inter-server chain=input protocol=ospf rule="if (gateway=10.100.3.1) { reject } else { accept }"
|
||||
|
||||
# Применить фильтр
|
||||
/routing ospf instance
|
||||
set [ find default=yes ] in-filter=ospf-block-inter-server
|
||||
```
|
||||
|
||||
#### Еще более точный фильтр (только межсерверные маршруты):
|
||||
|
||||
```shell
|
||||
# Блокировать только маршруты где gateway = IP другого сервера
|
||||
/routing filter
|
||||
add name=ospf-block-inter-server chain=input protocol=ospf rule="if (gateway=10.100.2.2 && dst-address=10.100.4.0/30) { reject } else { accept }"
|
||||
add name=ospf-block-inter-server chain=input protocol=ospf rule="if (gateway=10.100.4.2 && dst-address=10.100.2.0/30) { reject } else { accept }"
|
||||
add name=ospf-block-inter-server chain=input protocol=ospf rule="if (gateway=10.100.1.2 && dst-address=10.100.3.0/30) { reject } else { accept }"
|
||||
add name=ospf-block-inter-server chain=input protocol=ospf rule="if (gateway=10.100.3.2 && dst-address=10.100.1.0/30) { reject } else { accept }"
|
||||
```
|
||||
|
||||
#### На серверах (VPSVILLE, IHOR):
|
||||
```shell
|
||||
# Обычная OSPF конфигурация без изменений
|
||||
@@ -1699,18 +1710,27 @@ add interfaces=gre-MSK-VPSVILLE-MTS cost=100 area=backbone # или gre-MSK-IHO
|
||||
|
||||
#### Как работают фильтры:
|
||||
|
||||
**Простой фильтр** (рекомендуемый):
|
||||
**Точный фильтр** (рекомендуемый):
|
||||
```shell
|
||||
# Блокирует ВСЕ маршруты к 10.100.0.0/16
|
||||
if (dst-address=10.100.0.0/16) { reject } else { accept }
|
||||
# Блокирует маршруты где gateway = 10.100.0.0/16 (через HOME)
|
||||
if (gateway=10.100.0.0/16) { reject } else { accept }
|
||||
```
|
||||
|
||||
**Что это означает:**
|
||||
- ✅ HOME получает маршруты 0.0.0.0/0 от серверов
|
||||
- ❌ HOME НЕ получает маршруты к GRE туннелям (10.100.x.x)
|
||||
- ✅ HOME получает маршруты 0.0.0.0/0 от серверов напрямую
|
||||
- ❌ HOME НЕ получает маршруты где gateway = 10.100.x.x (через себя как транзит)
|
||||
- ✅ Серверы не могут создать маршруты друг к другу через HOME
|
||||
- ✅ Cost работает для выбора оптимального пути к интернету
|
||||
|
||||
**Примеры блокируемых маршрутов:**
|
||||
- VPSVILLE → gateway=10.100.4.1 → IHOR (блокируется)
|
||||
- IHOR → gateway=10.100.2.1 → VPSVILLE (блокируется)
|
||||
- VPSVILLE → gateway=10.100.1.1 → HOME (блокируется)
|
||||
|
||||
**Примеры разрешенных маршрутов:**
|
||||
- VPSVILLE → gateway=0.0.0.0 → Интернет (разрешается)
|
||||
- IHOR → gateway=0.0.0.0 → Интернет (разрешается)
|
||||
|
||||
**Результат:**
|
||||
- VPSVILLE анонсирует: 0.0.0.0/0 (cost=10 через Ростелеком, cost=100 через МТС)
|
||||
- IHOR анонсирует: 0.0.0.0/0 (cost=10 через Ростелеком, cost=100 через МТС)
|
||||
@@ -1737,6 +1757,13 @@ if (dst-address=10.100.0.0/16) { reject } else { accept }
|
||||
|
||||
# Проверить что нет межсерверных маршрутов
|
||||
/routing ospf route print where dst-address~"10.100"
|
||||
|
||||
# Проверить что нет маршрутов через HOME как gateway
|
||||
/routing ospf route print where gateway~"10.100"
|
||||
|
||||
# Проверить работу фильтра
|
||||
/routing filter print
|
||||
/routing filter print detail
|
||||
```
|
||||
|
||||
#### Мониторинг отдельных OSPF Instances:
|
||||
|
||||
Reference in New Issue
Block a user