Security Lab

Настройка EIGRP на Cisco с резервным маршрутом на трёх маршрутизаторах

1557
Настройка EIGRP на Cisco с резервным маршрутом на трёх маршрутизаторах

Сеть с запасным кабелем может выглядеть отказоустойчивой ровно до первой аварии. Если маршрутизаторы неправильно выбирают пути или не знают обратного маршрута, второй канал не спасёт. Я предлагаю собрать небольшой стенд, где резервирование придётся доказать на практике, отключив основное соединение.

Понадобятся три маршрутизатора Cisco. Соединим R1, R2 и R3 треугольником, включим EIGRP и назначим метрики. В штатном режиме трафик между R1 и R3 пойдёт напрямую, после отказа через R2. При этом подготовим подходящий резерв в обоих направлениях, чтобы проверить не только доставку запроса, но и возвращение ответа.

Настройка EIGRP на Cisco

Практика рассчитана на маршрутизаторы с Cisco IOS или IOS XE, где доступен классический режим IPv4 EIGRP. Используйте отдельный стенд без прежних настроек маршрутизации, фильтров и перераспределения маршрутов. Все численные результаты ниже рассчитаны для приведённой конфигурации, стандартных коэффициентов и классической метрики. Вывод конкретного образа может отличаться оформлением.

Работайте только со своей сетью или с разрешения владельца. Соблюдайте законодательство своей страны, включая Россию, и не применяйте команды для несанкционированного доступа или нарушения работы чужой инфраструктуры.

1. Собираем треугольник и назначаем адреса

У каждого маршрутизатора нужны два Ethernet-порта. Соедините R1 Gi0/0 с R2 Gi0/0, R1 Gi0/1 с R3 Gi0/0, R2 Gi0/1 с R3 Gi0/1. Здесь Gi означает GigabitEthernet. Если образ использует названия GigabitEthernet0/0/0 или Ethernet0/0, замените имена во всех командах, сохранив схему подключений.

МаршрутизаторИнтерфейсIP-адресПодключение
R1Gi0/010.0.12.1/30R2 Gi0/0
R1Gi0/110.0.13.1/30R3 Gi0/0
R1Loopback0192.168.1.1/32Контрольный адрес R1
R2Gi0/010.0.12.2/30R1 Gi0/0
R2Gi0/110.0.23.1/30R3 Gi0/1
R2Loopback0192.168.2.1/32Контрольный адрес R2
R3Gi0/010.0.13.2/30R1 Gi0/1
R3Gi0/110.0.23.2/30R2 Gi0/1
R3Loopback0192.168.3.1/32Контрольный адрес R3

Префикс /30 соответствует маске 255.255.255.252 и даёт два адреса для концов соединения. Префикс /32 обозначает единственный адрес. Loopback0 является программным интерфейсом и не выключается вместе с одним физическим портом. Поэтому проверять будем связь между 192.168.1.1 и 192.168.3.1. Отдельные компьютеры не нужны.

Сначала разберём повторяющиеся команды. Объяснения действуют для всех трёх конфигураций.

  • enable открывает привилегированный режим с приглашением #. Если уже находитесь в таком режиме, повторять команду не нужно.
  • configure terminal открывает режим изменения конфигурации.
  • hostname задаёт имя устройства, которое появится в приглашении консоли.
  • interface выбирает указанный порт. Для Loopback0 команда при необходимости создаёт программный интерфейс.
  • ip address назначает интерфейсу адрес и маску из таблицы.
  • bandwidth 100000 задаёт расчётную полосу 100 000 Кбит/с. Реальную скорость команда не ограничивает.
  • delay 10 задаёт расчётную задержку 100 мкс, а delay 15 задаёт 150 мкс. Аргумент измеряется в десятках микросекунд. Пакеты искусственно не задерживаются.
  • no shutdown административно включает физический порт. При исправном подключении и включённом порте соседа ожидаем рабочее соединение.
  • exit возвращает из настройки интерфейса в общий режим конфигурации. end возвращает к приглашению #.

Выполните на R1 следующий блок. Первый порт смотрит на R2, второй на R3, а Loopback0 получает адрес источника тестового трафика.

enable
 configure terminal
 hostname R1
 interface GigabitEthernet0/0
  ip address 10.0.12.1 255.255.255.252
  bandwidth 100000
  delay 10
  no shutdown
  exit
 interface GigabitEthernet0/1
  ip address 10.0.13.1 255.255.255.252
  bandwidth 100000
  delay 15
  no shutdown
  exit
 interface Loopback0
  ip address 192.168.1.1 255.255.255.255
  bandwidth 100000
  delay 10
  exit
 end

