Если взять кусок патч-корда и воткнуть оба хвоста в один коммутатор, то получится петля. И в целом петля на порте коммутатора или сетевой карты — зло. Но если постараться, то и этому явлению можно найти полезное применение, например сделать сигнализацию с тревожной кнопкой.
INFO
- Rx и Tx — обозначения Receive и Transmit на схемах (приём и передача).
- Loop — англ. петля, контур, шлейф, виток, спираль.
Типичная сеть состоит из узлов, соединенных средой передачи данных и специализированным сетевым оборудованием, таким как маршрутизаторы, концентраторы или коммутаторы. Все эти компоненты сети, работая вместе, позволяют пользователям пересылать данные с одного компьютера на другой, возможно в другую часть света.
Коммутаторы являются основными компонентами большинства проводных сетей. Управляемые коммутаторы делят сеть на отдельные логические подсети, ограничивают доступ из одной подсети в другую и устраняют ошибки в сети (коллизии).
Петли, штормы и порты — это не только морские термины. Петлей называют ситуацию, когда устройство получает тот же самый сигнал, который отправляет. Представь, что устройство «кричит» себе в порт: «Я здесь!» — слушает и получает в ответ: «Я здесь!». Оно по-детски наивно радуется: есть соседи! Потом оно кричит: «Привет! Лови пакет данных!» — «Поймал?» — «Поймал!» — «И ты лови пакет данных! Поймал?» — «Конечно, дружище!»
Вот такой сумасшедший разговор с самим собой может начаться из-за петли на порте коммутатора.
Такого быть не должно, но на практике петли по ошибке или недосмотру возникают сплошь и рядом, особенно при построении крупных сетей. Кто-нибудь неверно прописал марштуры и хосты на соседних коммутаторах, и вот уже пакет вернулся обратно и зациклил устройство. Все коммутаторы в сети, через которые летают пакеты данных, начинает штормить. Такое явление называется широковещательным штормом (broadcast storm).
Меня удивил случай, когда установщик цифрового телевидения вот так подсоединил патч-корд (рис. 1). «Куда-то же он должен быть воткнут...» — беспомощно лепетал он.
Хакер #156. Взлом XML Encryption
Однако не всё так страшно. Почти в каждом приличном коммутаторе есть функция loop_detection, которая защищает устройство и его порт от перегрузок в случае возникновения петли.
Настраиваем коммутаторы
Перед тем как начинать настройку, необходимо установить физическое соединение между коммутатором и рабочей станцией.
Существует два типа кабельных соединений для управления коммутатором: соединение через консольный порт (если он имеется у устройства) и через порт Ethernet (по протоколу Telnet или через web-интерфейс). Консольный порт используется для первоначального конфигурирования коммутатора и обычно не требует настройки. Для того чтобы получить доступ к коммутатору через порт Ethernet, устройству необходимо назначить IP-адрес.
Web-интерфейс является альтернативой командной строке и отображает в режиме реального времени подробную информацию о состоянии портов, модулей, их типе и т. д. Как правило, web-интерфейс живет на 80 HTTP-порте IP-коммутатора.
Настройка DLink DES-3200
Для того чтобы подключиться к НТТР-серверу, необходимо выполнить перечисленные ниже действия с использованием интерфейса командной строки.
- Назначить коммутатору IP-адрес из диапазона адресов твоей сети с помощью следующей команды:
DES-3200# config ipif System \ ipaddress xxx.xxx.xxx.xxx/yyy.yyy.yyy.yyy.
Здесь xxx.xxx.xxx.xxx — IP-адрес, yyy.yyy.yyy.yyy. — маска подсети.
- Проверить, правильно ли задан IP-адрес коммутатора, с помощью следующей команды:
DES-3200# show ipif
- Запустить на рабочей станции 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.
Базовая конфигурация коммутатора
При создании конфигурации коммутатора прежде всего необходимо обеспечить защиту от доступа к нему неавторизованных пользователей. Самый простой способ обеспечения безопасности — создание учетных записей для пользователей с соответствующими правами. Для учетной записи пользователя можно задать один из двух уровней привилегий: Admin или User. Учетная запись Admin имеет наивысший уровень привилегий. Создать учетную запись пользователя можно с помощью следующих команд CLI:
DES-3200# create account admin/user <username>
(знак «/» означает ввод одного из двух параметров)
После этого на экране появится приглашение для ввода пароля и его подтверждения: «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).
Обожми один конец кабеля стандартно, а при обжиме второго замкни жилы 2 и 6, а также 1 и 3. Если жилы имеют стандартную расцветку, надо замкнуть оранжевую с зеленой, а бело-оранжевую с бело-зеленой. Смотри рис. 3.
Теперь, если воткнешь такой «хвостик» в порт коммутатора или в свою же сетевую карту, загорится зелёненький сигнал 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' <= 1 ) then
# Указываем путь, где лежит snmp
set snmpdir = "/usr/local/bin/"
set community = "public"
# Строка snmp
set snmpcmd = "-t1 -r1 -Oqv -c $community -v1 -Cf "
set mib_stat = "IF-MIB::ifOperStatus.$2"
set uid = "$1"
set fl = '0'
# Запускаем цикл проверки порта
while ( "$fl" == '0' ).
set nowstatus = '$snmpdir/snmpget $snmpcmd $uid
$mib_stat | sed 's/up/1/;s/down/0/;/Wrong/d''
if ( "$nowstatus" == 1 ) then
echo 'Hello World'
# Отправляем сообщение на e-mail
echo "Сработала красная кнопка! Hello World!" |
sendmail -f[от_кого_отправлено] [кому_отправляем]
endif
sleep 10
end
endif
exit
Скрипт запускается с помощью следующей строки:
./script.csh IP_коммутатора номер_порта.
Что привязать к обработчику событий, зависит уже от твоей фантазии. Может, это будет счетчик гостей, или тревожная кнопка, рассылающая сообщения в аське, или кнопка для отключения всех юзеров в сети — решать тебе!
Сигнализация обрыва витой пары
Я решил собрать аппаратную петлю после того, как в моей локальной сети украли несколько мешков витой пары. Встал серьезный вопрос: как мониторить витую пару?
Идея проста: надо проложить витую пару от коммутатора до подъезда и на конце замкнуть её в петлю. Это будет «растяжка», при обрыве которой исчезнет линк на порте коммутатора. Останется написать обработчик, который бы «трубил во все трубы», что линк исчез, то есть витую пару кто-то разрезал.
Чуть не забыл! В конфигурации коммутатора необходимо снять защиту loop_detection с порта, на котором установлена «растяжка».
Впрочем, ты можешь придумать петле и другое применение. Удачи!