Базовая конфигурация D-Link DGS-3620¶
Базовая конфигурация D-Link DGS-3620 ( Базовая конфигурация управляемого стекируемого, с поддержкой функциональности Layer3, коммутатора D-Link DGS-3620 )¶
Hard: D-Link DGS-3620-28TC Gigabit Ethernet Switch.
Задача: базовая настройка управляемого коммутатора, с использованием "интерфейса командной строки" (CLI). Под "базовой" я понимаю настройку минимально необходимого функционала с попутным явным отключением всего не задействованного и могущего внести смущение в умах.
На свежеиспечённый коммутатор можно зайти как минимум тремя способами:
- подключившись к любому клиентскому Ethernet-порту, обращаясь по IP-адресу 10.90.90.90/8;
- подключившись к специальному Ethernet-порту, предназначенному для управления устройством, обращаясь по IP-адресу 192.168.0.1/24;
- подключившись к "консольному" порту RS-232 специальным кабелем DB-9 имеющим на сторону устройства разъём типа RJ-45.
Мне ближе последний вариант, подключение к "консольному" порту - он работает вне зависимости от текущей сетевой конфигурации устройства.
Рекомендованные производителем параметры подключения к "консольному" порту следующие:
terminal - "VT 100+"; speed - 115200 baud; parity - none; data bits - 8; stop bit - 1; sofware flow control - none; hardware flow control - none.
Запускаем программу "терминального" клиента:
$ cu -l /dev/ttyS0 -s 115200 DGS-3620-28TC Gigabit Ethernet Switch Command Line InterfaceFirmware: Build 1.00.040 Copyright(C) 2011 D-Link Corporation. All rights reserved.
DGS-3620-28TC:admin#
Просто нажимаем пару раз "Enter", проходя этапы ввода логина и пароля, и вот, мы можем просмотреть текущую конфигурацию устройства:
show switch¶
Device Type : DGS-3620-28TC Gigabit 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.016 Firmware Version : Build 1.00.040 Hardware Version : A1 Firmware Type : EI Serial Number : Serial System Name : System Location : System Uptime : 0 days, 0 hours, 42 minutes, 50 seconds System Contact : Spanning Tree : Disabled GVRP : Disabled IGMP Snooping : Disabled MLD Snooping : Disabled RIP : Disabled RIPng : Disabled DVMRP : Disabled PIM : Disabled PIM6 : Disabled OSPF : Disabled OSPFv3 : Disabled BGP : Disabled VLAN Trunk : Disabled Telnet : Enabled (TCP 23) Web : Enabled (TCP 80) SNMP : Disabled SSL Status : Disabled SSH Status : Disabled 802.1X : Disabled Jumbo Frame : Off CLI Paging : Enabled MAC Notification : Disabled Port Mirror : Disabled SNTP : Disabled DHCP Relay : Disabled DNSR Status : Disabled VRRP : Disabled HOL Prevention State : Enabled Syslog Global State : Disabled Single IP Management : Disabled Password Encryption Status : Disabled DNS Resolver : Disabled
Приступим к конфигурированию как таковому.На всякий случай явно отключаем автоматическую настройку с помощью DHCP и получение конфигурации с TFPD-сервера:
disable autoconfig¶
Назначим свой IP-адрес:
config ipif System ipaddress 192.168.1.2/24 state enable¶
Отключим ненужный нам пока функционал поддержки протокола IPv6:
config ipif System ipv6 state disable¶
Удостоверимся в том, что изменения приняты:
show ipif¶
IP Interface : System VLAN Name : default Interface Admin State : Enabled DHCPv6 Client State : Disabled IPv4 Address : 192.168.1.2/24 (Manual) Primary Proxy ARP : Disabled (Local : Disabled) IP Directed Broadcast : Disabled IPv4 State : Enabled IPv6 State : Disabled IP MTU : 1500IP Interface : mgmt_ipif Status : Enabled IP Address : 192.168.0.1 Subnet Mask : 255.255.255.0 Gateway : 0.0.0.0 Link Status : Link Down
Total Entries: 2
Обратите внимание на то, что "shell" устройства регистро-чувствительный, в частности, имя интерфейса "System" так и вводится, с большой буквы, в то время как другие операнды и операторы - с маленькой.Задаём маршрут по умолчанию, необходимый для обеспечения доступности управляющего функционала коммутатора:
create iproute default 192.168.1.1 1¶
Удостоверимся, что маршрут верно задан:
show iproute static¶
IP Address/Netmask Gateway Cost Protocol Backup Weight Status ------------------ ----------- ---- -------- ------- ------ -------- 0.0.0.0/0 192.168.1.1 1 Default Primary None Inactive Проверим, достижим ли с коммутатора какой-нибудь удалённый ресурс:
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
И так, теперь, когда железка доступна для подключения не только локального, но и удалённого, вынесем работу из гудящей и холодной серверной в кресло администратора, приняв меры, в то-же время, к обеспечению безопасности соединения. А точнее: дополним сетевую конфигурацию, заведём на коммутаторе административный аккаунт, инициируем 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¶
Задаём пароль для повышения уровня привилегий, перехода "enable":
config admin local_enable¶
Создаём парочку административных аккаунтов:
create account admin superadmin¶
create account admin trivialadmin¶
Enter a case-sensitive new password:******** Enter the new password again for confirmation:******** Success.
Когда придёт в голову сменить пароль, делаем это так:
config account trivialadmin¶
Удостоверимся, что аккаунты созданы в том виде, как нам было угодно:
show account¶
Username Access Level ------------ ------------ superadmin Admin trivialadmin Admin
Велим коммутатору шифровать сохранённые в энергонезависимой памяти пароли:
enable password encryption¶
Включаем поддержку доступа к устройству по протоколу SSH:
enable ssh¶
Отключаем поддержку небезопасного протокола доступа к устройству Telnet:
disable 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¶
Отдельно явно разрешаем использование протокола шифрования трафика SSH:
config ssh algorithm RSA enable¶
Сохраняем всё, и настройки и журнал событий, в энергонезависимую память:
save all¶
Перезагружаем коммутатор:
reboot¶
Теперь идём на своё рабочее место и подключаемся к устройству используя для этого протокол SSH.Первым делом стоит подкорректировать настройки портов. Такие "железки", как стекируемые гигибитные коммутаторы обычно не на тривиальный клиентский доступ берутся. Например, у нас они применяются на связке пула серверов виртуализации и пачки серверов распределённой сетевой файловой системы оптической магистралью в 20Gbps. Подключаемое оборудование оснащено сетевыми интерфейсами поддерживающими всё и даже гораздо более того, на что способны эти коммутаторы; потому конфигурация портов фиксировано задаётся пиковой. Например таким образом:
config ports 1-24 medium_type copper speed 1000_full slave flow_control enable state enable¶
config ports 25-28 medium_type fiber speed auto state enable¶
Здесь мы предписали портам навязывать свою конфигурацию клиенту, задав скоростные характеристики в 1Gbps с полным дуплексом, предлагая аппаратный контроль потока передаваемых данных и выделили четыре "оптических" SFP-порта для связи с другими коммутаторами.Очень желательно явно выставлять параметры интерфейсов, предназначенных для связи между коммутаторами и маршрутизаторами. На моей практике неоднократно наблюдались огромные, до 30%-40% потери пакетов из-за того, что оборудование не могло договорится о режимах работы в автоматической конфигурации.Следует иметь в виду, что у D-Link при конфигурировании "гигабитных" "медных" портов нужно явно указывать, какая сторона ведущая, а какая ведомая. В частности, если этот коммутатор "ведущий" (master), что на втором "гигабитные" порты должны быть инициированы как "ведомые" (slave), например:
config ports 21,22 medium_type copper speed 1000_full master flow_control enable state enable¶
Устройство мощное, энергии потребляет немало и разработчики добавили ему функционал энергосбережения. Явно задаём режимы энергосбережения коммутатора, позволяя ему отключать питание неиспользуемых портов (раз в секунду проверяя их активность) и деактивируем функцию корректировки мощности сигнала на порту в зависимости от длинны кабеля до партнёра (опасаюсь потенциальных проблем с калибровкой):
config power_saving state enable length_detection disable¶
Далее следует чуть подкорректировать общие настройки, имеющие отношение к обеспечению условий коммутации.Иногда бывает полезно огорчить любителей повесить на порт нашего коммутатора свой коммутатор и нацеплять за ним кучу незарегистрированного оборудования. Можно явно указать не принимать запросы на порту более чем с одного MAC:
config port_security ports 1-20 admin_state enable max_learning_addr 1 lock_address_mode DeleteOnTimeout¶
В нашем случае такие ограничения не имеют смысла, так что будет полезнее явно их отключить:
config port_security ports 1-28 admin_state disable¶
Для отлова "петель" в сети коммутации используем специализированный функционал коммутатора, регулярно посылающий тестовый пакет обнаружения "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¶
Где: recover_timer - время (в секундах), в течение которого порты будут отключены; 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 пакеты не откидываются полностью, а лишь понижаются в приоритете при обработке.
Считаю полезным воспользоваться функциональностью отслеживания и обхода состояния HOL (Head-of-line blocking), блокировки FIFO буфера исходящей очереди интерфейса пакетами входящей очереди "медленного" или просто сбоящего интерфейса при том, что в ту же исходящую очередь направляются пакеты входящей очереди гораздо более "быстрого" интерфейса. Активируем механизм, справляющийся с проблемами HOL:
enable hol_prevention¶
Далее - общесистемные мелочи.Велим коммутатору отправлять на удалённый сервер данные своего журнала событий:
enable syslog¶
create syslog host 4 ipaddress 192.168.12.12 severity critical 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¶
Отключим поддержку протокола PTP (Precision Time Protocol), протокола сверхточной синхронизации времени для промышленных сетей:
disable ptp¶
Далее отключим то, что не подпадает под понятие базовой настройки.Отключаем перенаправление DHCP запросов на целевой сервер и функционал встроенного DHCP-сервера как такового:
disable dhcp_local_relay¶
disable dhcp_relay¶
disable dhcpv6_relay¶
disable dhcp_server¶
disable dhcpv6_server¶
Отключаем подсистему разрешения доменных имён DNS, как невостребованную на уровне коммутации:
disable dnsr¶
disable dns_resolver¶
Отключаем SNMP:
delete snmp community public¶
delete snmp community private¶
disable snmp traps¶
disable snmp authenticate_traps¶
config rmon trap rising_alarm disable falling_alarm disable¶
Отключаем систему уведомления SNMP сервера о изменении MAC клиента на портах:
disable mac_notification¶
Отключим поддержку рассылки "самопроизвольного ARP" (Gratuitous ARP) (применяется для определения конфликтов IP-адресов в сегменте сети: как только интерфейс инициирует адрес, рассылается ARP-ответ без запроса):
disable gratuitous_arp trap log¶
Отключим функционал IMPB (IP-MAC-Port Binding), позволяющий контролировать доступ в сеть на основе связки IP, MAC и порта подключения:
disable address_binding trap_log¶
disable address_binding dhcp_snoop all¶
disable address_binding nd_snoop¶
Явно отключим поддержку контроля трафика на основе MAC-адресов (MAC-based ACL):
disable mac_based_access_control¶
Отключаем поддержку протокола STP и вспомогательного протокола PDU (Bridge Protocol Data Unit) управления сетевыми мостами:
disable stp¶
disable bpdu_protection¶
Отключаем поддержку протокола ERPS (Ethernet Ring Protection Switching), использующегося для исключения образования колец в топологии (может применяться как замена семейству протоколов STP):
disable erps¶
Отключаем протокол оповещения и сбора информации о соседнем оборудовании LLDP (Link Layer Discovery Protocol) (свободная замена таким протоколам, как: Cisco Discovery Protocol, Extreme Discovery Protocol, Foundry Discovery Protocol или Nortel Discovery Protocol). Вещь полезная, но не особо нужная до понимания целесообразности применения:
disable lldp¶
Отключаем богатый и полезный, но не нужным нам пока, функционал CFM (Connectivity Fault Management, 802.1ag) предоставляющий возможности наблюдения, поиска и устранения неисправностей в сетях Ethernet, позволяя контролировать соединение, изолировать проблемные участки сети и идентифицировать клиентов, к которым применялись ограничения в сети:
disable cfm¶
Отключаем функционал единого адреса для стека коммутаторов:
disable sim¶
Отключаем функционал объединения нескольких коммутаторов в "стек" (Stacking):
config stacking_mode disable¶
Отключаем авторизацию клиентов на портах:
disable 802.1x¶
Отключаем инкапсуляцию тегов VLAN в теги VLAN второго уровня:
disable qinq¶
Если к коммутатору не подключены VoIP-телефоны Cisco со встроенным мини-свичём, изолирующим VoIP-трафик путём тегирования с помощью 802.1q, то отключим функционал распознавания вторичного VoiceVLAN на портах:
disable voice_vlan¶
Явно отключаем управление "мульткастом", если он не используется:
disable igmp_snooping¶
disable igmp_snooping multicast_vlan¶
disable igmp_proxy¶
disable mld_snooping¶
disable mld_snooping multicast_vlan¶
disable mld_proxy¶
Отключаем поддержку "независимого от протокола мультикаста" PIM (Protocol Independent Multicast) (называется протоколо-независимым, потому что базируется на традиционных маршрутных протоколах, вроде BGP, вместо того, чтобы создавать собственную сетевую топологию):
disable pim¶
disable pim6¶
Отключаем поддержку ещё одного специфичного протокола "мультикаста" DVMRP (Distance Vector Multicast Routing Protocol - протокол дистанционно-векторной многоадресной маршрутизации):
disable dvmrp¶
Раз уж мы занялись искоренением ненужной нам функциональности маршрутизации - погасим поддержку динамической маршрутизации и для "Layer 3".Отключим поддержку BGP (Border Gateway Protocol):
disable bgp¶
Отключим поддержку OSPF (Open Shortest Path First):
disable ospf¶
disable ospfv3¶
Отключим поддержку RIP (Routing Information Protocol):
disable rip¶
disable ripng¶
Отключаем поддержку протокола ECMP (Equal-Cost Multi-Path). ECMP работает совместно с протоколами маршрутизации, такими как RIP и OSPF, и позволяет установить несколько равноценных маршрутов для передачи данных:
disable ecmp ospf¶
Отключаем поддержку VRRP (Virtual Router Redundancy Protocol) - сетевого протокола, предназначенного для увеличения доступности маршрутизаторов выполняющих роль шлюза по умолчанию путём объединения группы маршрутизаторов в один виртуальный маршрутизатор:
disable vrrp¶
Если коммутатор только коммутирует, а не занимается туннелированием, то отключаем поддержку L2PT (Layer 2 Protocol Tunneling). L2PT позволяет передавать инкапсулированные блоки данных протокола (PDU) "Layer 2", таких, как STP (Spanning Tree Protocol), CDP (Cisco Discovery Protocol), VTP (VLAN Trunking Protocol), PAgP (Port Aggregation Protocol), LACP или UDLD (UniDirectional Link Detection):
disable l2protocol_tunnel¶
Отключаем зеркалирование портов (применяется для мониторинга и сбора статистики). Различают две технологии SPAN (Switch Port Analyzer в терминологии Cisco). SPAN работает в пределах одного коммутатора, а RSPAN (Remote Switch Port Analyzer) может зеркалировать и передавать трафик между коммутаторами. Если я верно понял, D-Link называет SPAN как "mirror";
disable mirror¶
disable rspan¶
Отключаем поддержку sFlow (стандарт для мониторинга компьютерных сетей). Насколько я понял, sFlow является открытым отраслевым стандартом и продвигается в качестве замены "цисковского" NetFlow:
disable sflow¶
Явно отключаем поддержку "Jumbo Frame", "сверхдлинных Ethernet-кадров", до понимания сферы применения:
disable jumbo_frame¶
Напоследок рекомендую отключить "web"-интерфейс и связанные с ним подсистемы контроля доступа WAC (Web-based Access Control):
disable web¶
disable ssl¶
disable wac¶
disable jwac¶
Сохраняем конфигурацию:
save all¶
CLI предоставляет достаточно инструментария для контроля и мониторинга устройства, например:
show error ports 1-20¶
show ports¶
show traffic control¶
show utilization ports¶
show arpenrty¶
show packet ports 1-24¶
В общем, все. Теперь можете приступать к чтению руководства администратора от разработчиков коммутатора, что бы осмыслить, как освоить оставшиеся здесь неосвещёнными 90% функционала устройства.