Как найти петлю в локальной сети?

21.11.2021 | Категория Информационная безопасность

Дисклеймер: Мы не несем ответственность за Ваши действия и не призываем Вас к каким-либо действиям! Все материалы взяты с открытых источников, опубликованы для образовательных целей. 

Оглавление

  1. Широковещательный шторм в состоянии петли
  2. Методы предотвращения
  3. Создание широковещательного шторма (петли)
  4. LLMNR
  5. Анализ последствий

1. Широковещательный шторм в состоянии петли

Петля (или кольцо) в локальной сети — это ситуация, при которой часть информации от коммутатора не рассылается по компьютерам, а кочует по двум параллельным маршрутам, как бы замыкающимся в кольцо.

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

Для большего понимания простейшая схема петли представлена ниже.

  • Рис.1 Пример петли в локальной сети 
  • Рис. 2 Пример топологии сети  
  • Пример топологии, рассматриваемой сети, изображен на рисунке 2.

Компьютер ПК-1 отправляет кадр (frame) по сети через коммутатор компьютеру ПК-N. Коммутатор получает кадр и в таблицу коммутации заносит адрес компьютера ПК-1 с портом. Коммутатор не знает где расположен порт получателя кадра, кроме порта, из которого этот кадр был получен.

Соответственно, кадр получает ПК-N и получает виртуальный коммутатор GNS3 (далее будет подробно показано, как реализовать виртуальную сеть с помощью GNS3). Виртуальный коммутатор GNS3, который расположен в ПК-N, производит аналогичные действия.

Компьютеры расположенные в локальной сети получают несколько кадров — один от коммутатора локальной сети, другой от виртуального коммутатора. Одновременно с этим, копию кадра от коммутатора локальной сети получает виртуальный коммутатор GNS3.

Так как для виртуального коммутатора копия является “новым” кадром, то он производит стандартный процесс коммутации кадра. Тем самым происходит бесконечное циркулирование кадра между сегментами сети.

2. Методы предотвращения

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

3. Создание широковещательного шторма (петли)

Рассмотрим проблему создания петли в сетевом программном эмуляторе GNS3. GNS3 позволяет комбинировать виртуальные и реальные устройства, используемые для моделирования сложных сетей.

Он использует программное обеспечение эмуляции Dynamips для имитации Cisco IOS. Для создания петли воспользуемся одним из способов подключения GNS3 к реальной физической сети.

Этот способ возможен, если компьютер подключен к коммутатору (к локальной сети). Схема изображена на рисунке 3. 

  1. Рис. 3 Схема соединения 2 хостов и 1 коммутатора
  2. У хостов в качестве интерфейса указываем “nio_gen_eth:Ethernet N”.

Перед этим проведем анализ трафика в сети с помощью ПО Wireshark (рис. 3). 

Рис.4 Анализ трафика в сети с помощью Wireshark

В среднем в сети проходит 5-10 пакетов в секунду. Основной пакет — это LLMNR,  который в последствии будет являться причиной нарушения работоспособности коммутатора. Сначала стоит разобрать сам протокол LLMNR.

4. LLMNR

LLMNR, англ. Link-Local Multicast Name Resolution — протокол стека TCP/IP, основанный на формате пакета данных DNS, который позволяет компьютерам выполнять разрешение имен хостов в локальной сети.

Для LLMNR выделены порты 5355/UDP и 5355/TCP, в IPv4 выделен широковещательный адрес 224.0.0.

252 и MAC-адрес 01-00-5E-00-00-FC, в IPv6 — FF02:0:0:0:0:0:1:3 (сокращённая запись — FF02::1:3) и MAC-адрес 33-33-00-01-00-03. 

Рис. 5 Структура заголовка пакета LLMNR

Служба LLMNR (Link-Local Multicast Name Resolution) позволяет организовать одноранговое разрешение имен в пределах одной подсети для IPv4, IPv6 или обоих видов адресов сразу без обращения к серверам, на что не способны ни DNS, ни WINS. WINS предоставляет как клиент-серверную, так и одноранговую службу разрешения имен, но не поддерживает адреса IPv6.

