Урок 19. Поиск и устранение неисправностей в VLAN/VTP

В этой статье рассмотрим какие неисправности могут возникнуть в локальных сетях с VLAN и VTP. Разберем подробно каждый случай и в какой последовательности решать проблему.

К основным неисправностям относят следующие причины: 

    • Неверно настроен режим порта Access/Trunk
    • Неверно настроен тип инкапсуляции ISL/802.1q
    • Неверная IP адресация
    • Неверно выбран режим согласования порта по протоколу DTP
    • Разные Native VLAN на коммутаторах
    • Запрещенные/разрешенные VLAN через транк
    • Порты коммутатора настроены на неверный либо несуществующий VLAN
    • Неверно настроен режим VTP коммутатора
    • Несоответствие номера ревизии VTP в  коммутаторах
    • Несоответствие версии протокола VTP в коммутаторах

 

А теперь обо всем по порядку. 

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

Попробуем во всем разобраться на основе примеров. Некоторые будут до банальности просты, но тем не менее их стоит тоже рассмотреть.

 

Пример 1

Дана сеть:

Пример локальной сети с VLAN

Между всеми VLAN настроена маршрутизация, однако почему-то хосты из разных VLAN недоступны друг другу. Связь между хостами в рамках одного VLAN работает без проблем.

 

Решение

Причин может быть несколько:

    1. Неработающий транк между маршрутизатором и коммутатором
    2. Неправильная настройка маршрутизатора
    3. Неправильная настройка коммутатора

Начнем с физического уровня. Введите следующую команду на коммутаторе и маршрутизаторе show interfaces fastethernet номер_интерфейса

Обратите внимание на вывод команд:

Отображение настроек интерфейса коммутатора

Отображение настроек интерефейса коммутатора

На маршрутизаторе данной командой мы не увидим режим дуплекс/полудуплекс. Для этого достаточно просмотреть конфигурацию командой show running-config. 

Исходя из вывода команд видно, что на физическом уровне проблем нет: режим и  скорость на обоих интерфейсах одинаковы, ошибки в приеме/передачи отсутствуют либо незначительны. 

Теперь проверим настройки маршрутизатора командой show running-config:

Отображение текущих настроек маршрутизатора

И здесь все правильно: инкапсуляция и адресация настроены верно. Ищем дальше. 

Проверим настройки VLAN  и магистрали в коммутаторе более внимательно. Введем команду show interface trunk:

Отображение магистральных VLAN портов в коммутаторе

Оказывается через магистральный порт разрешена передача трафика только от VLAN 4. Все остальные VLAN запрещены. 

 

Как такое возможно? Ведь по умолчанию на магистральных соединениях разрешены все VLAN. 

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

Switch(config-if)# switchport trunk allowed vlan номер_VLAN

 

Если мы захотим разрешить VLAN 10, введем: 

Switch(config-if)# switchport trunk allowed vlan 10

 

Однако, если немного позже нам понадобится добавить VLAN 4, то следующая команда будет неправильна: 

Switch(config-if)# switchport trunk allowed vlan 4

 

IOS примет последнюю команду, а первую удалит:

Отображение разрешенных VLAN в магистральном канале

 

А как ввести сразу несколько VLAN? 

Достаточно ввести: 

Switсh(config-if)# switchport trunk allowed vlan 3, 4, 10

Отображение разрешенных VLAN в магистрали через текущую конфигурацию

Отображение разрешенных VLAN в магистрале через настройки портов

 Существует и другой способ. Если ранее уже была настроена определенная VLAN, то для добавления новой VLAN введите: 

Switсh(config-if)# switchport trunk allowed vlan add номер_VLAN

 

Пример 2

Дана сеть из предыдущего примера.

Локальная сеть с VLAN

Все работало хорошо. Однако сотрудник компании решил подключить старый  коммутатор к сети, так как ему не хватало свободных портов. После этого начали поступать жалобы, что компьютеры из VLAN 10 недоступны для других VLAN, а также внутри “родной” VLAN. Пинги ничего не показывают.

