береженого кольт бережет
береженого кольт бережет

Базовая конфигурация 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% функционала устройства.