DNS, с другой стороны, поддерживает оба тина адресов, но требует наличия серверов. Разрешение имен LLMNR, работает для адресов IPv6 и IPv4 в тех случаях, когда другие службы разрешения имен недоступны, например, в домашних сетях, в небольших предприятиях, во временных сетях или  корпоративных сетях, где по каким-то причинам недоступны DNS-службы.

Поскольку трафик LLMNR не проходит через маршрутизаторы, вы не рискуете случайно заполнить им сеть.Как и WINS, LLMNR позволяет преобразовать имя хоста в IP-адрес. По умолчанию LLMNR включен на всех компьютерах под управлением Windows. Эти компьютеры прибегают к LLMNR, если попытки узнать имя хоста через DNS окончились неудачей.

В результате, разрешение имен в Windows работает следующим образом:

  1. Хост посылает запрос на первичный DNS-сервер. Если он не получает ответа или получает сообщение об ошибке, он по очереди посылает запросы на все вторичные DNS-серверы. Если и это не помогло, разрешение имени передается LLMNR.
  2. Хост посылает многоадресный UDP-запрос, запрашивая IP-адрес для нужного имени компьютера. Этот запрос идет только по локальной подсети.
  3. Каждый компьютер локальной подсети, поддерживающий LLMNR и сконфигурированный для ответа на поступающие запросы, сравнивает имя со своим хост-именем. Если они не совпадают, компьютер отбрасывает запрос. Если имена совпадают, компьютер пересылает исходному хосту одноадресное сообщение с ІР-адресом.

5. Анализ последствий

Компьютеры с LLMNR должны проверять уникальность своих имен в подсети.

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

Если компьютер еще не проверил уникальность своего имени, он должен указывать это в ответе на запрос. После создания петли в GNS3 (рис. 3), увидим некоторые особенности в Wireshark (рис. 6). 

  • Рис. 6 Количество пакетов в сети 
  • Рис. 7 Загруженность пропускной способности канала передачи 
  • Рис. 8 Отключение сетевых дисков №1 и №2 
  • Рис. 9 Анализ трафика с помощью Wireshark после создания петли

После создании петли сразу же в сети наблюдается рост количества пакетов к экспоненциальному росту их числа и парализует работу сети. Это состояние в сети называется широковещательный шторм. Широковещательный шторм — лавина широковещательных пакетов (на втором уровне модели OSI — кадров).

Считается нормальным, если широковещательные пакеты составляют не более 10 % от общего числа пакетов в сети.Довольно часто к широковещательному шторму приводят петли в сети при неправильной настройке канального протокола Spanning Tree. Spanning Tree Protocol (STP) — канальный протокол.

Основной задачей STP является устранение петель в топологии произвольной сети Ethernet, в которой есть один или более сетевых мостов, связанных избыточными соединениями.

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

Рассмотрим, создадим и заюзаем аппаратную петлю на порте коммутатора

Если взять кусок патч-корда и воткнуть оба хвоста в один коммутатор, то получится петля. И в целом петля на порте коммутатора или сетевой карты — зло. Но если постараться, то и этому явлению можно найти полезное применение, например сделать сигнализацию с тревожной кнопкой.

INFO

  • Rx и Tx — обозначения Receive и Transmit на схемах (приём и передача).
  • Loop — англ. петля, контур, шлейф, виток, спираль.

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

Все эти компоненты сети, работая вместе, позволяют пользователям пересылать данные с одного компьютера на другой, возможно в другую часть света.

Коммутаторы являются основными компонентами большинства проводных сетей. Управляемые коммутаторы делят сеть на отдельные логические подсети, ограничивают доступ из одной подсети в другую и устраняют ошибки в сети (коллизии).

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

Представь, что устройство «кричит» себе в порт: «Я здесь!» — слушает и получает в ответ: «Я здесь!».

