Урок 34. Поиск и устранение неисправностей протокола EIGRP

 

В работе EIGRP возможны следующие проблемы: 

    • Не устанавливаются состояния смежности
    • Маршруты не попадают в таблицу маршрутизации

Эти и многие другие причины мы разберем  по порядку в этом уроке.

 

Проблемы с установлением смежности 

Как мы знаем маршрутизаторы периодически анонсируют Hello сообщения, чтобы установить состояние смежности и в дальнейшем его поддерживать.Однако, “соседство” устанавливается, если ниже перечисленные параметры совпадают на соседних маршрутизаторах (непосредственно подключенных друг к другу): 

    • Подсеть и маска подсети
    • Коэффициенты K
    • Номер автономной сети
    • Значение таймера Holddown
    • Тип аутентификации и пароль

Кроме того, на установление смежности также влияют проблемы на уровнях L1/L2 и неправильно настроенные списки доступа ACL. Списки доступа мы рассмотрим в одном из следующих уроках, однако вкратце поясню для чего они служат. 

ACL являются фильтром пакетов. Фильтрация осуществляется на основе адресов и портов отправителя/получателя. Причем ACL работают как на передачу, так и на прием. Таким образом, можно по ошибке настроить запрет на прием или передачу пакетов EIGRP. 

Теперь посмотрим как проверить параметры протокола. На рисунке представлена простая сеть. На маршрутизаторе R2 неправильно настроили IP адрес. На R2 вместо 192.168.1.2 установили 192.168.2.2:

Сетевая диаграмма

 

Как узнать, что у нас есть проблема с установлением смежности? 

Обычно сразу после включения интерфейса и протокола в консоль выводится сообщение об успешной установки смежности:

Уведомление об установлении соседских отношений

Правилом хорошего тона является проверка работоспособности протокола сразу после его настройки. Для этого достаточно выполнить простые команды: 

Router# show ip route 

Router#show ip eigrp neighbors

В нашем случае команды покажут, что сосед не обнаружен. Поэтому просто попробуем локализовать проблему на соответствующем уровне L1/L2/L3. 

Запустим ping 192.168.1.2:

Ping не сработал

 Исходя из вывода можно предположить, что проблема на L3. Чтобы убедиться в этом проверим L2: 

Router# show cdp neighbors detail

CDP информация о соседнем устройстве

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

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

Что делать, если соседний маршрутизатор не Cisco и команда cdp не помогает? 

С помощью следующей команды можно проверить сразу 2 уровня: 

Router# show ip eigrp traffic

Данные о трафике EIGRP

 Здесь указываются счетчики принятых и отправленных пакетов. Если мы видим, что количество принятых и отправленных пакетов растет, значит на L2 все в порядке. Нулевое значение остальных счетчиков говорит, что состояние смежности не установлено и проблема скорее всего в EIGRP.

 

Несоответствие параметров протокола

Если параметры К или Holddown не совпадают, то в консоль будут выведены следующие сообщения:

Несоответствие параметров EIGRP

 Если же не совпадают номера автономных сетей, то в консоль ничего выводится не будет. Входящие Hello пакеты будут просто игнорироваться. Поэтому на обоих маршрутизаторах проверяем настройки протокола командой show ip protocol:

Настройки протокола EIGRP в R1

Настройки протокола EIGRP в R2

 

Неправильная аутентификация 

Правильнее всего сначала настроить сам EIGRP безу аутентификации. Если все настроено правильно, то появится сообщение об успешной установки смежности. Так мы убедимся, что основные настройки верны и приступим к аутентификации.

Обычно после установки пароля на первом маршрутизаторе состояние смежности удаляется, о чем свидетельствует сообщение:

Уведомление о неуспешной аутентификации

 Если второй маршрутизатор настроен верно, то сразу же появится сообщение об установки смежности. Если его нет, то проверяем что не так: 

Router# show ip eigrp interfaces detail

Настройки EIGRP на конкретном интерфейсе

 

Проверим цепочку ключей с помощью show key chain:

Отображение цеопчки ключей EIGRP

 

Проблемы с установкой маршрутов в таблице маршрутизации 

В таблицу маршрутизации запись о сетях может не попасть по следующим причинам: 

        • Включена автоматическая суммаризация либо неправильно настроена
        • В сети имеются маршрутизаторы с одинаковыми ID

 

Суммирование маршрутов (Автосуммаризация) 

Данная опция всегда включена по умолчанию и может приводить к проблемам в маршрутизации. Рассмотрим сеть:

Сетевая диаграмма

 

Теперь взглянем на таблицу маршрутизации R1 и R2:

Таблица маршрутизации R1

Таблица маршрутизации R2

 В обеих таблицах присутствует запись о суммированном маршруте 172.16.0.0/16, но абсолютно ничего о сетях соседей. Если попробуем ping с любого компьютера на компьютер соседнего маршрутизатора, то получим о сообщение о недостижимости сети:

Ping показывает, что сеть недостижима

 И это понятно, так как в таблице для маршрута 172.16.0.0/16 в качестве выходного интерфейса указан Null0. Null0 означает “черную дыру”, иными словами все пакеты будут уничтожены. 

Почему же роутер не установит все маршруты в таблице, включая и суммированный? 

Дело в том, что в EIGRP все суммированные маршруты имеют административное расстояние равное 5. Поэтому такие маршруты и попадают в таблицу на приоритетных правах. Чтобы убедиться в этом взглянем на запись о сети подробнее: 

Router# show ip route 172.16.0.0 255.255.0.0

Детальная информация о маршруте

 Чтобы решить эту проблему достаточно просто отключить автосуммирование и при необходимости настроить суммированный маршрут вручную. Вот как будет выглядеть таблица после отключения данной опции:

Таблица маршрутизации с выключенной суммаризацией маршрутов

Таблица маршрутизации с выключенной суммаризацией маршрутов на R2

 

 

Одинаковый Router-ID 

В EIGRP Router ID используется для предотвращения зацикливания анонсов о внешних сетях. Когда роутер получает такой анонс, то в первую очередь сравнивает свой Router ID и соседа. Если они разные, то анонс сети принимается, если нет - то игнорируется. Значение Router ID устанавливается вручную командой: 

Router(config-config)# eigrp router-id значение_в_виде_IP_адреса 

Если данная команда не была выполнена, то протокол в качестве ID выберет адрес Loopback интерфейса либо другого активного интерфейса. Рассмотрим сеть ниже. Между R2 и R3 настроен RIP. Задачей R2 передать информацию о сетях 200.1.1.0/24, 198.1.1.0/24 всем внутренним маршрутизаторам:

Сетевая диаграмма

 

Взглянем на таблицу маршрутов R1 и R2:

Таблица маршрутизации R1

Таблица маршрутизации в R2

 В R1 нет ни одной записи о внешних сетях, хотя все настройки выполнены правильно. Посмотрим на события в логах EIGRP: 

Router# show ip eigrp events

Отображение журнала событий EIGRP

 Из рисунка видно, что внешние сети анонсируются, однако R1 их почему-то игнорирует. Взглянем на ID данного и соседнего роутеров: 

Router# show ip eigrp topology

Отображение router ID в R1

Отображение Router ID в R2

 У обоих маршрутизаторов одинаковое значение ID. Это связано с тем, что у них настроен Loopback интерфейс с адресом 1.1.1.1. Чтобы исправить ситуацию можно на одном из роутеров поменять адрес Loopback интерфейса либо явно задать Router ID командой: 

Router(config-eigrp)# eigrp router-id значение_ID 

После этого необходимо перезагрузить R1 и R2.

Теперь все работает:

Обновленная таблица маршрутизации