From 43b1804731b9c0e04b8b7f15f2f8dae9cdf732be Mon Sep 17 00:00:00 2001 From: Denis Shatskiy Date: Fri, 11 Jul 2025 00:03:35 +0700 Subject: [PATCH] Expand README.md with a comprehensive architecture overview for Moscow servers as a unified OSPF cluster. Added detailed configuration steps for MSK-VPSVILLE, MSK-IHOR, SWE-HIPHOST, and HOME, including GRE tunnel setups, OSPF configurations, failover logic, and monitoring/testing procedures. Enhanced clarity on failover advantages and scalability. --- README.md | 223 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 223 insertions(+) diff --git a/README.md b/README.md index cec804b..dabcae6 100644 --- a/README.md +++ b/README.md @@ -1435,6 +1435,229 @@ set [ find where interfaces=gre-MSK-VPSVILLE-MTS ] area=msk-area /routing ospf neighbor print ``` +--- + +## Архитектура: Московские серверы как единый OSPF кластер + +### Концепция + +Все московские серверы (MSK-VPSVILLE, MSK-IHOR) объединены в единый OSPF кластер. Если на одном из них падает GRE туннель к SWE-HIPHOST, весь трафик автоматически идет через другой сервер. + +### Схема архитектуры + +```mermaid +graph TB + subgraph "Москва - OSPF кластер" + VPSVILLE[MSK-VPSVILLE
msk.vpsville.rt.shx.su] + IHOR[MSK-IHOR
msk.ihor.rt.shx.su] + end + + subgraph "Швеция" + HIPHOST[SWE-HIPHOST
swe.hiphost.rt.shx.su] + end + + subgraph "Домашний шлюз" + HOME[HOME
home.rt.shx.su] + end + + %% GRE туннели от HOME к московским серверам + HOME -- "GRE MSK-VPSVILLE-RTK
10.100.2.0/30" --> VPSVILLE + HOME -- "GRE MSK-VPSVILLE-MTS
10.100.1.0/30" --> VPSVILLE + HOME -- "GRE MSK-IHOR-RTK
10.100.4.0/30" --> IHOR + HOME -- "GRE MSK-IHOR-MTS
10.100.3.0/30" --> IHOR + + %% GRE туннели от московских серверов к SWE-HIPHOST + VPSVILLE -- "GRE SWE-HIPHOST
10.100.5.0/30" --> HIPHOST + IHOR -- "GRE SWE-HIPHOST
10.100.6.0/30" --> HIPHOST + + %% OSPF связи между московскими серверами + VPSVILLE -. "OSPF" .- IHOR + + %% HOME получает маршруты от московских серверов + VPSVILLE -. "OSPF маршруты" .- HOME + IHOR -. "OSPF маршруты" .- HOME + + style VPSVILLE fill:#ff9800,stroke:#f57c00,stroke-width:2px,color:#fff + style IHOR fill:#ff9800,stroke:#f57c00,stroke-width:2px,color:#fff + style HIPHOST fill:#4caf50,stroke:#388e3c,stroke-width:2px,color:#fff + style HOME fill:#e0e0e0,stroke:#9e9e9e,stroke-width:2px,color:#000 +``` + +### Конфигурация на московских серверах + +#### На MSK-VPSVILLE (msk.vpsville.rt.shx.su): + +```shell +# 1. GRE туннель к SWE-HIPHOST +/interface gre add name=gre-SWE-HIPHOST remote-address= local-address= +/ip address add address=10.100.5.1/30 interface=gre-SWE-HIPHOST + +# 2. GRE туннель к MSK-IHOR (для OSPF) +/interface gre add name=gre-MSK-VPSVILLE-IHOR remote-address= local-address= +/ip address add address=10.200.0.1/30 interface=gre-MSK-VPSVILLE-IHOR + +# 3. OSPF конфигурация +/routing ospf area +add name=backbone instance=default area-id=0.0.0.0 + +# 4. Добавить все интерфейсы в OSPF +/routing ospf interface-template +# Интерфейсы к HOME +add interfaces=gre-MSK-VPSVILLE-RTK cost=10 area=backbone +add interfaces=gre-MSK-VPSVILLE-MTS cost=100 area=backbone + +# Интерфейс к SWE-HIPHOST +add interfaces=gre-SWE-HIPHOST cost=10 area=backbone + +# Интерфейс к MSK-IHOR +add interfaces=gre-MSK-VPSVILLE-IHOR cost=5 area=backbone + +# 5. Анонсировать маршрут 0.0.0.0/0 через SWE-HIPHOST +/ip route add dst-address=0.0.0.0/0 gateway=10.100.5.2 distance=1 + +# 6. OSPF redistribute +/routing ospf instance +set [ find default=yes ] router-id=10.100.0.2 redistribute=connected,static +``` + +#### На MSK-IHOR (msk.ihor.rt.shx.su): + +```shell +# 1. GRE туннель к SWE-HIPHOST +/interface gre add name=gre-SWE-HIPHOST remote-address= local-address= +/ip address add address=10.100.6.1/30 interface=gre-SWE-HIPHOST + +# 2. GRE туннель к MSK-VPSVILLE (для OSPF) +/interface gre add name=gre-MSK-IHOR-VPSVILLE remote-address= local-address= +/ip address add address=10.200.0.2/30 interface=gre-MSK-IHOR-VPSVILLE + +# 3. OSPF конфигурация +/routing ospf area +add name=backbone instance=default area-id=0.0.0.0 + +# 4. Добавить все интерфейсы в OSPF +/routing ospf interface-template +# Интерфейсы к HOME +add interfaces=gre-MSK-IHOR-RTK cost=10 area=backbone +add interfaces=gre-MSK-IHOR-MTS cost=100 area=backbone + +# Интерфейс к SWE-HIPHOST +add interfaces=gre-SWE-HIPHOST cost=10 area=backbone + +# Интерфейс к MSK-VPSVILLE +add interfaces=gre-MSK-IHOR-VPSVILLE cost=5 area=backbone + +# 5. Анонсировать маршрут 0.0.0.0/0 через SWE-HIPHOST +/ip route add dst-address=0.0.0.0/0 gateway=10.100.6.2 distance=1 + +# 6. OSPF redistribute +/routing ospf instance +set [ find default=yes ] router-id=10.100.0.3 redistribute=connected,static +``` + +### Конфигурация на SWE-HIPHOST (swe.hiphost.rt.shx.su): + +```shell +# 1. GRE туннели от московских серверов +/interface gre add name=gre-SWE-HIPHOST-VPSVILLE remote-address= local-address= +/ip address add address=10.100.5.2/30 interface=gre-SWE-HIPHOST-VPSVILLE + +/interface gre add name=gre-SWE-HIPHOST-IHOR remote-address= local-address= +/ip address add address=10.100.6.2/30 interface=gre-SWE-HIPHOST-IHOR + +# 2. OSPF конфигурация +/routing ospf area +add name=backbone instance=default area-id=0.0.0.0 + +# 3. Добавить интерфейсы в OSPF +/routing ospf interface-template +add interfaces=gre-SWE-HIPHOST-VPSVILLE cost=10 area=backbone +add interfaces=gre-SWE-HIPHOST-IHOR cost=10 area=backbone + +# 4. OSPF redistribute (маршрут 0.0.0.0/0 получен через DHCP) +/routing ospf instance +set [ find default=yes ] router-id=10.100.0.5 redistribute=connected +``` + +### Конфигурация на HOME (home.rt.shx.su): + +```shell +# 1. OSPF конфигурация +/routing ospf area +add name=backbone instance=default area-id=0.0.0.0 + +# 2. Добавить интерфейсы к московским серверам в OSPF +/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 + +# 3. Policy routing для выбора сервера +/routing rule +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 # Основной трафик → Ростелеком +``` + +### Логика работы failover + +1. **Нормальная работа**: + - HOME получает маршрут 0.0.0.0/0 от MSK-VPSVILLE через OSPF + - MSK-VPSVILLE имеет GRE туннель к SWE-HIPHOST + +2. **Отказ GRE туннеля MSK-VPSVILLE → SWE-HIPHOST**: + - MSK-VPSVILLE больше не может достичь SWE-HIPHOST + - MSK-VPSVILLE убирает маршрут 0.0.0.0/0 из OSPF + - HOME получает маршрут 0.0.0.0/0 от MSK-IHOR через OSPF + - Весь трафик идет через MSK-IHOR → SWE-HIPHOST + +3. **Автоматическое восстановление**: + - Когда GRE туннель MSK-VPSVILLE → SWE-HIPHOST восстанавливается + - MSK-VPSVILLE снова анонсирует маршрут 0.0.0.0/0 + - OSPF выбирает оптимальный путь (обычно через MSK-VPSVILLE) + +### Преимущества этой архитектуры + +1. **Полная отказоустойчивость**: Если один московский сервер теряет связь с SWE-HIPHOST, трафик идет через другой +2. **Автоматический failover**: OSPF автоматически переключает маршруты +3. **Быстрое восстановление**: При восстановлении связи автоматически возвращается к оптимальному маршруту +4. **Масштабируемость**: Легко добавить третий московский сервер + +### Мониторинг failover + +```shell +# Проверить OSPF маршруты +/routing ospf route print + +# Проверить активные маршруты +/ip route print where active=yes + +# Проверить состояние GRE туннелей +/interface gre print + +# Проверить OSPF соседей +/routing ospf neighbor print +``` + +### Тестирование failover + +```shell +# На MSK-VPSVILLE отключить GRE туннель к SWE-HIPHOST +/interface gre disable [ find where name=gre-SWE-HIPHOST ] + +# Проверить что маршрут исчез из OSPF +/routing ospf route print + +# На HOME проверить что маршрут изменился +/ip route print where dst-address=0.0.0.0/0 + +# Включить туннель обратно +/interface gre enable [ find where name=gre-SWE-HIPHOST ] +``` + ### Проверка работы cost: ```shell