Оно по-детски наивно радуется: есть соседи! Потом оно кричит: «Привет! Лови пакет данных!» — «Поймал?» — «Поймал!» — «И ты лови пакет данных! Поймал?» — «Конечно, дружище!»

Вот такой сумасшедший разговор с самим собой может начаться из-за петли на порте коммутатора.

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

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

Такое явление называется широковещательным штормом (broadcast storm).

Меня удивил случай, когда установщик цифрового телевидения вот так подсоединил патч-корд (рис. 1). «Куда-то же он должен быть воткнут…» — беспомощно лепетал он.

Рис. 1. Синий свитч с петлей на борту
Другие статьи в выпуске:

  • Содержание выпуска
  • Подписка на «Хакер»-60%

Однако не всё так страшно. Почти в каждом приличном коммутаторе есть функция loop_detection, которая защищает устройство и его порт от перегрузок в случае возникновения петли.

Настраиваем коммутаторы

Перед тем как начинать настройку, необходимо установить физическое соединение между коммутатором и рабочей станцией.

Существует два типа кабельных соединений для управления коммутатором: соединение через консольный порт (если он имеется у устройства) и через порт Ethernet (по протоколу Telnet или через web-интерфейс).

Консольный порт используется для первоначального конфигурирования коммутатора и обычно не требует настройки.

Для того чтобы получить доступ к коммутатору через порт Ethernet, устройству необходимо назначить IP-адрес.

Web-интерфейс является альтернативой командной строке и отображает в режиме реального времени подробную информацию о состоянии портов, модулей, их типе и т. д. Как правило, web-интерфейс живет на 80 HTTP-порте IP-коммутатора.

Настройка DLink DES-3200

Для того чтобы подключиться к НТТР-серверу, необходимо выполнить перечисленные ниже действия с использованием интерфейса командной строки.

  1. Назначить коммутатору IP-адрес из диапазона адресов твоей сети с помощью следующей команды:
    DES-3200# config ipif System
    ipaddress xxx.xxx.xxx.xxx/yyy.yyy.yyy.yyy.

    Здесь xxx.xxx.xxx.xxx — IP-адрес, yyy.yyy.yyy.yyy. — маска подсети.

  2. Проверить, правильно ли задан IP-адрес коммутатора, с помощью следующей команды:
    DES-3200# show ipif

  3. Запустить на рабочей станции web-браузер и ввести в его командной строке IP- адрес коммутатора.

Управляемые коммутаторы D-Link имеют консольный порт, который с помощью кабеля RS-232, входящего в комплект поставки, подключается к последовательному порту компьютера. Подключение по консоли иногда называют подключением Out-of-Band. Его можно использовать для установки коммутатора и управления им, даже если нет подключения к сети.

После подключения к консольному порту следует запустить эмулятор терминала (например, программу HyperTerminal в Windows). В программе необходимо задать следующие параметры:

Baud rate: 9,600
Data width: 8 bits
Parity: none
Stop bits: 1
Flow Control: none

При соединении коммутатора с консолью появится окно командной строки. Если оно не появилось, нажми Ctrl+r , чтобы обновить окно.

Коммутатор предложит ввести пароль. Первоначально имя пользователя и пароль не заданы, поэтому смело жми клавишу Enter два раза. После этого в командной строке появится приглашение, например DES-3200#. Теперь можно вводить команды.

Команды бывают сложными, многоуровневыми, с множеством параметров, и простыми, для которых требуется всего один параметр.Введи «?» в командной строке, чтобы вывести на экран список всех команд данного уровня или узнать параметры команды.

Например, если надо узнать синтаксис команды config, введи в командной строке:

DES-3200#config + пробел

Далее можно ввести «?» или нажать кнопку Enter. На экране появится список всех возможных способов завершения команды. Лично я для вывода этого списка на экран пользуюсь клавишей TAB.

Loopback-тест

