From b3fb103fe41856f66f3c856ce3fde398b38ca472 Mon Sep 17 00:00:00 2001 From: Denis Shatskiy Date: Thu, 10 Jul 2025 14:00:09 +0700 Subject: [PATCH] Enhance README.md with detailed GRE tunnel addressing principles, examples, and OSPF route duplication management. Updated table format for clarity and added explanations for configuration and benefits of the addressing scheme. --- README.md | 122 +++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 112 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b6222e9..90d1dca 100644 --- a/README.md +++ b/README.md @@ -296,17 +296,43 @@ graph TB ### Пример распределения адресов для GRE туннелей -| Туннель | Подсеть | Gateway (ваш) | Remote (удалённый) | -|------------------------|-----------------|---------------|--------------------| -| MSK-VPSVILLE-MTS | 10.100.1.0/30 | 10.100.1.1 | 10.100.1.2 | -| MSK-VPSVILLE-RTK | 10.100.2.0/30 | 10.100.2.1 | 10.100.2.2 | -| MSK-IHOR-MTS | 10.100.3.0/30 | 10.100.3.1 | 10.100.3.2 | -| MSK-IHOR-RTK | 10.100.4.0/30 | 10.100.4.1 | 10.100.4.2 | -| SWE-HIPHOST-MTS | 10.100.5.0/30 | 10.100.5.1 | 10.100.5.2 | -| SWE-HIPHOST-RTK | 10.100.6.0/30 | 10.100.6.1 | 10.100.6.2 | +| Туннель | Подсеть | HOME (домашний) | Remote (удалённый) | Описание | +|------------------------|-----------------|-----------------|--------------------|----------| +| MSK-VPSVILLE-MTS | 10.100.1.0/30 | 10.100.1.1 | 10.100.1.2 | Резервный канал VPSVILLE | +| MSK-VPSVILLE-RTK | 10.100.2.0/30 | 10.100.2.1 | 10.100.2.2 | Основной канал VPSVILLE | +| MSK-IHOR-MTS | 10.100.3.0/30 | 10.100.3.1 | 10.100.3.2 | Резервный канал IHOR | +| MSK-IHOR-RTK | 10.100.4.0/30 | 10.100.4.1 | 10.100.4.2 | Основной канал IHOR | +| SWE-HIPHOST-MTS | 10.100.5.0/30 | 10.100.5.1 | 10.100.5.2 | Резервный канал HIPHOST | +| SWE-HIPHOST-RTK | 10.100.6.0/30 | 10.100.6.1 | 10.100.6.2 | Основной канал HIPHOST | -- Первый IP в /30 — ваш шлюз (CHR), второй — удалённая сторона. -- Такой подход обеспечивает прозрачность, масштабируемость и минимизирует конфликты. +**Принцип**: Домашний шлюз всегда получает первый IP (.1), удаленные серверы - второй (.2) + +### Принцип адресации GRE туннелей + +**Правило**: Домашний шлюз всегда получает первый IP (.1), удаленные серверы - второй (.2) + +**Преимущества такого подхода:** +- **Логическая последовательность**: HOME - точка входа в сеть, логично дать ему первый IP +- **Консистентность**: Все туннели от HOME имеют одинаковую схему адресации +- **Упрощение конфигурации**: Легче запомнить и настроить (HOME всегда .1) +- **Масштабируемость**: При добавлении новых туннелей схема остается понятной +- **Устранение путаницы**: Нет вопросов "кто где" - HOME всегда .1, серверы всегда .2 + +**Пример конфигурации на HOME:** +```shell +# Все GRE туннели на HOME получают .1 адрес +/ip address add address=10.100.1.1/30 interface=gre-MSK-VPSVILLE-MTS +/ip address add address=10.100.2.1/30 interface=gre-MSK-VPSVILLE-RTK +/ip address add address=10.100.3.1/30 interface=gre-MSK-IHOR-MTS +/ip address add address=10.100.4.1/30 interface=gre-MSK-IHOR-RTK +``` + +**Пример конфигурации на серверах:** +```shell +# Все серверы получают .2 адрес в своих туннелях +/ip address add address=10.100.1.2/30 interface=gre-MSK-VPSVILLE-MTS +/ip address add address=10.100.2.2/30 interface=gre-MSK-VPSVILLE-RTK +``` ### Безопасность и маршрутизация на RouterOS @@ -747,4 +773,80 @@ add src-address=192.168.222.0/24 action=lookup table=MSK /ip route print ``` +--- + +## OSPF и дублирование маршрутов + +При использовании OSPF между серверами может происходить дублирование маршрутов в таблице маршрутизации. Это нормальное поведение, но важно понимать, как это контролировать. + +### Как работает дублирование маршрутов + +1. **OSPF анонсирует маршруты**: Каждый сервер анонсирует свои сети через OSPF +2. **Множественные пути**: HOME может получить маршрут до одной сети через разные серверы +3. **Distance и cost**: OSPF использует cost для выбора оптимального пути, но может создавать резервные маршруты + +### Пример дублирования маршрутов + +```shell +# На HOME может быть несколько маршрутов до одной сети: +/ip route print +Flags: D - DYNAMIC; A - ACTIVE; c - CONNECT, s - STATIC, r - RIP, m - MODEM, b - BGP, o - OSPF, M - MME, B - BLACKHOLE, U - UNREACHABLE, F - FIB, v - VPLS, V - VRF, l - LISP, a - BFD, M - MME, t - TTLS, I - IDE, W - WINBOX, X - XAUTH, g - 7GRE, S - SNAT +Columns: DST-ADDRESS, GATEWAY, DISTANCE +# DST-ADDRESS GATEWAY DISTANCE +0 A s 0.0.0.0/0 10.100.2.2 1 # Через VPSVILLE-RTK +1 A s 0.0.0.0/0 10.100.4.2 1 # Через IHOR-RTK +2 A s 0.0.0.0/0 10.100.1.2 2 # Через VPSVILLE-MTS +3 A s 0.0.0.0/0 10.100.3.2 2 # Через IHOR-MTS +``` + +### Контроль дублирования через OSPF cost + +```shell +# Настройка разных 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 +``` + +### Использование route tables для разделения трафика + +```shell +# Создание отдельных таблиц маршрутизации +/routing table +add name=MSK fib +add name=MTS fib + +# Routing rules для выбора таблицы +/routing rule +add src-address=192.168.111.0/24 action=lookup table=MTS +add src-address=192.168.222.0/24 action=lookup table=MSK + +# В каждой таблице будет свой набор маршрутов +# OSPF автоматически добавит маршруты в соответствующие таблицы +``` + +### Преимущества дублирования маршрутов + +1. **Автоматический failover**: Если основной маршрут недоступен, используется резервный +2. **Load balancing**: Можно настроить балансировку нагрузки между маршрутами +3. **Отказоустойчивость**: Сеть продолжает работать даже при отказе части каналов + +### Мониторинг дублирования + +```shell +# Просмотр всех маршрутов с деталями +/ip route print detail + +# Просмотр OSPF маршрутов +/routing ospf route print + +# Проверка активных маршрутов +/ip route print where active=yes +``` + --- \ No newline at end of file