diff --git a/README.md b/README.md index 206656d..69edfde 100644 --- a/README.md +++ b/README.md @@ -262,4 +262,103 @@ graph TB - `` — ваш внешний IP - Аналогично для остальных туннелей, меняя адресацию по таблице выше +--- + +--- + +## OSPF: Оптимальная настройка для GRE туннелей + +В данной архитектуре используется OSPF для динамической маршрутизации между всеми GRE туннелями. Основной провайдер — Ростелеком, резервный — МТС. Для HomeLab (например, 192.168.111.0/24) весь трафик направляется через МТС с помощью policy routing (route-table=MTS). + +### Рекомендации по настройке + +1. **OSPF cost** + - Для GRE туннелей через Ростелеком выставить меньший cost (например, 10) + - Для GRE туннелей через МТС — больший cost (например, 100) + - Это обеспечит приоритет Ростелекома для всего трафика, кроме HomeLab + +2. **Policy Based Routing (PBR) для HomeLab** + - Для HomeLab (например, 192.168.111.0/24) настроить policy routing: + - Весь исходящий трафик с HomeLab отправлять в route-table=MTS + - В этой таблице основной маршрут — через МТС + +3. **OSPF Instance и Area** + - Использовать одну OSPF instance для всех туннелей (если нет особых требований) + - Все GRE-интерфейсы добавить в одну area (обычно 0.0.0.0) + +### Пример конфигурации OSPF на RouterOS + +```shell +# 1. Настройка OSPF instance +/routing ospf instance +set [ find default=yes ] router-id=10.100.0.1 + +# 2. Добавление GRE-интерфейсов в OSPF с разным cost +/routing ospf interface +add interface=gre-MSK-VPSVILLE-RTK cost=10 network-type=point-to-point +add interface=gre-MSK-IHOR-RTK cost=10 network-type=point-to-point +add interface=gre-SWE-HIPHOST-RTK cost=10 network-type=point-to-point + +add interface=gre-MSK-VPSVILLE-MTS cost=100 network-type=point-to-point +add interface=gre-MSK-IHOR-MTS cost=100 network-type=point-to-point +add interface=gre-SWE-HIPHOST-MTS cost=100 network-type=point-to-point + +# 3. Добавление сетей в OSPF +/routing ospf network +add network=10.100.0.0/16 area=backbone + +# 4. Policy Based Routing для HomeLab +/ip route +add dst-address=0.0.0.0/0 gateway= routing-table=MTS +/ip firewall mangle +add chain=prerouting src-address=192.168.111.0/24 action=mark-routing new-routing-mark=MTS + +# — адрес следующего хопа через МТС (например, 10.100.1.2) +``` + +#### Логика работы +- OSPF сам будет выбирать основной маршрут через Ростелеком (cost ниже). +- Если основной канал падает, трафик автоматически пойдёт через МТС. +- Для HomeLab весь трафик всегда идёт через МТС, независимо от состояния каналов, благодаря policy routing. + +--- + +--- + +## Failover между московскими туннелями (route-table=MSK) + +Для клиентов/серверов, использующих отдельную таблицу маршрутизации `MSK`, реализован автоматический failover между московскими GRE туннелями. Если один из туннелей (MSK-VPSVILLE или MSK-IHOR) падает, весь трафик автоматически идёт через оставшийся рабочий туннель. + +### Как это работает +- OSPF анонсирует маршруты через оба московских туннеля. +- Если один туннель недоступен, маршрут через него исчезает из таблицы MSK. +- Policy Based Routing (PBR) направляет трафик нужных клиентов в таблицу MSK. +- В таблице MSK всегда есть маршрут через рабочий туннель. + +### Пример конфигурации на RouterOS + +```shell +# 1. Маркируем трафик для route-table=MSK +/ip firewall mangle +add chain=prerouting src-address=192.168.222.0/24 action=mark-routing new-routing-mark=MSK + +# 2. В таблице MSK маршруты через оба московских туннеля +/ip route +# OSPF сам добавит маршруты через gre-MSK-VPSVILLE и gre-MSK-IHOR, если они живы +# Если хотите вручную: +add dst-address=0.0.0.0/0 gateway=10.100.1.2 routing-table=MSK distance=1 +add dst-address=0.0.0.0/0 gateway=10.100.3.2 routing-table=MSK distance=2 + +# 3. OSPF интерфейсы для московских туннелей +/routing ospf interface +add interface=gre-MSK-VPSVILLE-RTK cost=10 network-type=point-to-point +add interface=gre-MSK-IHOR-RTK cost=10 network-type=point-to-point +add interface=gre-MSK-VPSVILLE-MTS cost=100 network-type=point-to-point +add interface=gre-MSK-IHOR-MTS cost=100 network-type=point-to-point +``` + +- OSPF будет держать маршруты только через живые туннели. +- Если оба туннеля живы — оба маршрута в таблице, основной с меньшим distance. +- Если один туннель падает — маршрут через него исчезает, трафик идёт через оставшийся. + --- \ No newline at end of file