Базовая конфигурация коммутатора

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

Самый простой способ обеспечения безопасности — создание учетных записей для пользователей с соответствующими правами. Для учетной записи пользователя можно задать один из двух уровней привилегий: Admin или User.

Учетная запись Admin имеет наивысший уровень привилегий. Создать учетную запись пользователя можно с помощью следующих команд CLI:

DES-3200# create account admin/user
(знак «/» означает ввод одного из двух параметров)

После этого на экране появится приглашение для ввода пароля и его подтверждения: «Enter a case-sensitive new password». Максимальная длина имени пользователя и пароля составляет 15 символов. После успешного создания учетной записи на экране появится слово Success. Ниже приведен пример создания учетной записи с уровнем привилегий Admin:

Username «dlink»:
DES-3200#create account admin dlink
Command: create account admin dlink
Enter a case-sensitive new password:****
Enter the new password again for confirmation:****
Success.
DES-3200#

Изменить пароль для существующей учетной записи пользователя можно с помощью следующей команды: DES-3200# config account Ниже приведен пример установки нового пароля для учетной записи dlink:

DES-3200#config account dlink
Command: config account dlink
Enter a old password:****
Enter a case-sensitive new password:****
Enter the new password again for confirmation:****
Success.

Проверка созданной учетной записи выполняется с помощью следующей команды: DES-3200# show account. Для удаления учетной записи используется команда delete account .

Шаг второй. Чтобы коммутатором можно было удаленно управлять через web-интерфейс или Telnet, коммутатору необходимо назначить IP-адрес из адресного пространства сети, в которой планируется использовать устройство. IP-адрес задается автоматически с помощью протоколов DHCP или BOOTP или статически с помощью следующих команд CLI:

DES-3200# config ipif System dhcp,
DES-3200# config ipif System ipaddress
xxx.xxx.xxx.xxx/yyy.yyy.yyy.yyy.

Здесь xxx.xxx.xxx.xxx — IP-адрес, yyy.yyy.yyy.yyy. — маска подсети, System — имя управляющего интерфейса коммутатора.

Шаг третий. Теперь нужно настроить параметры портов коммутатора. По умолчанию порты всех коммутаторов D-Link поддерживают автоматическое определение скорости и режима работы (дуплекса). Но иногда автоопределение производится некорректно, в результате чего требуется устанавливать скорость и режим вручную.

Для установки параметров портов на коммутаторе D-Link служит команда config ports. Ниже я привел пример, в котором показано, как установить скорость 10 Мбит/с, дуплексный режим работы и состояние для портов коммутатора 1–3 и перевести их в режим обучения.

DES-3200#config ports 1-3 speed 10_full learning
enable state enable
Command: config ports 1-3 speed 10_full learning
enable state enable
Success

Команда show ports выводит на экран информацию о настройках портов коммутатора.

Шаг четвертый. Сохранение текущей конфигурации коммутатора в энергонезависимой памяти NVRAM. Для этого необходимо выполнить команду save:

DES-3200#save
Command: save
Saving all settings to NV-RAM… 100%
done.
DES-3200#

Шаг пятый. Перезагрузка коммутатора с помощью команды reboot:

DES-3200#reboot
Command: reboot

Будь внимателен! Восстановление заводских настроек коммутатора выполняется с помощью команды reset.

DES-3200#reset config

А то я знал одного горе-админа, который перезагружал коммутаторы командой reset, тем самым стирая все настройки.

loop_detection для коммутаторов Alcatel
interface range ethernet e(1-24)
loopback-detection enable
exit
loopback-detection enable

loop_detection для коммутаторов Dlink
enable loopdetect
config loopdetect recover_timer 1800
config loopdetect interval 1
config loopdetect mode port-based
config loopdetect trap none
config loopdetect ports 1-24 state enabled
config loopdetect ports 25-26 state disabled

Грамотный админ обязательно установит на каждом порте соответствующую защиту.

