Задача: базовая настройка управляемого коммутатора, с использованием "интерфейса командной строки" (CLI).
Зайти на устройство можно через "консольный" порт (RS-232). Подключаем кабель (DB-9 cable):
Рекомендованные производителем параметры подключения следующие:
terminal - VT 100+;
speed - 9600;
parity - none;
data bits - 8;
stop bit - 1;
sofware flow control - none;
hardware flow control - none.
speed - 9600;
parity - none;
data bits - 8;
stop bit - 1;
sofware flow control - none;
hardware flow control - none.
Запускаем "minicom":
$ minicom --device /dev/ttyS0 --baudrate 9600 --8bit --noinit
Сразу идём в меню настроек утилиты "minicom" для корректировки параметров сеанса связи с коммутатором: "Ctrl+O". Переходим в подменю "Serial port setup". Нажав клавишу "F", выбираем значение "No" для опции "Hardware Flow Control". Подтверждаем выбор и выходим из меню конфигурирования. Готово, мы в коммутаторе:
DES-3028 Fast Ethernet Switch Command Line Interface
Firmware: Build 2.00.B27
Copyright(C) 2008 D-Link Corporation. All rights reserved.
UserName:
Firmware: Build 2.00.B27
Copyright(C) 2008 D-Link Corporation. All rights reserved.
UserName:
Просто нажимаем пару раз "Enter", проходя этапы ввода логина и пароля, и вот, мы можем просмотреть текущую конфигурацию устройства:
# show switch
Device Type : DES-3028 Fast Ethernet Switch
MAC Address : MAC
IP Address : 10.90.90.90 (Manual)
VLAN Name : default
Subnet Mask : 255.0.0.0
Default Gateway : 0.0.0.0
Boot PROM Version : Build 1.00.B06
Firmware Version : Build 2.00.B27
Hardware Version : A2
Serial Number : Serial
System Name :
System Location :
System Contact :
Spanning Tree : Disabled
GVRP : Disabled
IGMP Snooping : Disabled
VLAN trunk : Disabled
802.1x : Disabled
TELNET : Enabled(TCP 23)
WEB : Enabled(TCP 80)
RMON : Disabled
SSH : Disabled
SSL : Disabled
Clipaging : Enabled
Syslog Global State: Disabled
Dual Image : Supported
Password Encryption Status : Disabled
MAC Address : MAC
IP Address : 10.90.90.90 (Manual)
VLAN Name : default
Subnet Mask : 255.0.0.0
Default Gateway : 0.0.0.0
Boot PROM Version : Build 1.00.B06
Firmware Version : Build 2.00.B27
Hardware Version : A2
Serial Number : Serial
System Name :
System Location :
System Contact :
Spanning Tree : Disabled
GVRP : Disabled
IGMP Snooping : Disabled
VLAN trunk : Disabled
802.1x : Disabled
TELNET : Enabled(TCP 23)
WEB : Enabled(TCP 80)
RMON : Disabled
SSH : Disabled
SSL : Disabled
Clipaging : Enabled
Syslog Global State: Disabled
Dual Image : Supported
Password Encryption Status : Disabled
Приступим к конфигурированию как таковому.
На всякий случай явно отключаем автоматическую настройку с помощью DHCP:
# disable autoconfig
Назначим свой IP-адрес:
# config ipif System ipaddress 192.168.1.2/24 state enable
Удостоверимся в том, что изменения приняты:
# show ipif
Interface Name : System
IP Address : 192.168.1.2 (MANUAL)
Subnet Mask : 255.255.255.0
VLAN Name : default
Admin. State : Enabled
Link Status : Link UP
Member Ports : 1-28
IP Address : 192.168.1.2 (MANUAL)
Subnet Mask : 255.255.255.0
VLAN Name : default
Admin. State : Enabled
Link Status : Link UP
Member Ports : 1-28
Обратите внимание на то, что "shell" устройства регистро-чувствительный, в частности, команда "System" так и вводится, с большой буквы, в то время как другие - с маленькой.
Задаём маршрут по умолчанию, необходимый для обеспечения доступности управляющего функционала коммутатора:
# create iproute default 192.168.1.1 1
Удостоверимся, что маршрут верно задан:
# show iproute
IP Address/Netmask Gateway Interface Hops Protocol
------------------ --------------- ----------- ------- --------
0.0.0.0/0 192.168.1.1 System 1 Default
192.168.1.0/24 0.0.0.0 System 1 Local
------------------ --------------- ----------- ------- --------
0.0.0.0/0 192.168.1.1 System 1 Default
192.168.1.0/24 0.0.0.0 System 1 Local
Проверим, достижим ли с коммутатора какой-нибудь удалённый ресурс:
# ping 192.168.12.12 times 4
Reply from 192.168.12.12, time<10ms
Reply from 192.168.12.12, time<10ms
Reply from 192.168.12.12, time<10ms
Ping Statistics for 192.168.12.12
Packets: Sent =4, Received =4, Lost =0
Reply from 192.168.12.12, time<10ms
Reply from 192.168.12.12, time<10ms
Ping Statistics for 192.168.12.12
Packets: Sent =4, Received =4, Lost =0
И так, теперь, когда железка доступна для подключения не только локального, но и удалённого, вынесем работу из гудящей и холодной серверной в кресло администратора, приняв меры, в то-же время, к обеспечению безопасности соединения. А точнее: дополним сетевую конфигурацию, заведём на коммутаторе административный аккаунт, инициируем SSH-сервер и предпишем работать через него.
Отключаем расширенную систему авторизации на устройстве, оставляя локальную базу:
# config authen_login default method local
# config authen_enable default method local_enable
# config authen parameter response_timeout 30
# config authen parameter attempt 5
# disable authen_policy
# config admin local_enable
# config authen_enable default method local_enable
# config authen parameter response_timeout 30
# config authen parameter attempt 5
# disable authen_policy
# config admin local_enable
Создаём парочку административных аккаунтов:
# create account admin superadmin
# create account admin trivialadmin
# create account admin trivialadmin
Enter a case-sensitive new password:********
Enter the new password again for confirmation:********
Success.
Enter the new password again for confirmation:********
Success.
Когда придёт в голову сменить пароль, делаем это так:
# config account trivialadmin
Удостоверимся, что аккаунты созданы в том виде, как нам было угодно:
# show account
Username Access Level
------------------ ------------
superadmin Admin
trivialadmin Admin
------------------ ------------
superadmin Admin
trivialadmin Admin
Велим коммутатору шифровать сохранённые в энергонезависимой памяти пароли:
# enable password encryption
Включаем поддержку доступа к устройству по протоколу SSH:
# enable ssh
TELNET will be disabled when enable SSH.
Success.
Success.
Поддержку менее безопасного протокола доступа Telnet даже отключать не приходится, прошивка устройства не может работать одновременно и с SSH и с Telnet.
Явно указываем, каким образом мы будем проходить проверку подлинности:
# config ssh authmode password enable
Задаём параметры подключения клиента SSH к серверу:
# config ssh server maxsession 3 contimeout 600 authfail 10 rekey never
Вводим заранее созданных пользователей в список допущенных для работы с SSH:
# config ssh user superadmin authmode password
# config ssh user trivialadmin authmode password
# config ssh user trivialadmin authmode password
Отдельно явно разрешаем использование протокола шифрования трафика SSH:
# config ssh algorithm RSA enable
Для самоуспокоения можно пробежаться по настройкам, с помощью команды "show" с соответствующими аргументами удостоверится, что желаемые настройки применены верно. После чего - сохраняем всё, и настройки и журнал событий, в энергонезависимую память:
# save all
Перезагружаем коммутатор:
# reboot
Теперь идём на своё рабочее место и подключаемся к устройству используя для это протокол SSH.
Первым делом стоит подкорректировать настройки портов. Например таким образом:
# config ports 1-24 speed auto flow_control enable state enable
# config ports 25 speed 100_full state enable
# config ports 26,28 speed 1000_full master flow_control enable state enable
# config ports 25 speed 100_full state enable
# config ports 26,28 speed 1000_full master flow_control enable state enable
Здесь мы позволили клиентским портам принимать конфигурацию клиента, предлагая аппаратный контроль потока передаваемых данных, выделили один порт для связи с маршрутизатором на скорости 100 Мегабит с полным "дуплексом" и выделили два "гигабитных" порта для связи с другими коммутаторами.
Очень желательно явно выставлять параметры интерфейсов, предназначенных для связи между коммутаторами и маршрутизаторами. На моей практике неоднократно наблюдались огромные, до 30%-40% потери пакетов из-за того, что оборудование не могло договорится о режимах работы в автоматической конфигурации.
Следует иметь в виду, что у D-Link при конфигурировании "гигабитных" портов нужно явно указывать, какая сторона ведущая, а какая ведомая. В частности, если этот коммутатор "ведущий" (master), что на втором "гигабитные" порты должны быть инициированы как "ведомые" (slave), например:
# config ports 25,27 speed 1000_full slave flow_control enable state enable
Далее следует чуть подкорректировать общие настройки, имеющие отношение к обеспечению условий коммутации.
Чтобы огорчить любителей повесить на порт нашего коммутатора свой коммутатор и нацеплять за ним кучу незарегистрированного оборудования, явно укажем не принимать запросы на порту более чем с одного MAC:
# config port_security ports 1-24 admin_state enable max_learning_addr 1 lock_address_mode DeleteOnTimeout
Естественно, для "транков" ограничение на количество обслуживаемых MAC снимаем:
# config port_security ports 25-28 admin_state disable
Насколько я понял из документации, опция "DeleteOnTimeout" регламентирует периодичность пересмотра таблицы коммутации (Forwarding Database) MAC на портах. Надо полагать (вернее, так сказано в документации, но я мог неверно перевести), что MAC-адрес клиента неактивного порта будет удалён из таблицы и другому MAC-адресу будет позволено работать на нём именно после этого самого пересмотра таблицы. Сменить период пересмотра таблицы можно с помощью соответствующей команды (по умолчанию период составляет 300 секунд):
# config fdb aging_time 120
На случай, если понадобится по быстрому, не дожидаясь истечения "таймаута" разблокировать какой-либо порт, очистив историю использования его клиентам, есть команда, которой мы очистим историю использования для портов со второго по седьмой:
# clear port_security_entry port 2-7
Теперь активируем функционал "Storm Control" для борьбы с клиентами, сорящими "бродкастовыми" и "мультикастовыми" пакетами (зажимаем клиента по максимуму - у нас только традиционные сервисы, не подразумевающие рассылок; в обычной плоской сети реальный "флуд" диагностируется по показателю в 100 Kbs):
# config traffic control 1-24 broadcast enable multicast enable unicast disable action drop threshold 64 countdown 5 time_interval 5
Можно попробовать применить новый функционал D-Link обнаружения и блокирования потенциальных DoS-атак, пока вреда от него я не замечал:
# config dos_prevention dos_type all action drop state enable
# config dos_prevention dos_type tcp_syn_srcport_less_1024 state disable
# disable dos_prevention trap_log
# config dos_prevention dos_type tcp_syn_srcport_less_1024 state disable
# disable dos_prevention trap_log
Типов атак несколько, вместо "all" можно включать и выключать их обнаружение индивидуально:
Land Attack, Blat Attack, Smurf Attack, TCP Null Scan, TCP Xmascan, TCP SYNFIN, TCP SYN SrcPort less 1024
Видно, что выше я отключил обнаружение атак типа "TCP SYN SrcPort less 1024"; не углублялся в суть вопроса, но при активировании этой опции коммутатор воспринимает попытки взаимодействия Linux/BDS/Apple-машины с сетевым принтером как атаку, блокируя передачу данных.
Для отлова "петель" на стороне клиента используем специализированный функционал коммутатора, регулярно посылающий тестовый пакет обнаружения "loopback" (это работает независимо от протокола STP):
# enable loopdetect
# config loopdetect ports 1-24 state enabled
# config loopdetect ports 25-28 state disabled
# config loopdetect recover_timer 180 interval 10
# config loopdetect ports 1-24 state enabled
# config loopdetect ports 25-28 state disabled
# config loopdetect recover_timer 180 interval 10
Где:
recover_timer - время (в секундах), в течение которого порты будут отключены для стимулирования пользователя порта разобраться, "почему не работает";
interval - период (в секундах) между отправкой пакетов обнаружения петли.
interval - период (в секундах) между отправкой пакетов обнаружения петли.
В качестве дополнительной меры обеспечения доступности сервисов, представляемых коммутатором, включим поддержку "Safeguard engine", режима, в котором отбрасываются или отправляются в конец очереди (с пониженным приоритетом) все ARP и "широковещательные" пакеты тогда, когда загрузка процессора возрастёт выше установленного порога:
# config safeguard_engine state enable utilization rising 90 falling 30 trap_log disable mode fuzzy
Где:
rising 90 - процент загрузки процессора, выше которого включается режим "Safeguard engine";
falling 30 - процент загрузки, ниже которого выключается "Safeguard engine";
mode fuzzy - выбираем режим мягкого противодействия нагрузке, когда широковещательные и ARP пакеты не откидываются полностью, а лишь понижаются в приоритете при обработке.
falling 30 - процент загрузки, ниже которого выключается "Safeguard engine";
mode fuzzy - выбираем режим мягкого противодействия нагрузке, когда широковещательные и ARP пакеты не откидываются полностью, а лишь понижаются в приоритете при обработке.
Далее - обще-системные мелочи.
Велим коммутатору отправлять на удалённый сервер данные своего журнала событий:
# enable syslog
# create syslog host 4 ipaddress 192.168.12.12 severity all facility local1 state enable
# create syslog host 4 ipaddress 192.168.12.12 severity all facility local1 state enable
Научим наш коммутатор выспрашивать точное время у соответствующих серверов.
Задаём "часовой пояс":
# config time_zone operator + hour 6 min 0
Отключим перевод на "летнее время":
# config dst disable
Укажем наши сервера точного времени:
# config sntp primary 192.168.12.12 secondary 192.168.0.12 poll-interval 21600
Включим подсистему:
# enable sntp
Далее отключим то, что не подпадает под понятие базовой настройки.
Отключаем подсистему уведомлений о событиях на SMTP-сервер:
# disable smtp
Отключаем SNMP:
# delete snmp community public
# delete snmp community private
# disable snmp traps
# disable snmp authenticate traps
# disable rmon
# delete snmp community private
# disable snmp traps
# disable snmp authenticate traps
# disable rmon
Отключаем систему уведомления SNMP сервера о изменении MAC клиента на портах:
# disable mac_notification
Отключаем протокол оповещения и сбора информации о соседнем оборудовании (свободная замена таким протоколам, как: Cisco Discovery Protocol, Extreme Discovery Protocol, Foundry Discovery Protocol или Nortel Discovery Protocol). Вещь полезная, но в небольшой сети не особо нужная, особенно, если нет понимания целесообразности применения:
# disable lldp
Отключаем перенаправление DHCP запросов на целевой сервер:
# disable dhcp_relay
# disable dhcp_local_relay
# disable dhcp_local_relay
Отключаем зеркалирование портов (применяется для мониторинга и сбора статистики):
# disable mirror
Отключаем поддержку протокола STP:
# disable stp
Отключаем функционал единого адреса для стека коммутаторов:
# disable sim
Отключаем авторизацию клиентов на портах:
# disable 802.1x
Отключаем инкапсуляцию тегов VLAN в теги VLAN второго уровня (сеть у нас маленькая):
# disable qinq
Явно отключаем управление "мульткастом", раз уж он не используется:
# disable igmp_snooping
# disable mld_snooping
# disable mld_snooping
Сохраняем конфигурацию:
# save all
Можно побродить по "web"-интерфейсу коммутатора. Уж не знаю, что там можно было наворотить, но "сайт" успешно завешивает Google Chrome (Linux); браузер начинает беспрерывно перезапрашивать один из "фреймов" панели управления, потребляя при этом половину ресурсов компьютера и не отображая при этом ничего, кроме аляповатого рисунка коммутатора на мозаичном фоне в стиле Web-0.9. Хорошо хоть Firefox (Linux) справился. Первым делом рекомендую забанить анимированную, очень детализированную, с искорками, вертящимися вокруг стилизованного земного шара, картинку-логотип в фрейме меню управления; лично у меня на "нетбуке" после этого обороты вентилятора сразу упали со средних до нулевого уровня.
Рекомендую отключить "web"-интерфейс:
# disable web
# disable ssl
# disable ssl
CLI предоставляет достаточно инструментария для контроля и мониторинга устройства, например:
# show error ports 1-24
Port Number : 2
RX Frames TX Frames
--------- ---------
CRC Error 0 Excessive Deferral 0
Undersize 0 CRC Error 0
Oversize 0 Late Collision 0
Fragment 1 Excessive Collision 0
Jabber 0 Single Collision 0
Drop Pkts 0 Collision 0
RX Frames TX Frames
--------- ---------
CRC Error 0 Excessive Deferral 0
Undersize 0 CRC Error 0
Oversize 0 Late Collision 0
Fragment 1 Excessive Collision 0
Jabber 0 Single Collision 0
Drop Pkts 0 Collision 0
# show ports
Port State/ Settings Connection Address
MDI Speed/Dupl/FlowCtrl Speed/Dupl/FlowCtrl Learning
----- -------- ------------------- ------------------- --------
1 Enabled Auto/Enabled 100M/Full/None Enabled
Auto
2 Enabled Auto/Enabled 100M/Full/802.3x Enabled
Auto
3 Enabled Auto/Enabled 10M/Full/802.3x Enabled
Auto
4 Enabled Auto/Enabled LinkDown Enabled
Auto
5 Enabled Auto/Enabled LinkDown Enabled
Auto
6 Enabled Auto/Enabled 100M/Full/None Enabled
Auto
7 Enabled Auto/Enabled LinkDown Enabled
....
MDI Speed/Dupl/FlowCtrl Speed/Dupl/FlowCtrl Learning
----- -------- ------------------- ------------------- --------
1 Enabled Auto/Enabled 100M/Full/None Enabled
Auto
2 Enabled Auto/Enabled 100M/Full/802.3x Enabled
Auto
3 Enabled Auto/Enabled 10M/Full/802.3x Enabled
Auto
4 Enabled Auto/Enabled LinkDown Enabled
Auto
5 Enabled Auto/Enabled LinkDown Enabled
Auto
6 Enabled Auto/Enabled 100M/Full/None Enabled
Auto
7 Enabled Auto/Enabled LinkDown Enabled
....
# show traffic control
Port Thres Broadcast Multicast Unicast Action Count Time
hold Storm Storm Storm down Interval
−−−− ----- --------- --------- -------- ------- ----- --------
1 64 Enabled Enabled Disabled drop 5 5
2 64 Enabled Enabled Disabled drop 5 5
3 64 Enabled Enabled Disabled drop 5 5
4 64 Enabled Enabled Disabled drop 5 5
5 64 Enabled Enabled Disabled drop 5 5
....
hold Storm Storm Storm down Interval
−−−− ----- --------- --------- -------- ------- ----- --------
1 64 Enabled Enabled Disabled drop 5 5
2 64 Enabled Enabled Disabled drop 5 5
3 64 Enabled Enabled Disabled drop 5 5
4 64 Enabled Enabled Disabled drop 5 5
5 64 Enabled Enabled Disabled drop 5 5
....
# show utilization ports
Port TX/sec RX/sec Util Port TX/sec RX/sec Util
−−−− -------- -------- −−−− −−−− -------- -------- −−−−
1 0 0 0 22 0 0 0
2 0 0 0 23 0 0 0
3 0 0 0 24 0 0 0
4 0 0 0 25 16 19 1
5 0 0 0 26 14 10 1
6 0 0 0 27 0 0 0
7 0 0 0 28 0 1 1
....
−−−− -------- -------- −−−− −−−− -------- -------- −−−−
1 0 0 0 22 0 0 0
2 0 0 0 23 0 0 0
3 0 0 0 24 0 0 0
4 0 0 0 25 16 19 1
5 0 0 0 26 14 10 1
6 0 0 0 27 0 0 0
7 0 0 0 28 0 1 1
....
# show arpenrty
Interface IP Address MAC Address Type
--------- ------------ ----------------- ---------------
System .... FF-FF-FF-FF-FF-FF Local/Broadcast
System .... .... Dynamic
System .... .... Local
System .... FF-FF-FF-FF-FF-FF Local/Broadcast
....
--------- ------------ ----------------- ---------------
System .... FF-FF-FF-FF-FF-FF Local/Broadcast
System .... .... Dynamic
System .... .... Local
System .... FF-FF-FF-FF-FF-FF Local/Broadcast
....
# show packet ports 1-24
Port Number : 16
Frame Size Frame Counts Frames/sec Frame Type Total Total/sec
------------ ------------ ---------- ---------- --------- ---------
64 676290 0 RX Bytes 47389203 0
65-127 34487 0 RX Frames 713350 0
128-255 76 0
256-511 684 0 TX Bytes 1936090115 0
512-1023 1550 0 TX Frames 1330260 0
1024-1518 263 0
Unicast RX 713310 0
Multicast RX 0 0
Broadcast RX 40 0
Frame Size Frame Counts Frames/sec Frame Type Total Total/sec
------------ ------------ ---------- ---------- --------- ---------
64 676290 0 RX Bytes 47389203 0
65-127 34487 0 RX Frames 713350 0
128-255 76 0
256-511 684 0 TX Bytes 1936090115 0
512-1023 1550 0 TX Frames 1330260 0
1024-1518 263 0
Unicast RX 713310 0
Multicast RX 0 0
Broadcast RX 40 0
В общем, все. Теперь можете приступать к чтению "мануалов", чтобы осмыслить, как освоить оставшиеся здесь неосвещёнными 90% функционала устройства.
15 мая 2012 в 02:40
26 мая 2012 в 15:45
17 мая 2012 в 23:11
26 мая 2012 в 15:39
3 октября 2012 в 12:39
3 октября 2012 в 17:51
9 февраля 2013 в 03:24
9 февраля 2013 в 11:12
17 марта 2013 в 23:56
18 марта 2013 в 00:30
15 августа 2014 в 17:21
15 августа 2014 в 17:42
3 июня 2013 в 20:39
12 июня 2013 в 10:47
28 января 2015 в 18:05
28 января 2015 в 20:45
30 января 2015 в 13:29
6 июня 2018 в 11:53
6 июня 2018 в 18:31
24 февраля 2015 в 14:24
24 февраля 2015 в 16:04
7 июля 2016 в 02:42
7 июля 2016 в 12:14