Настройка GRE-туннеля и OSPF на маршрутизаторах Eltex: детальное руководство с примерами
Когда перед инженером встаёт задача связать два географически разнесённых офиса через общедоступную сеть (или частную MPLS/VPN), первое, что приходит на ум — использовать туннелирование. Существует несколько технологий: IP-in-IP, GRE, VXLAN и другие. В этой статье я поделюсь опытом настройки GRE-туннеля между двумя площадками (назовём их Router 1 и Router 2) на оборудовании Eltex, а также покажу, как поднять динамическую маршрутизацию OSPF поверх этого туннеля. Материал рассчитан на тех, кто уже немного знаком с CLI Eltex, но хочет разобраться с нюансами.
Почему GRE, а не IP-in-IP?
Выбор протокола — всегда компромисс. IP-in-IP проще, но он умеет инкапсулировать только IP-пакеты. GRE (Generic Routing Encapsulation) более универсален: он может переносить любые протоколы сетевого уровня (например, IPX, AppleTalk — хотя сейчас это редкость), поддерживает дополнительные опции (проверку последовательности, ключи, TTL). Кроме того, GRE легко комбинируется с IPsec: можно сначала завернуть трафик в GRE, а затем зашифровать его, получив защищённое соединение GRE over IPsec. Именно эта перспектива повлияла на наш выбор.
Этап 1. Создание GRE-туннеля на маршрутизаторе Router 1
На маршрутизаторах Eltex туннельные интерфейсы создаются в отдельном режиме конфигурации. Важно помнить, что туннель — это логический интерфейс, который использует в качестве транспорта реальные IP-адреса физических интерфейсов.
Пошаговая конфигурация
Переходим в режим настройки туннеля с номером 1 (номер может быть любым, главное — уникальность):
router1(config)# tunnel gre 1Теперь мы находимся в контексте config-gre. Здесь задаём все параметры.
1. Описание интерфейса — чисто для удобства администрирования:
router1(config-gre)# description to-router22. Отключение проверок firewall — на некоторых версиях Eltex по умолчанию включены фильтры, которые могут блокировать трафик через туннель. Чтобы избежать сюрпризов, отключаем их:
router1(config-gre)# ip firewall disable3. Локальный и удалённый адреса — это «внешние» IP-адреса маршрутизаторов, которые смотрят в транспортную сеть. В нашем случае Router 1 имеет адрес 172.16.4.2, а Router 2 — 172.16.5.2:
router1(config-gre)# local address 172.16.4.2
router1(config-gre)# remote address 172.16.5.24. IP-адрес самого туннеля — это «внутренний» адрес, по которому маршрутизаторы будут общаться внутри туннеля. Обычно используют приватные адреса из диапазонов, не пересекающихся с существующими сетями. Мы выбрали подсеть 100.10.10.0/30, где Router 1 получит первый адрес, Router 2 — второй:
router1(config-gre)# ip address 100.10.10.1/305. TTL для инкапсулированных пакетов — значение 16 вполне достаточно, чтобы пакет дошёл до удалённого конца, даже если по пути будет несколько хопов. Слишком маленькое TTL может привести к потере пакетов, слишком большое — нецелесообразно:
router1(config-gre)# ttl 166. Активация интерфейса — без этой команды туннель будет в состоянии down:
router1(config-gre)# enableПосле завершения настроек выходим из контекста:
router1(config-gre)# exitВажно: точно такая же конфигурация, но с зеркальными адресами, должна быть выполнена на удалённом маршрутизаторе Router 2. Там локальным будет 172.16.5.2, удалённым — 172.16.4.2, а IP-адрес туннеля — 100.10.10.2/30. После этого можно проверить связь через туннель командой ping 100.10.10.2 с Router 1.
Этап 2. Динамическая маршрутизация: почему OSPF?
Статические маршруты — это просто, но негибко. При изменении топологии (например, добавлении новой сети) придётся править конфигурацию на всех маршрутизаторах. Протоколы динамической маршрутизации автоматически распространяют информацию о сетях. Мы выбрали OSPF, так как это Link-State протокол, быстросходящийся и широко поддерживаемый.
Особенности реализации OSPF на Eltex
Если вы привыкли к Cisco, будьте внимательны: на Eltex есть несколько важных отличий:
Области (areas) задаются в формате IPv4-адреса. То есть backbone area — это не просто
0, а0.0.0.0.Сети указываются точно с той маской, которая настроена на интерфейсе. Нельзя написать обобщённую сеть
/24, если интерфейсы имеют разные маски. Каждая подсеть перечисляется отдельно.OSPF необходимо явно включить на каждом интерфейсе, даже если сеть прописана в конфигурации процесса. Для этого используется команда
ip ospf instance <номер>.
Настройка аутентификации OSPF (необязательно, но рекомендуется)
Для защиты от несанкционированного соседства используем аутентификацию. Сначала создаём ключевую цепочку:
router1(config)# key-chain auth_ospf
router1(config-keychain)# key 1
router1(config-keychain-key)# key-string ascii-text password
router1(config-keychain-key)# exit
router1(config-keychain)# exitЗдесь мы задали пароль password для первого ключа. Обратите внимание: на Router 2 должна быть точно такая же цепочка с тем же паролем, иначе аутентификация не сработает.
Конфигурация процесса OSPF
Теперь переходим к настройке самого протокола. Задаём номер процесса (у нас будет 1) и router-id — удобно использовать IP-адрес туннеля, чтобы идентификатор был уникальным и легко запоминался:
router1(config)# router ospf 1
router1(config-ospf)# router-id 100.10.10.1Входим в настройку области 0.0.0.0:
router1(config-ospf)# area 0.0.0.0Теперь нужно указать все локальные сети, которые должны анонсироваться в OSPF. В нашем примере у Router 1 есть три подсети: 192.168.10.0/26, 192.168.10.64/28 и 192.168.10.80/29. Перечисляем их по очереди:
router1(config-ospf-area)# network 192.168.10.0/26
router1(config-ospf-area)# network 192.168.10.64/28
router1(config-ospf-area)# network 192.168.10.80/29После добавления всех сетей активируем область:
router1(config-ospf-area)# enableВыходим из режима области и активируем весь процесс OSPF:
router1(config-ospf-area)# exit
router1(config-ospf)# enable
router1(config-ospf)# exitПривязка OSPF к туннельному интерфейсу
Теперь самое важное: даже если сети указаны в OSPF, протокол не начнёт обмениваться приветствиями (hello) на интерфейсе туннеля, пока мы не скажем это явно. Возвращаемся в конфигурацию туннеля:
router1(config)# tunnel gre 1Указываем номер процесса OSPF, который должен работать на этом интерфейсе:
router1(config-if-gi)# ip ospf instance 1Включаем аутентификацию с использованием созданного key-chain и алгоритма MD5:
router1(config-if-gi)# ip ospf authentication key-chain auth_ospf
router1(config-if-gi)# ip ospf authentication algorithm md5Выходим в привилегированный режим:
router1(config-if-gi)# endСохранение конфигурации
В Eltex используется двухэтапное подтверждение: сначала commit, затем confirm. Это позволяет при возникновении проблем автоматически откатить изменения (если не подтвердить в течение заданного времени).
router1# commit
router1# confirmПосле этого конфигурация становится постоянной.
Проверка и отладка
Убедиться, что туннель работает, можно командой ping 100.10.10.2. Для проверки OSPF-соседства используем:
router1# show ip ospf neighborВ выводе должен появиться сосед с router-id 100.10.10.2 в состоянии FULL.
Анонсированные маршруты смотрим командой:
router1# show ip route ospfТипичные ошибки и их устранение
Туннель не поднимается (ping не идёт).
Проверьте, доступны ли внешние адреса друг другу:ping 172.16.5.2с Router 1. Если нет — проблема в физической связности или маршрутизации до этих адресов. Также убедитесь, что на промежуточных устройствах не блокируется протокол GRE (IP protocol 47).OSPF соседство не устанавливается.
Проверьте совпадение параметров аутентификации (пароль, алгоритм).
Убедитесь, что на обоих концах туннеля IP-адреса из одной подсети (у нас /30) и нет конфликтов.
Проверьте, что на интерфейсе туннеля включён OSPF командой
ip ospf instance.Посмотрите таймеры hello/dead (по умолчанию 10/40). Они должны совпадать.
Сети не анонсируются.
Внимательно проверьте маски в командахnetwork. Они должны в точности соответствовать маскам, настроенным на интерфейсах маршрутизатора. Например, если на интерфейсе стоит адрес 192.168.10.1 с маской 255.255.255.192 (т.е. /26), то в OSPF надо писать 192.168.10.0/26, а не 192.168.10.0/24.
Заключение
Настройка GRE-туннелей и OSPF на оборудовании Eltex — задача вполне решаемая, если знать особенности платформы. Главные отличия от Cisco: формат области, точное указание сетей и необходимость активации OSPF на интерфейсе. Предложенная конфигурация проверена в лабораторных условиях и успешно работает. Надеюсь, это руководство поможет вам быстро разобраться с подобной задачей и избежать типичных граблей.
Если у вас остались вопросы или вы хотите поделиться своим опытом — добро пожаловать в комментарии!