Естественно, сетевой администратор ничего не знает об этих манипуляциях. Каковы его действия?

 

Решение 

Если не работают хосты в рамках всей VLAN, то нет смысла искать неисправности на физическом уровне. Поэтому в первую очередь проверяем настройки VLAN на всех коммутаторах командой show vlan brief:

Отображение настроенных VLAN

Отображение настроенных VLAN

Отображение настроенных VLAN

 VLAN 10 отсутствует.. Именно к этой VLAN и подключены неработающие компьютеры. Посмотрим на настройки конкретных портов доступа, к которым подключены компы. 

Выполните команду show interface fa0/4 switchport:

Отображение настроек порта коммутатора

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

Почему сеть не работает разобрались. Теперь разберемся в самой причине произошедшего. 

VLAN могут быть удалены вручную либо автоматически с помощью VTP. Представим, что администратор не допускал ошибок и не удалил случайно VLAN 10. Остается VTP.  

Однако обновления VTP передаются только по магистральным каналам, как стало возможным, что между новым коммутатором сразу установилась магистральная связь? 

Все порты коммутатора по умолчанию находятся в режиме Dynamic Auto. И если порт подключенного коммутатора будет в режиме Dynamic Desirable или ON, то между ними установится магистраль. И это приведет к вышеописанным последствиям. 

Подключенный коммутатор содержал конфигурацию VLAN/VTP, которая отличалась от текущей конфигурации, причем номер ревизии VTP  на этом коммутаторе оказался выше, чем на работающем коммутаторе. Поэтому работающий коммутатор принял неактуальные конфигурацию и перезаписал все VLAN настройки в соответствии с настройками на подключенном коммутаторе. 

Есть один маленький нюанс. Пока на VTP сервере не определен домен он не будет рассылать обновления всем остальным коммутаторам. Однако, если к сети VTP подключить любой VTP сервер с доменом и более высоким номером ревизии, то на всех коммутаторах все VLAN настройки будут изменены в соответствии с настройками данного сервера. 

Ниже даются краткие рекомендации к настройкам VLAN/VTP: 

    • Всегда отключайте или переводите в режим Access все незадействованные порты
    • VTP настраивайте с паролем и доменом
    • Там, где должен быть только trunk, настраивайте статический trunk
    • При подключении нового коммутатора к сети удалите все VTP настройки. 

Для удаления настроек VTP переведите режим в Transparent, удалите файл vlan.dat во Flash памяти и перезагрузите коммутатор.

 

Пример 3

Дана сеть:

Схема сети с четырьмя коммутаторами

Сетевой администратор решил использовать VTP. Коммутатор А является сервером, однако почему-то  коммутатор C не синхронизируются с сервером. Все остальные коммутаторы синхронизированы.

Отображение настроек VLAN коммутора A

Отображение настроек VLAN коммутаора C

 

 
Решение

В данном случае проблем могут быть 2:

    • Транк на всех портах коммутатора С не установился
    • Проблемы с настройками VTP на коммутаторе С

 Настройки транка проверяются с помощью следующих двух команд: 

show interfaces trunk 

show interfaces fastethernet номер_интерфейса switchport

 

Предположим, что транк включен. Проверим настройки VTP на всех коммутаторах командой show vtp status:

Отображение состояния протокола VTP на коммутаторе А

Отображение состояния протокола VTP на коммутаторе C

Отображение состояния протокола VTP на коммутаторе B

 

На первый взгляд все выглядит одинаково, однако, если взглянуть на MD5 хэш, то выяснится, что на коммутаторе С он отличаются от хэш на всех остальных  коммутаторах:

Отображение хэш MD5 протокола VTP

Отображение хэш MD5 протокола VTP

Отображение хэш MD5 протокола VTP

 Это означает только одно - пароли не совпадают. В этом легко убедиться с помощью команды:

Switch# show vtp password