На R2 первый порт получает адрес стороны R2 в соединении с R1, второй порт адрес в соединении с R3. На обоих физических интерфейсах задаём одинаковую задержку.

enable
 configure terminal
 hostname R2
 interface GigabitEthernet0/0
  ip address 10.0.12.2 255.255.255.252
  bandwidth 100000
  delay 10
  no shutdown
  exit
 interface GigabitEthernet0/1
  ip address 10.0.23.1 255.255.255.252
  bandwidth 100000
  delay 10
  no shutdown
  exit
 interface Loopback0
  ip address 192.168.2.1 255.255.255.255
  bandwidth 100000
  delay 10
  exit
 end

На R3 первый порт соединён с R1, второй с R2. Адрес Loopback0 станет основной целью проверки.

enable
 configure terminal
 hostname R3
 interface GigabitEthernet0/0
  ip address 10.0.13.2 255.255.255.252
  bandwidth 100000
  delay 15
  no shutdown
  exit
 interface GigabitEthernet0/1
  ip address 10.0.23.2 255.255.255.252
  bandwidth 100000
  delay 10
  no shutdown
  exit
 interface Loopback0
  ip address 192.168.3.1 255.255.255.255
  bandwidth 100000
  delay 10
  exit
 end

Я специально задаю полосу и задержку даже на Loopback0. Так заводские значения разных образов не вмешаются в расчёт. Прямой канал R1 → R3 получит задержку 150 мкс, а два канала через R2 в сумме 200 мкс. Почему нужны именно такие соотношения, проверим по таблице топологии.

На каждом устройстве выполните show ip interface brief. Команда показывает адреса и состояния интерфейсов. У настроенных портов и Loopback0 ожидаем up/up. Состояние administratively down указывает на административно выключенный интерфейс.

На R1 выполните ping 10.0.12.2 для проверки R2 и ping 10.0.13.2 для проверки R3. На R2 выполните ping 10.0.23.2, чтобы проверить оставшийся канал. Ожидаем ответы во всех случаях. При первом обращении отдельный пакет может потеряться из-за разрешения адреса через ARP, но повторная проверка должна проходить. Пока соседний адрес недоступен, переходить к EIGRP рано.

2. Включаем EIGRP и разрешаем соседство только между маршрутизаторами

Используем классическую настройку через router eigrp 100. Число 100 задаёт номер автономной системы EIGRP и должно совпадать у соседей. Для такого внутреннего домена не требуется получать публичный номер AS, как при организации внешней связности через BGP. Имя устройства и номер AS решают разные задачи.

На R1 выполните следующий блок.

configure terminal
 router eigrp 100
  no auto-summary
  passive-interface default
  no passive-interface GigabitEthernet0/0
  no passive-interface GigabitEthernet0/1
  network 10.0.12.1 0.0.0.0
  network 10.0.13.1 0.0.0.0
  network 192.168.1.1 0.0.0.0
 end

router eigrp 100 создаёт процесс или открывает его настройки. no auto-summary отключает автоматическое объединение маршрутов по старым классовым границам. Если автоматическое суммирование уже выключено по умолчанию, команда не изменит результат.

passive-interface default запрещает соседство EIGRP на всех интерфейсах по умолчанию. Каждая строка no passive-interface снимает запрет с указанного физического порта. После настройки соседнего маршрутизатора там должен начаться обмен EIGRP.

Каждая строка network выбирает локальный интерфейс по адресу. Обратная маска 0.0.0.0 требует точного совпадения. На R1 первая строка выбирает порт к R2, вторая порт к R3, третья Loopback0. Протокол объявит подключённые префиксы выбранных интерфейсов, два /30 и один /32.

Обратная маска в network не заменяет маску интерфейса. Кроме того, команда не создаёт маршрут к произвольной удалённой сети. Если подходящего локального интерфейса нет, одного network недостаточно.

На R2 выполните аналогичный блок. Здесь network выбирает два адреса каналов R2 и собственный Loopback0. Остальные команды сохраняют общий AS 100 и разрешают соседство только на физических портах.

configure terminal
 router eigrp 100
  no auto-summary
  passive-interface default
  no passive-interface GigabitEthernet0/0
  no passive-interface GigabitEthernet0/1
  network 10.0.12.2 0.0.0.0
  network 10.0.23.1 0.0.0.0
  network 192.168.2.1 0.0.0.0
 end

На R3 строки network выбирают интерфейсы к R1 и R2, затем контрольный адрес 192.168.3.1.