Но сегодня мы хотим применить loopback во благо. У такого включения есть замечательное свойство. Если на порте коммутатора имеется петля, устройство считает, что к нему что-то подключено, и переходит в UP-состояние, или, как еще говорят, «порт поднимается». Вот эта-то фишка нам с тобой и нужна.

Loopback

Loop — это аппаратный или программный метод, который позволяет направлять полученный сигнал или данные обратно отправителю. На этом методе основан тест, который называется loopback-тест.

Для его выполнения необходимо соединить выход устройства с его же входом. Смотри фото «loopback-тест».

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

Устраиваем аппаратную петлю

Устроить обратную связь очень просто: соединяется канал приема и передачи, вход с выходом (Rx и Tx).

Таблица 1. Распиновка RJ45

Обожми один конец кабеля стандартно, а при обжиме второго замкни жилы 2 и 6, а также 1 и 3. Если жилы имеют стандартную расцветку, надо замкнуть оранжевую с зеленой, а бело-оранжевую с бело-зеленой. Смотри рис. 3.

Нумерация контактов RJ-45

Теперь, если воткнешь такой «хвостик» в порт коммутатора или в свою же сетевую карту, загорится зелёненький сигнал link. Ура! Порт определил наше «устройство»!

Красная кнопка, или Hello world

Ну куда же без Hello world? Каждый должен хоть раз в жизни вывести эти слова на экран монитора! Сейчас мы с тобой напишем простейший обработчик событий, который будет срабатывать при замыкании красной кнопки. Для этого нам понадобятся только кнопка с двумя парами контактов, работающих на замыкание, витая пара и коннектор. На всякий случай приведу схему красной кнопки (рис. 4).

Схема красной кнопки

Паяльник в руках держать умеешь? Соединяем так, чтобы одна пара контактов замыкала оранжевую жилу с зеленой, а другая — бело-оранжевую с бело-зеленой. На всяких случай прозвони соединение мультиметром.

Все, теперь можно тестировать. Вставь обжатую часть в порт сетевой карты или в порт коммутатора. Ничего не произошло? Хорошо. Нажми кнопку. Линк поднялся? Замечательно!

Сама красная кнопка

Вот листинг простейшего обработчика Hello World на Cshell:

Скрипт на Cshell, генерящий Hello word
#!/bin/csh
# ver. 1.0
# Проверяем, запущен ли процесс в памяти
if ( ‘ps | grep ‘redbut’ | grep -v ‘grep’ | wc -l’

Реально ли найти петлю в локальной сети из неуправляемых коммутаторов?

Локальные сети, построенные в конце 90-х уже, конечно, изжили себя. Однако, их модернизация или полное обновление в некоторых ситуациях просто физически невозможно или финансово нецелесообразно — не позволяет планировка здания, реже — топология сети.

Часто проблемой с «петлей» страдают именно такие сети, которые еще можно встретить с студенческих общежитиях. Так как цены на ремонт или перепланировку общежития на голову выше цены ремонт квартиры. Речь идет не о косметическом ремонте, от которого толку, в общем-то, будет мало.

А капитальный ремонт в текущих реалиях непостижимая цель для наших МОУ.

Для начала разберемся, что же такое петля.

Петля — это правильно не завершенная передача пакета (сигнала), т.е. получатель, которому был адресован пакет его не получает. Так продолжается бесконечно, т.к. пакет маршрутизируется «по кругу» возвращаясь опять в коммутатор, с которого был отправлен. Таким образом эфир засоряется таким безадресным трафиком, который, в свою очередь, мешает прохождению

Cisco тоже делает неуправляемые коммутаторы

Хорошо, если ядро сети построено на хорошем управляемом коммутаторе, вроде Mikrotik, который сообщит (в логах) на каком интерфейсе появилась петля. Есть две основные причины появления петли — сбойный свитч, либо неверно настроенное абонентское устройство, подключенное в общую сеть (например, DHCP-сервер на роутере, использующий широковещательные пакеты). А теперь плохие новости:

В сети, построенной на неуправляемых свитчах, определить местонахождение петли ни аппаратными, ни программными средствами, нельзя!

Знаменитый MikroTik RB951G-2HnD

Единственное, что может помочь — визуальный осмотр всех свитчей в сети. Зачастую проблемное устройство выдает беспорядочная, взбесившаяся индикация на всех портах, но далеко не факт, что это не полезный трафик. «Защиты от дураков» без костылей, в общем-то нет, даже если вы привяжете мак-адрес сетевых карт к IP-адресу, который выставите вручную — это не спасёт от широковещательного запроса.

Решение проблемы простое — стоит обратить свой взор на управляемые свитчи, на которых можно резать ненужный трафик.

Коммутаторы Маршрутизация

Петля в локальной сети: что такое и как найти

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

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

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

С петлей мне пришлось столкнуться в одной средней размеров конторе по долгу службы. Офис там располагался в видавшем виде здании, по-моему, даже частично или полностью деревянном. Сетевое оборудование было соответствующее, поэтому, когда в один не слишком добрый понедельник мне заявили о медленном Интернете, я, поначалу, не придал этому особого значения. Затем отвалились и Интернет, и 1С.

Поняв, что проблема, скорее всего, в неисправности коммутатора или кольце, я отправился в коммутационную. Там меня ждали три неуправляемых D-Link’а (это не оскорбление, а вполне себе термин для коммутатора).

Поначалу я всё же думал на неисправность коммутатора (тем более, что есть у меня субъективное недоверие к D-link). Количество портов трех 24-портовых коммутаторов для небольшого офиса на 10-15 машин было излишним, и оставалось еще от старых-добрых времен, когда компов в сетке было больше.

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

Тогда ко мне и закралась мысль о кольце.

Первым делом я стал проверять, не может ли быть так, что один и тот же патч-корд воткнут обоими концами в один свич. Мне повезло, и такой кабель действительно был. Это вполне могло быть «подарком» предыдущего админа, чем-то не сошедшегося с руководством. Во всяком случае, вряд ли бы кто-то полез к свичам случайно.

Если бы кольцо не было таким явным, мне пришлось бы помучиться. Дело в том, что я выключил коммутатор, и повторного появления кольца нужно было бы подождать. Потом пришлось бы доставать из портов патч-корды и смотреть на реакцию сети. В целом, всё равно всё свелось бы к схеме, нарисованной выше, с её сетевыми розетками и патч-панелями.

Итак, несколько советов как вычислить петлю в локальной сети:

  1. Локализуйте проблему. Падает вся сеть или отдельный участок? Если у одного отдела сеть есть, а у другого нет, то проверяйте коммутатор, раздающий сеть на тот отдел.
  2. Какой тип коммутатора(-ов) используется? Это может быть управляемый коммутатор или неуправляемый. В проблемном участке может быть и смесь из обоих вариантов. В случае с неуправляемым коммутатором придется вычислять проблемный порт методом научного тыка. В управляемом коммутаторе порты можно закрыть через веб-интерфейс.
  3. Проверьте кабели. Скорее всего, дело всё-таки в физическом закольцевании сети. Но может «сдуреть» отдельно взятый порт в коммутаторе или сетевой плате компьютера. Редко, но может встретиться ситуация с дублированием функций DHCP-сервера, когда устройство (роутер, коммутатор или компьютер), которое этого делать не должно, раздаёт остальным некорректные настройки сети. В таком случае выключите DHCP-сервер и попробуйте получить адрес с какого-либо компьютера в проблемном участке сети. Если опасения подтвердились — проверяйте устройства на предмет включения функции DHCP-сервера. В первую очередь, конечно, роутеры и коммутаторы.

На этом, пожалуй, всё, что нужно знать о тактике борьбы с петлями в локальных сетях. Напоследок еще можно дать совет — пользуйтесь управляемым оборудованием. Это существенно облегчает труд системного администратора и позволяет решать ряд проблем, вообще не вставая из-за стола.

Как найти петлю в локальной сети и как её оперативно устранить

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

Как найти такую петлю, мы разберем чуть ниже. Но в целом предугадывать возникновение таких петель не получается. Ее наличие становится видимым, уже когда проявляются признаки зацикливания или когда уже полностью «ложится» вся наша сеть.

Как образуется сетевая петля

Если посмотреть на принцип «сетевой петли», то для большего понимания скажем, что это когда пакет каких-либо данных долго блуждает по одному и тому же маршрутному кругу от коммутатора к коммутатору и никак не может достичь своего конечного получателя.

От этого случается перегрузка сети и она «ложится», так как становится просто перегруженной IP-пакетами, которые не перестают множиться из-за коммуникации между сетевыми устройствами.

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

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

Как определить сетевую петлю по ее признакам

Чтобы найти сетевую петлю, нужно определить ее сначала по ее признакам. Благо, они четко определяемые и заметные. Для начала нужно закрепить 2 определения:

  1. TTL — это временное ограничение жизни сетевого пакета;
  2. IP ID — это и так понятно.

Любой сетевой пакет, пройдя через коммутатор в своем поле TTL, заполучает значение на одну единицу меньше. Так вот, очень уменьшенное значение TTL — это явный признак зацикленной локальной сети.

Потому что низкий TTL объясняется тем, что пакет проходил много раз через маршрутизатор, с каждым разом уменьшаясь. Его нормальное значение обычно не превышает 30.

Уменьшаясь до единицы в сетевой петле, он потом «погибает».

Сетевой широковещательный шторм — это еще один признак того, как найти петлю в локальной сети. По сути это наличие внутри сети большого количества сетевых пакетов с идентичным значениями IP ID. Иногда их количество может переваливать за тысячу.

Как найти сетевую петлю в локальной сети

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

  1. Первое, что нужно сделать, — это определить локальный участок, где происходит зацикливание. Определить нетрудно — там возникают проблемы с Интернетом.
  2. Подберите любой сниффер и можете его запускать для определения зацикленных устройств.
  3. Определите сетевые пакеты, создающие шторм, и отфильтруйте их. Найти их будет несложно — их огромное количество и у многих схожий ID IP.

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

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

И это может быть необязательно в самом коммутаторе, куда доступ ограничен, а просто, к примеру, один из офисных работников конец одного подключенного линка случайно или нет включил в другую интернет-розетку и вуаля — сетевая петля.

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

Discovering Network Loops (Layer 2) with Wireshark

A network loop occurs when there is more than one path exists between the source and destination. Consider the figure below, in which two switches are connected to each other with multiple path. Imagine that Layer 2 loop prevention mechanism is not enabled or is broken on the switches somehow.

The broadcast or multicast frames created by any end point in the network will be received by the switches and flooded out of every port except the port that the frame was received on, creating a layer 2 loop between two switches.

Even if you disconnect every end point from the network, there will still be an infinite broadcast and multicast storm between both switches.

What is broadcast, multicast, unicast and how does it work?

In packet switching network, there are 3 types of frames; broadcast, multicast and unicast.

1. Broadcast Frame

Broadcast is the term used to describe communication where a frame is sent from one end point to all other end points at the same time. In this type of communication, there is only one sender that sends data frames to all connected receivers.

2. Multicast Frame

Multicast is the term used to describe communication where a frame is sent from one end point to one or multiple end points at the same time. In this type of communication, there is only one sender that sends data frame to one or multiple connected receivers.

3. Unicast Frame

Unicast is the term used to describe communication where a frame is sent from one end point to the only one end point. In this type of communication, there is only one sender that sends data frame to one connected receiver.

How does a switch know if a frame is broadcast, multicast or unicast?

It is all about how mac address format is designed. MAC address is 48 bits (6 bytes) unique identifier. Each byte is called an “octet”. See more details below.

source: https://en.wikipedia.org

The first 24 bits (3 bytes) of mac address is called organisationally Unique Identifier (OUI), which identifies a vendor, manufacturer, or other organization. See some OUI below.

  • 00:12:1e: represents Juniper Networks.
  • 00:19:06:  represents Cisco Systems, Inc.
  • 00:1d:60: represents ASUSTek COMPUTER INC.
  • 52:54:00:  represents Realtek.
  • 08:00:27: represent PCS Systemtechnik GmbH.

ALSO READ: Configure and Test FreeRADIUS PAP & CHAP Authentication

Individual/Group (IG) bit is used to differentiate unicast frames from multicast frames. When the bit is set to zero (0), it means it is a unicast frame. When it is set to one (1), it means the frame is a multicast.

The bit is located in the most significant byte of mac address. In the figure above, “b0” is the IG bit.

When it comes to broadcast frames, a special mac address (FF-FF-FF-FF-FF-FF) is used to distinguish broadcast frames from the other traffics.

What are the reasons behind a network loop?

Network loops occur due to many reasons. The most common causes are below.

  • Human error in cabling.
  • Unidirectional link failure in a fiber cable.
  • Buggy spanning tree.
  • Buggy network devices (IP Phones).

As a network administrator, I mostly experience the first and last one.

For learning and testing purpose, the easiest way to create a loop is just disabling spanning tree on the switch and plugging network cable from one port to the other one. But it is a rare case in a network to have that kind of loop.

It happens only with hubs and dummy switches that do not run a spanning tree. A second method to easily create a loop is using buggy IP phones. Here is a list from Cisco: https://quickview.cloudapps.cisco.com/quickview/bug/CSCvd03371

ALSO READ: Analyze TLS and mTLS Authentication with Wireshark

If you have one of the phones in the list, you can create a loop. (I am sure there are some other models that have the bug but not listed there)

When you accidentally plug both PC Port cable and Network Port cable of the phone into the network switch, it’ll cause a network loop that brings down the network.

The reason is that the STP packet sent by the switch through the Network Port gets filtered by the phone.

Since the switch does not get the STP packet back through the PC Port, it will not block that port, leaving the network prone to a broadcast or multicast storm. In a short time, a loop occurs and the network goes down.

How to protect your network from loop?

It actually depends on what kind of equipment you have and what sort of loop prevention mechanisms it has. Protection method commonly used are below.

  • Enabling Storm control
  • Enabling Spanning Tree Protocol (STP, RSTP, MSTP, etc)
  • Enabling the other proprietary loop prevention mechanism

Find a loop with Wireshark

Use “unicast / (broadcast +multicast)” formula which gives you a great idea. Let’s test it on my packets I captured during the loop. We will create a filter (eth.dst.lg == 0) that shows the packets contain IG bit of zero (0), which displays unicast packets. See the details below.

ALSO READ: 100% proven ways to find hidden endpoints [Tutorial]

Number of unicast packets is 510. The number of total packets is 1870829.

Broadcasts + multicast = total packetsunicasts = 1870829-510 = 1870319

As you see both in the screenshot and calculation, unicast packet ratio is pretty low which indicate that a loop has occurred. The number of broadcast and multicast packets can be found with this filter: (eth.dst.lg == 1  ) or (eth.addr == ff:ff:ff:ff:ff:ff)

Header Checksum or Identification fields in IP header can be used to check if a loop has happened.

Since every time both fields change for each packet, when you see multiple the same Header Checksum or Identification field in other packets, you can easily say there has been a loop. Remember that Header Checksum and Identification are 2 bytes fields.

Even if it is low, there is always a chance there would be a collision of the fields. Collision simply means that the same identifier or calculation to be assigned to the different packets.

  • 1) Select a broadcast or multicast packet and go to IP header section.
  • 2) Right click on the “Header Checksum” and a menu appears.
  • 3) Click on “Apply as Colum”

4) Do the same steps for “Identification” filed too.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *