...
SNMP (англ. Simple Network Management Protocol — простой протокол сетевого управления) — протокол, предназначенный для управления устройствами в IP-сетях на основе архитектур TCP/UDP. SNMP предоставляет данные для управления в виде переменных, описывающих конфигурацию управляемой системы.
Алгоритм настройки
Шаг | Описание | Команда | Ключи |
|---|---|---|---|
1 | Включить SNMP-сервер. | esr(config)# snmp-server | |
2 | Определить community для доступа по протоколу SNMPv2c. | esr(config)# snmp-server [ encrypted ] community <COMMUNITY> [ <TYPE> ] | encrypted – при добавлении данного параметра ввод названия сообщества <COMMUNITY> требуется производить в зашифрованном виде. <COMMUNITY> – сообщество для доступа по протоколу SNMP; <TYPE> – уровень доступа:
<IP-ADDR> – IP-адрес клиента, которому предоставлен доступ, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]; <IPV6-ADDR> – IPv6-адрес клиента, задаётся в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF]; <OBJ-GROUP-NETWORK-NAME> – имя профиля IP-адресов, от которых обрабатываются snmp-запросы, задаётся строкой до 31 символа; <VERSION> – версия snmp, поддерживаемая данным community, принимает значения v1 или v2c; <VIEW-NAME> – имя профиля SNMP view, задаётся строкой до 31 символа; <VRF> – имя экземпляра VRF, из которого будет разрешен доступ, задается строкой до 31 символа. encrypt – при добавлении данного параметра название сообщества <COMMUNITY> будет отображаться в конфигурации устройства в зашифрованном виде. |
3 | Устанавливает значение переменной SNMP, содержащей контактную информацию. | esr(config)# snmp-server contact <CONTACT> | <CONTACT> – контактная информация, задается строкой до 255 символов. |
4 | Установить значение кода DSCP для использования в IP-заголовке исходящих пакетов SNMP-сервера (не обязательно). | esr(config)# snmp-server dscp <DSCP> | <DSCP> – значение кода DSCP, принимает значения в диапазоне [0..63]. Значение по умолчанию: 63. |
5 | Cоздать SNMPv3-пользователь. | esr(config)# snmp-server user <NAME> | <NAME> – имя пользователя, задаётся строкой до 31 символа. |
6 | Устанавливает значение переменной SNMP, содержащей информацию о расположении оборудования. | esr(config)# snmp-server location <LOCATION> | <LOCATION> – информация о расположении оборудования, задается строкой до 255 символов. |
7 | Определить уровень доступа пользователя по протоколу SNMPv3. | esr(config-snmp-user)# access <TYPE> | <TYPE> – уровень доступа:
|
8 | Определить режим безопасности пользователя по протоколу SNMPv3. | esr(config-snmp-user)# authentication access <TYPE> | <TYPE> – режим безопасности:
|
9 | Определить алгоритм аутентификации SNMPv3-запросов. | esr(config-snmp-user)# authentication algorithm <ALGORITHM> | <ALGORITHM> – алгоритм шифрования:
|
10 | Установить пароль для аутентификации SNMPv3-запросов. | esr(config-snmp-user)# authentication key ascii-text | <CLEAR-TEXT> – пароль, задаётся строкой от 8 до 16 символов;
<ENCRYPTED-TEXT> – зашифрованный пароль размером от 8 байт до 16 байт (от 16 до 32 символов) в шестнадцатеричном формате (0xYYYY...) или (YYYY...). |
11 | Активировать фильтрацию и установить профиль IP-адресов, с которых могут приниматься SNMPv3-пакеты с данным именем SNMPv3-пользователя. | esr(config-snmp-user)# client-list <NAME> | <NAME> – имя ранее сознанной object-group, задается строкой до 31 символа. |
| 12 | Указать vrf для SNMPv3-пользователя (не обязательно). | esr-21(config-snmp-user)# ip vrf forwarding <VRF> | <VRF> – имя экземпляра VRF, из которого будет разрешен доступ, задается строкой до 31 символа. |
13 | Активировать фильтрацию и установить IPv4/IPv6-адрес, которому предоставлен доступ к маршрутизатору под данным SNMPv3-пользователем. | esr(config-snmp-user)# ip address <ADDR> | <ADDR> – IP-адрес клиента, которому предоставлен доступ, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
esr(config-snmp-user)# ipv6 address <ADDR> | <IPV6-ADDR> – IPv6-адрес клиента, задаётся в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF]. | ||
14 | Активировать SNMPv3-пользователя. | esr(config-snmp-user)# enable | Значение по умолчанию: процесс выключен. |
15 | Определить алгоритм шифрования передаваемых данных. | esr(config-snmp-user)# privacy algorithm <ALGORITHM> | <ALGORITHM> – алгоритм шифрования:
|
16 | Установить пароль для шифрования передаваемых данных. | esr(config-snmp-user)# privacy key ascii-text | <CLEAR-TEXT> – пароль, задаётся строкой от 8 до 16 символов; <ENCRYPTED-TEXT> – зашифрованный пароль размером от 8 байт до 16 байт (от 16 до 32 символов) в шестнадцатеричном формате (0xYYYY...) или (YYYY...). |
17 | Установить профиль snmp view, позволяющий разрешать или запрещать доступ к тем или иным OID для user. | esr(config-snmp-user)# view <VIEW-NAME> | <VIEW-NAME> – имя SNMP view профиля, на основании которого обеспечивается доступ к OID, задается строкой до 31 символа. |
18 | Включить передачу SNMP-уведомлений на указанный IP-адрес и перейти в режим настройки SNMP-уведомлений. | esr(config)# snmp-server host | <IP-ADDR> – IP-адрес, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. <IPV6-ADDR> – IPv6-адрес, задаётся в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF]; <VRF> – имя экземпляра VRF, в котором находится коллектор SNMP-уведомлений, задается строкой до 31 символа. |
19 | Определить порт коллектора SNMP-уведомлений на удаленном сервере (не обязательно). | esr(config-snmp-host)# port <PORT> | <PORT> – номер UDP-порта, указывается в диапазоне [1..65535]. Значение по умолчанию: 162. |
| 20 | Установить IP-адрес для отправки уведомлений на удаленный сервер. | esr(config-snmp-host)# source-address { <ADDR> | <IPV6-ADDR> | object-group <NETWORK_OBJ_GROUP_NAME> } | <ADDR> – IP-адрес, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]; <IPV6-ADDR> – IPv6-адрес, задаётся в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF]; <NETWORK_OBJ_GROUP_NAME> – список адресов, которые будут использоваться в качестве source address. Значение по умолчанию: IPv4/IPv6 – адрес интерфейса, ближайшего к удаленному SNMP-серверу. |
| 21 | Установить интерфейс или туннель маршрутизатора, IPv4/IPv6-адрес которого будет использоваться для отправки уведомлений на удаленный сервер. | esr(config-snmp-host)# source-interface { <IF> | <TUN> } | <IF> – имя интерфейса устройства, задаётся в виде, описанном в разделе <TUN> – имя туннеля устройства, задаётся в виде, описанном в разделе |
22 | Разрешить отправку SNMP-уведомлений различных типов. | esr(config)# snmp-server enable traps <TYPE> | <TYPE> – тип фильтруемых сообщений. Может принимать значения: config, entry, entry-sensor, environment, envmon, files-operations, flash, flash-operations, interfaces, links, ports, screens, snmp, syslog. Дополнительные параметры зависят от типа фильтра. См. справочник команд CLI. |
23 | Создать профиль snmp view, позволяющий разрешать или запрещать доступ к тем или иным OID для community (SNMPv2) и user (SNMPv3). | esr(config)# snmp-server view <VIEW-NAME> | <VIEW-NAME> – имя профиля SNMP view, задаётся строкой до 31 символа. |
Пример настройки
Задача:
Настроить SNMPv3-сервер с аутентификацией и шифрованием данных для пользователя admin. IP-адрес маршрутизатора ESR – 192.168.52.8, IP-адрес сервера – 192.168.52.41.
...
| Блок кода |
|---|
esr(config)# snmp-server user admin |
| Scroll Pagebreak |
|---|
Определим режим безопасности:
...
| Блок кода |
|---|
esr(config-zabbix-agent)# timeout 30 esr(config-zabbix-agent)# enable |
| Scroll Pagebreak |
|---|
Пример настройки zabbix-server
| Информация |
|---|
Перед настройкой необходимо убедиться, что сервер и агент используют синхронизированное время UTC c учетом локальных часовых поясов. |
Создадим узел сети:
| Scroll Pagebreak |
|---|
Создадим скрипт (Администрирование -> Скрипты -> Создать скрипт)
| Scroll Pagebreak |
|---|
Маршрутизаторы ESR поддерживают выполнение следующих привилегированных следующих привилегированных команд:
Ping
Блок кода zabbix_agentd -t "command.ping[ domain.local -c 15]"
Клиент (ESR), получивший данную команду от сервера, выполнит ping до заданного узла и вернет результат серверу.
Примечание Использование ключа "-c" с указанием количества пакетов в тесте — обязательно. Без данного ключа команда ping не остановится самостоятельно и тест не будет считаться завершенным.
Ping в VRF
Блок кода zabbix_agentd -t "command.ping_vrf[Backup, -c 15]"
Вышеупомянутая команда будет выполнена в заданном VRF с именем "Backup".
Fping
Блок кода zabbix_agentd -t "command.fping[192.168.32.101]"
Клиент (ESR), получивший данную команду от сервера, выполнит fping до заданного узла (в нашем примере до 192.168.32.101) и вернет результат серверу.
Fping в VRF
Блок кода zabbix_agentd -t "command.fping_vrf[Backup, domain.local]"
Команда будет выполнена в заданном VRF с именем "Backup".
Traceroute
Блок кода zabbix_agentd -t "command.traceroute[192.168.32.101]"
Клиент (ESR), получивший данную команду от сервера, выполнит traceroute до заданного узла (в нашем примере до 192.168.32.101) и вернет результат серверу.scroll-pagebreak
Traceroute в VRF
Блок кода zabbix_agentd -t "command.traceroute_vrf[VRF, 192.168.32.101]"
Iperf
Блок кода zabbix_agentd -t "command.iperf[-c 192.168.32.101 -u -t 5 -i 1]"
Клиент (ESR), получивший данную команду от сервера, выполнит iperf до заданного сервера (в нашем примере до 192.168.32.101) и вернет результат серверу.
Iperf3
Блок кода zabbix_agentd -t "command.iperf3[-c 192.168.32.101 -t 5 -i 1]"
Iperf в VRF
Блок кода zabbix_agentd -t "command.iperf_vrf[VRF, -c 192.168.32.101 -t 5 -i 1]"
Scroll Pagebreak Iperf3 в VRF
Блок кода zabbix_agentd -t "command.iperf3_vrf[VRF,-c 192.168.32.101 -t 5 -i 1 ]"
Nslookup
Блок кода zabbix_agentd -t "command.nslookup[domain_name.local]"
Клиент (ESR), получивший данную команду от сервера, выполнит nslookup и вернет результат серверу.
Nslookup в VRF
Блок кода zabbix_agentd -t "command.nslookup_vrf[VRF,domain_name.local]"
Пример выполнения команды nslookup:
...
Шаг | Описание | Команда | Ключи |
|---|---|---|---|
1 | Включить отправку syslog-сообщений на snmp-сервер в виде snmp-trap. | esr(config)# syslog snmp | |
| 2 | Активировать или деактивировать отправку на snmp-сервер событий работы отдельных процессов маршрутизатора (не обязательно). | esr(config-syslog-snmp)# match [not] process-name <PROCESS-NAME> | <PROCESS-NAME> – см. в cправочнике команд CLI. Если описаны разрешающие критерии (match process-name) – логируются только сообщения указанных процессов. Если указаны запрещающие критерии (match not process-name) – логируются сообщения всех не запрещенных процессов. По умолчанию разрешено логирование сообщений всех процессов. |
| 3 | Указать уровень важности сообщений, которые будут отправляться на snmp-сервер. | esr(config-syslog-snmp)# severity <SEVERITY> | <SEVERITY> – уровень важности сообщения, принимает значения (в порядке убывания важности):
|
4 | Включить отображение syslog-сообщений при удаленных подключениях (Telnet, SSH) (не обязательно). | esr(config)# syslog monitor | |
| 5 | Активировать или деактивировать отображение при удаленных подключениях событий работы отдельных процессов маршрутизатора (не обязательно). | esr(config-syslog-monitor)# match [not] process-name <PROCESS-NAME> | <PROCESS-NAME> – описано во 2 пункте. |
| 6 | Указать уровень важности сообщений, которые будут отображаться при удаленных подключениях. | esr(config-syslog-monitor)# severity <SEVERITY> | <SEVERITY> – описано в 3 пункте. |
| 7 | Включить отображение syslog-сообщений при консольном подключении (не обязательно). | esr(config)# syslog console | |
| 8 | Активировать или деактивировать отображение при консольном подключении событий работы отдельных процессов маршрутизатора (не обязательно). | esr(config-syslog-console)# match [not] process-name <PROCESS-NAME> | <PROCESS-NAME> – описано во 2 пункте. |
| 9 | Указать уровень важности сообщений, которые будут отображаться при консольном подключении. | esr(config-syslog-console)# severity <SEVERITY> | <SEVERITY> – описано в 3 пункте. |
| 10 | Указать категорию сообщений, которые будут сохраняться в локальный syslog-файл или отправляться на удаленный syslog-сервер. | esr(config)# syslog facility <FACILITY> | <FACILITY> – категория сообщений, принимает значения [local0..local7]. |
11 | Включить сохранение сообщений syslog в указанный файл журнала (при необходимости ведения локального syslog-файла). | esr(config)# syslog file <NAME> | <NAME> – имя файла, в который будет производиться запись сообщений заданного уровня, задается строкой до 31 символа. |
| 12 | Активировать или деактивировать сохранение в локальный syslog-файл событий работы отдельных процессов маршрутизатора (не обязательно). | esr(config-syslog-file)# match [not] process-name <PROCESS-NAME> | <PROCESS-NAME> – описано во 2 пункте. |
| 13 | Указать уровень важности сообщений, которые будут сохраняться в локальный syslog-файл. | esr(config-syslog-file)# severity <SEVERITY> | <SEVERITY> – описано в 3 пункте. |
14 | Указать максимальный размер файла журнала (не обязательно). | esr(config)# syslog file-size <SIZE> | <SIZE> – размер файла, принимает значение [10..10000000] Кбайт. |
15 | Задать максимальное количество файлов, сохраняемых при ротации (не обязательно). | esr(config)# syslog max-files <NUM> | <NUM> – максимальное количество файлов, принимает значения [1.. 1000]. |
16 | Включить передачу сообщений syslog на удаленный syslog-сервер (при необходимости отправки сообщений на удаленный syslog-сервер). | esr(config)#syslog host <HOSTNAME> | <HOSTNAME> – наименование syslog-сервера, задаётся строкой до 31 символа. Используется только для идентификации сервера при конфигурировании. Значение «all» используется в команде no syslog host для удаления всех syslog-серверов; |
17 | Указать, что использовать в качестве значения поля HOSTNAME при передачи сообщений на удаленный syslog-сервер (не обязательно). | esr(config-syslog-host)# identifier { fqdn | ip | hostname } | fqdn – использовать в качестве значения полное имя устройства: hostname.domain_name. Используется только вместе с настроенным domain name; ip – использовать в качестве значения IP-адрес интерфейса устройства. Если не указан source-address, то в качестве значения будет использован IP-адрес интерфейса, за которым находится удаленный syslog-сервер; hostname – использовать в качестве значения имя устройства. |
| 18 | Указать IPv4/IPv6-адрес удаленного syslog-сервера. | esr(config-syslog-host)# remote-address { <ADDR> | <IPV6-ADDR> } | <ADDR> – IP-адрес, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]; <IPV6-ADDR> – IPv6-адрес, задаётся в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF]. |
| 19 | Указать IPv4/IPv6-адрес маршрутизатора, от которого будут отправляться пакеты на удаленный syslog-сервер (не обязательно). | esr(config-syslog-host)# source-address { <ADDR> | <IPV6-ADDR> | object-group <NETWORK_OBJ_GROUP_NAME> } | <ADDR> – IP-адрес, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]; <IPV6-ADDR> – IPv6-адрес, задаётся в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF]; <NETWORK_OBJ_GROUP_NAME> – список адресов, которые будут использоваться в качестве source address; Значение по умолчанию: IPv4/IPv6-адрес интерфейса, с которого отправляется пакеты на удаленный syslog-сервер. |
| 20 | Указать транспортный протокол для передачи пакетов на удаленный syslog-сервер (не обязательно). | esr(config-syslog-host)# transport { tcp | udp } | <VRF> – имя экземпляра VRF, в котором доступен удаленный syslog-сервер, задается строкой до 31 символа; Значение по умолчанию: отсутствует (глобальная таблица маршрутизации). |
| 21 | Указать имя экземпляра VRF, в рамках которого будут отправляться пакеты на удаленный syslog-сервер (не обязательно). | esr(config-syslog-host)# vrf <VRF> | |
| 22 | Указать номер TCP/UDP-порта, на который будут отправляться пакеты с syslog-сообщениями (не обязательно). | esr(config-syslog-host)# port <PORT> | <PORT> – номер TCP/UDP-порта, на который будут отправляться пакеты с syslog-сообщениями. Значение по умолчанию: 514. |
| 23 | Активировать или деактивировать отправку на удаленный syslog-сервер событий работы отдельных процессов маршрутизатора (не обязательно). | esr(config-syslog-host)# match [not] process-name <PROCESS-NAME> | <PROCESS-NAME> – описано во 2 пункте. |
| 24 | Указать уровень важности сообщений, которые будут сохраняться в локальный syslog-файл. | esr(config-syslog-host)# severity <SEVERITY> | <SEVERITY> – описано в 3 пункте. |
25 | Включить вывод отладочных сообщений во время загрузки устройства (не обязательно). | esr(config)#syslog reload debugging | |
26 | Включить процесс логирования введенных команд пользователя на локальный syslog-сервер (не обязательно). | esr(config)# syslog cli-commands | |
27 | Включить нумерацию сообщений (не обязательно). | esr(config)#syslog sequence-numbers | |
28 | Включить точность даты сообщений до миллисекунд (не обязательно). | esr(config)#syslog timestamp msec | |
| 29 | Включить отображение имени процесса, который сформировал сообщение (не обязательно). | esr(config)#syslog program-name | |
30 | Включить регистрацию неудачных аутентификаций (не обязательно). | esr(config)#logging login on-failure | |
31 | Включить регистрацию изменений настроек системы аудита (не обязательно). | esr(config)#logging syslog configuration | |
32 | Включить регистрацию изменений настроек пользователя (не обязательно). | esr(config)#logging userinfo |
...
| Якорь | ||||
|---|---|---|---|---|
|
...
Основной этап конфигурирования:
Создаем Создадим файл на маршрутизаторе для системного журнала, уровень сообщений для журналирования – info:
| Блок кода |
|---|
esr(config)# syslog file tmpsys:syslog/ESR esr(config-syslog-file)# severity info esr(config-syslog-file)# exit |
| Scroll Pagebreak |
|---|
Указываем Укажем IP-адрес и параметры удаленного syslog-сервера:
| Блок кода |
|---|
esr(config)# syslog host SERVER esr(config-syslog-host)# remote-address 192.168.52.41 esr(config-syslog-host)# severity info esr(config-syslog-host)# exit |
Задаем Зададим логирование неудачных попыток аутентификации:
| Блок кода |
|---|
esr(config)# logging login on-failure |
Задаем Зададим логирование изменений конфигурации syslog:
| Блок кода |
|---|
esr(config)# logging syslog configuration |
Задаем Зададим логирование старта/остановки системных процессов:
| Блок кода |
|---|
esr(config)# logging service start-stop |
Задаем Зададим логирование внесений изменений в профиль пользователей:
...
| Блок кода |
|---|
esr# verify filesystem Filesystem Successfully Verified |
...
Настройка архивации конфигурации маршрутизатора
...
| Блок кода |
|---|
esr(config-archive)# time-period 1440 |
...
Включить режимы архивации конфигурации маршрутизатора по таймеру и при успешном изменении конфигурации:
...