configure terminal
 router eigrp 100
  no auto-summary
  passive-interface default
  no passive-interface GigabitEthernet0/0
  no passive-interface GigabitEthernet0/1
  network 10.0.13.2 0.0.0.0
  network 10.0.23.2 0.0.0.0
  network 192.168.3.1 0.0.0.0
 end

Loopback0 остаётся пассивным, но его префикс передаётся соседям через физические каналы. Аналогичный подход подходит для пользовательской подсети, которую нужно объявлять, не устанавливая соседство с устройствами пользователей. При этом passive-interface не блокирует обычные пакеты и не заменяет фильтрацию. Номер AS также не служит паролем.

3. Проверяем основной путь и готовность резерва

Сначала отделим три вопроса. С кем маршрутизатор обменивается сведениями, какие пути знает EIGRP и какой маршрут выбран для передачи пакетов. Ответы находятся в разных таблицах.

КомандаЧто проверяетОжидаемый результат
show ip eigrp neighborsСоседствоПо два соседа на каждом устройстве. На R1 адреса 10.0.12.2 и 10.0.13.2
show ip protocolsПараметры процессаAS 100, выбранные адреса, пассивный Loopback0, стандартные коэффициенты K
show ip route eigrpУстановленные маршруты EIGRPНа R1 присутствуют удалённые Loopback0 с кодом D
show ip route 192.168.3.1Выбранный маршрут к цели на R1Следующий узел 10.0.13.2 через Gi0/1, метрика 32000
show ip eigrp topology 192.168.3.1 255.255.255.255Пути EIGRP к цели на R1Основной путь через R3 и подходящий резерв через R2

При стандартных коэффициентах K классическая метрика учитывает минимальную полосу вдоль пути и сумму задержек. В нашей конфигурации полоса везде одинакова, поэтому её вклад равен 10 000 000 / 100 000, то есть 100. Задержки складываем в единицах команды delay и умножаем итог на 256.

Путь до 192.168.3.1РасчётМетрика
R1 → R3 → Loopback0256 × (100 + 15 + 10)32000
R2 → R3 → Loopback0256 × (100 + 10 + 10)30720
R1 → R2 → R3 → Loopback0256 × (100 + 10 + 10 + 10)33280

Прямой путь дешевле обходного и становится основным, successor. Однако для готового резерва мало занять второе место по стоимости. Объявленная соседом дистанция RD должна быть строго меньше FD на проверяющем маршрутизаторе. Такое условие допустимости позволяет выбрать соседа без дополнительного поиска пути через запросы.

В исходном состоянии R1 имеет FD 32000, а R2 сообщает RD 30720. Получаем 30720 < 32000. Следовательно, R2 подходит как feasible successor, заранее допустимый резервный следующий узел. В выводе топологии для R2 ожидается пара 33280/30720, полная стоимость пути через соседа и стоимость, объявленная самим соседом. Для прямого пути через R3 ожидается 32000/28160.

FD не всегда равна текущей стоимости основного пути. Протокол хранит наименьшую стоимость с последнего перехода маршрута из состояния Active в Passive. Поэтому после аварии нельзя автоматически подставлять новую метрику из таблицы маршрутизации вместо FD.

В обратном направлении настройки симметричны. На R3 выполните show ip eigrp topology 192.168.1.1 255.255.255.255. Команда проверит путь к источнику тестовых пакетов. Ожидаем основной маршрут через R1 с метрикой 32000 и резерв через R2 с парой 33280/30720. Готовность резерва только на R1 ничего не гарантировала бы для ответного трафика.

Есть полезная ловушка. Если поставить delay 10 вообще на всех интерфейсах, прямая стоимость станет 30720, а R2 объявит те же 30720. Равенство не проходит строгое условие RD < FD. Обходной путь физически существует, но заранее допустимым резервом не становится. Именно поэтому у прямого канала нашего стенда delay 15.

show ip eigrp topology all-links показывает также известные альтернативы, которые не прошли условие допустимости. Такой путь может оказаться пригодным после пересчёта, но его наличие не обещает немедленного переключения. Статус Passive у маршрута означает, что расчёт завершён, и не связан с командой passive-interface.

Если метрики отличаются, выполните show interfaces GigabitEthernet0/0, show interfaces GigabitEthernet0/1 и show interfaces Loopback0 на соответствующем устройстве. Каждая команда показывает параметры выбранного интерфейса. Ожидаем BW 100000 Kbit и DLY 100 либо 150 usec. Именованный режим EIGRP с широкими метриками не следует сравнивать с нашими числами напрямую.

