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 Interface
Firmware: 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 : 1500 IP 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
И так, теперь, когда железка доступна для подключения не только локального, но и удалённого, вынесем работу из гудящей и холодной серверной в кресло администратора, приняв меры, в то-же время, к обеспечению безопасности соединения. А точнее: дополним сетевую конфигурацию, заведём на коммутаторе административный аккаунт, инициируем 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% функционала устройства.
Источник http://www.umgum.com/dlink-base-dgs-3620-cli