На R1 выполните ping 192.168.3.1 source 192.168.1.1. Команда отправляет запросы с Loopback0 и проверяет доставку ответов к нему. Затем выполните traceroute 192.168.3.1 source 192.168.1.1. Ожидаем прямой путь к R3 без промежуточного R2. Собственный маршрутизатор R1 отдельным переходом в выводе не появится.

4. Выключаем канал и проверяем связь в обход

Откройте консоль R1 и выполните следующий блок. Лучше использовать консоль стенда, чтобы случайно не оборвать собственный удалённый доступ.

configure terminal
 interface GigabitEthernet0/1
  shutdown
 end

configure terminal открывает настройку, interface GigabitEthernet0/1 выбирает прямой порт к R3, shutdown выключает его, end возвращает к проверкам.

На R1 повторите show ip eigrp neighbors. Должен остаться сосед 10.0.12.2. Затем выполните show ip route 192.168.3.1. Ожидаем новый следующий узел 10.0.12.2 через Gi0/0 и метрику 33280. На R3 команда show ip route 192.168.1.1 должна показать обратный путь через 10.0.23.1 с такой же метрикой.

Повторите на R1 ping 192.168.3.1 source 192.168.1.1. После переключения должны приходить ответы. Повторная команда traceroute 192.168.3.1 source 192.168.1.1 должна показать промежуточный R2 перед достижением R3. Адреса ответов сопоставляйте с таблицей стенда, конкретный адрес интерфейса в трассировке может зависеть от реализации.

Алгоритм DUAL использует заранее допустимый резерв, но обещать нулевые потери пакетов нельзя. Отдельно проходят обнаружение отказа, обновление маршрута и перестройка передачи пакетов. Проверка ping после отключения доказывает восстановленную связность, а не отсутствие перерыва. Для наблюдения потерь можно в одной консоли R1 запустить ping 192.168.3.1 source 192.168.1.1 repeat 1000 timeout 1, а в другой отключить порт. Команда отправляет до 1000 запросов с ожиданием ответа до секунды на каждый. Число потерь само по себе не даёт точного времени сходимости.

Локальный shutdown сразу сообщает R1 об отказе. Если проблема возникла дальше по каналу, а порт остался up, EIGRP может ждать истечения времени удержания соседа. Поэтому результат лабораторного отключения нельзя переносить на любую аварию в сети оператора. Второй маршрут также не спасает от отказа самого R3, где находится адрес назначения.

Верните канал на R1.

configure terminal
 interface GigabitEthernet0/1
  no shutdown
 end

Первые две команды открывают настройку нужного порта, no shutdown включает его, а end завершает настройку. После восстановления соседства команда show ip route 192.168.3.1 снова должна показать прямой путь через 10.0.13.2 с метрикой 32000. Повторная трассировка подтвердит исчезновение R2 из пути.

Если соседства нет, проверяйте порты, адреса, маски, AS, коэффициенты K и passive-interface. Если соседи есть, но Loopback0 не виден, проверьте соответствующую строку network. Если маршрут появился, но ответы не приходят, смотрите обратный маршрут и фильтры. EIGRP использует IP-протокол 88, а не TCP- или UDP-порт 88. В рабочей сети также нужны осмысленные ограничения соседства и аутентификация, которых в учебной конфигурации нет.

После восстановления канала выполните на каждом устройстве copy running-config startup-config. Команда сохраняет действующую конфигурацию для следующей загрузки. Если появится запрос имени файла назначения, примите стандартное клавишей Enter и дождитесь успешного завершения.

Я считаю стенд готовым, когда прямой маршрут работает до отказа, допустимый резерв виден в обоих направлениях, а после отключения трафик проходит через R2 и возвращается обратно. Следующий шаг для рабочей сети состоит в проверке реальных приложений и времени перерыва. Наличие второго пути в таблице полезно, но отказоустойчивость подтверждает только проверенная передача трафика при аварии.

EIGRP Cisco маршрутизатор резервный маршрут passive-interface DUAL настройка EIGRP
Alt text
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.
16
сентября
11:00 МСК
Вебинар · i-Core
Управление ИБ без хаоса: как выстроить процессы и не утонуть
16 сентября в 11:00 по Мск разберем, как выстроить процессы ИБ и уйти от ручного управления.
Участвовать бесплатно
Реклама. 18+ ЗАО «Ай Ко» ИНН 7709716245

Юрий Кочетов

Здесь я делюсь своими не самыми полезными, но крайне забавными мыслями о том, как устроен этот мир. Если вы устали от скучных советов и правильных решений, то вам точно сюда.