Snmpapp conf что за файл

Обновлено: 06.07.2024

Во-первых, что такое SNMP?

Два, фон SNMP

В-третьих, обзор структуры SNMP

В-четвертых, SNMP поддерживала операцию управления сетью

Пять, структура реализации SNMP

Шестой, техническое содержание SNMP

Семь, история развития SNMP

Восемь, технические условия SNMP

Девять, всеобъемлющие выше (сводка)

Десять, net-snmp подробно

Одиннадцать, SNMP MIB подробно

Примечание, экспериментальная среда CentOS 6,4 x86_64 версия программного обеспечения Net-SNMP 5.5. ( Описание: Некоторые изображения этого поста блога не все содержание на сообществе с открытым исходным кодом и официальным веб-сайтом.

Во-первых, что такое SNMP?

SNMP: «Простое соглашение об управлении сетью» для протоколов управления сетью. SNMP используется для управления сетевыми устройствами. Рабочий режим SNMP: администратор должен получить данные на устройстве, поэтому SNMP предоставляет «чтение» операции; администратор должен выполнить операции настройки к устройству, поэтому SNMP предоставляет «писать» операцию; устройство должно меняться во время важной ситуации, Администратор проинформировал инцидент, поэтому SNMP предоставляет операцию «ловушки».

Основные мысли SNMP: для различных видов оборудования, оборудования, произведенного различными производителями, различными моделями оборудования, определяемые как единый интерфейс и протокол, так что администраторы могут использовать унифицированный внешний вид для облегчения сетевых устройств для управления. Посредством сети администраторы могут управлять устройствами, расположенными в различных физических пространствах, значительно повышают эффективность управления сетью и упрощают сетевые администраторы.

В-третьих, обзор структуры SNMP

SNMP предназначен для работы по протоколу TCP / IP. SNMP работает на основе протокола TCP / IP и управляет устройствами, которые поддерживают протоколы SNMP в сети. Все устройства, которые поддерживают протоколы SNMP, предоставляют интерфейс SNMP Unified Interface, который позволяет администраторам управлять использованием унифицированных операций без необходимости обращать внимание на то, какой тип оборудования производится производитель. Как показано ниже,

s1

В-четвертых, SNMP поддерживала операцию управления сетью

Для управления сетью, данные, которые мы сталкиваемся, - это конфигурация, параметр, состояние и т. Д. Устройство. Операция столкновения считывается и устанавливается; в то же время, потому что есть много сетевых устройств, чтобы получить много сетевых устройств, чтобы получить много сетевых устройств, чтобы получить много сетевых устройств Оборудование во времени, он также требует оборудования активно отчет о важном состоянии, это функция тревоги. Как показано ниже,

s2

Получить: прочитайте информацию о состоянии сетевого устройства.

Набор: Параметры удаленного конфигурации устройства.

Ловушка: Управленческая станция получает важную информацию об оборудовании.

Пять, структура реализации SNMP

В конкретной реализации SNMP предоставляет администратор с платформой управления сетью (NMS), также известный как станция управления, отвечающая за выдачу команд управления сетью, хранения данных и анализа данных. Запустите агент SNMP (Agent) на регулируемом устройстве, агент реализует связь SNMP устройства и станцию ​​управления. Как показано ниже,

s3

A management information base (MIB) is a database used for managing the entities in a communication network. Most often associated with the Simple Network Management Protocol (SNMP), the term is also used more generically in contexts such as in OSI/ISO Network management model.

Управляющая станция объединяется с агентом через MIB, и MIB определяет управляемый объект в устройстве. Управляющая станция и агент реализовали соответствующий объект MIB, так что обе стороны могут определить данные другой стороны для реализации коммуникации. Управляющая станция преобразует данные или параметры, такие как соответствующий статус или параметры, предоставляемые устройством управления к данным, определенным данными, данными или параметрами, предоставляемыми устройством управления на станцию ​​управления, и завершить операцию управления.

Существующее оборудование, вы можете внедрить поддержку сети до тех пор, пока вы добавляете модуль SNMP. Старое оборудование с расширительными слотами, поддерживаем сетевое управление до тех пор, пока установлена ​​карта модуля SNMP. Многие устройства, маршрутизаторы, коммутаторы и т. Д. В сети могут увеличить функцию управления сетью, добавив модуль управления сетью SNMP. Сервер может быть реализован путем запуска процесса управления сетью. Другие продукты уровня обслуживания могут также добиться управления сетью через модуль управления сетью, такими как Oracle, Weblogic имеет процесс SNMP. После запуска вы можете управлять этими услугами уровня системы через станцию ​​управления.

SNMP определяет три роля на основе различных обязанностей в операциях управления сетью в соответствии с руководителями и управляемыми устройствами. Как показано ниже,

s4

Система управления сетью: также известна как станция управления, NMS. Это системная консоль, которая обеспечивает интерфейс администратору для получения информации, такой как конфигурация, информация, состояние, операции, такие как изменение устройства. Управляющая станция связывается с агентом, выполняет соответствующий набор и получать операции, и получает оповещения, отправляемые агентом (ловушкой).

Агент: Agent - это агент по управлению сетевым управлением, ответственным за доставку станции управления и операции SNMP устройства. Интерпретация между станциями управления и устройствами, связывающими с станцией управления и соответствующими станциями управления, получает соответствующие данные с устройства или выполняет соответствующие настройки для устройства для реагирования на запрос станции управления. Агент также должен иметь возможность отправлять доклад на станцию ​​управления на станцию ​​управления, используя ловушку, определенную на устройстве в соответствии с соответствующим состоянием устройства.

Прокси-сервер: Proxy - это специальный агент, который непосредственно использует протокол SNMP, такой как: гетерогенная сеть, разные версии прокси SNMP и т. Д., Прокси заменяет соответствующее устройство для обеспечения внешнего вида на станцию ​​управления, для агента устройства Реализация протокола SNMP. Прокси делает преобразование ксенотрансплантата или разных версий агента и соответствующим запросом данных SNMP. Как показано ниже,

s5

Вложение: Информационная библиотека управления MIB: определяет информацию управления, которая может использоваться на устройстве. Агент и станция управления используют MIB в качестве единой связи интерфейса данных.

Шестой, техническое содержание SNMP

Как показано ниже,

s6

Семь, история развития SNMP

1991 ---- RMON (мониторинг удаленного мониторинга дистанционного сетевого мониторинга), он расширяет функцию SNMP, включая управление локальными локами и управлением устройств, прилагаемых к этим сетям. RMON не модифицировал и увеличивает SNMPV1, просто увеличивая способность подсетей мониторинга SNMP.

1993 ------ SNMPV2 (обновленная версия SNMPV1)

1995 ------- Официальная версия SNMPV2, которая указывает, как использовать SNMP в сети OSI на основе OSI

1995 ------- RMO-расширение RMON2

1998 ------ SNMPV3, серия документов определяет безопасность SNMP и определяет общую структуру будущих улучшений, SNMPV3 можно использовать с SNMPV2, SNMPV1.

Восемь, технические условия SNMP

SNMP: простой протокол управления сетью (простой протокол управления сетью) является стандартом для управления протоколами на основе IP-сети.

MIB: информация о управлении информацией, определяет все параметры, которые можно запрашивать и модифицировать в процессе прокси.

SMI: Структура управления управлением, SMI определяет тип ASN.1, синтаксис, используемый в SNMP и определяет типы, макросы, символы и т. Д., Используемые в SNMP. SMI используется в описании последующего протокола и определения Mib. Каждая версия SNMP может определить свой собственный SMI.

ASN.1: абстрактный синтаксический обозначение один (абстрактное определение синдрома). Используется для определения формального языка синтаксиса, определить блока данных PDU PDU PDU PDU PDU SNMP Protocol PDU и формата MIB в SNMP. SNMP использует только часть ASN.1, а некоторые пользовательские типы и макросы типа определяются с использованием языковых функций ASN.1, что состоит из SMI.

PDU: Блок данных протокола, который является пакетом, передаваемым в сети. Каждый операция SNMP физически физически физически соответствует PDU.

NMS: Система управления сетью, система управления сетью, станция управления сетью AnnAne, называемая «станцией управления». Это общая машина управления SNMP, обеспечивая единый доступ пользовательского интерфейса для поддержки SNMP, который обычно предоставляет интерфейс интерфейса пользовательского интерфейса и имеет статистику, анализ и другие функции и является общей консолью системы управления сетью. NMS - это инициатор операций по управлению сетью.

Агент: Это средство доступа SNMP, называемое «прокси», обеспечивает возможности SNMP для устройства, ответственного за связь с NMS.

Прокси: прокси-сервер, преобразование протокола к устройствам, которые реализуют различные протоколы, могут быть удалены не IP-протоколы.

Ловушка: - это аварийные данные, которые активно выдаются устройством, которое используется для подсказки важное изменение состояния.

Девять, всеобъемлющие выше (сводка)

1. SNMP имеет несколько версий

SNMP имеет три версии V1, V2, V3:

И V1, и V2 имеют базовые функции чтения и записи MIB.

V2 добавляет предупреждение, объемное приобретение данных, управленческую станцию ​​и возможности связи управления станцией.

V3 добавляет USM, используя зашифрованные технологии данных и пользовательских технологий аутентификации, улучшает безопасность.

Кроме того, RMON - это важное расширение SNMP, добавление трафика подсети, статистики и аналитики для SNMP. Две версии существующих версий: RMON: предоставляет возможности мониторинга слоя сетевого уровня и каналов в семислойной структуре сети OSI. RMON2: обеспечивает возможности мониторинга по слоям сети в сетевом уровне в семислойной сети OSI семислойной сети.

2.ansn.1, BER, SMI, MIB, отношения PDU

s7

ASN.1: Усовершенствованные данные Описание языка. Опишите тип, структуру, организацию и кодировку данных. Включает в себя две части: символы и синтаксис. SNMP использует ASN.1, чтобы описать библиотеку информации об объекте PDU и Management и MIB.

BER: основное правило кодирования ASN.1. Опишите конкретный объект ASN.1 Как кодировать битовый поток для передачи в сети. SNMP использует BER в качестве схемы кодирования, данные сначала передают через кодировку BER, а затем отправляются получателю через протокол транспортного уровня (одна сторона). После получения PDU через порт SNMP конкретные данные операции SNMP получают после декодирования BER.

SMI: это описание метода SNMP. Указано с использованием подтипа ASN.1, символ. ASN.1 мощный, но SNMP использует небольшую часть только небольшую часть, и объем ограничен описанием этой части, то есть SMI. SMI определяет использование типа ASN.1, макрос, символ и т. Д. SMI - это подмножество и начало ASN.1.

MIB: - это библиотека информации управления, используемая в SNMP. Формат данных, тип, порядок, значение и т. Д. Используйте тип, определенный в SMI, а базовый тип в ASN.1, чтобы описать объект, является описанием библиотеки управления информацией управления, используя SMI. У каждого класса есть группа MIB, таких как дерево MIB в сетевом интерфейсе, TCP имеет дерево MIB, а УДП также имеет дерево MIB.

PDU: это блок данных протокола SNMP. PDU является основным форматом связи с использованием описания ASN.1, используйте кодировку BER для передачи через протокол транспортного уровня.

3. Сравнить спецификацию SNMP фон

В качестве технологии перехода SNMP широко используется в его простых и простых в использовании характеристик, и используемый сетевой продукцией поддерживается SNMP. SNMP также расширяет RMON с функциями удаленного управления, позволяя менеджерам управлять всей подсетью, а не управлением оборудованием во всей подсети.

1. ВВЕДЕНИЕ TOTET-SNMP

Используйте Net-SNMP в качестве инструмента для изучения SNMP, постройте среду Net-SNMP. Net-SNMP - это проект SNMP с открытым исходным кодом. Последняя версия: 5.7.2. Net-SNMP поддерживает SNMPV1, SNMPV2, SNMPV3, поддерживает приложения IPv4 и IPv6 SNMP.

Net-SNMP предоставляет полный API для приложений SNMP, включая C и Perl API.

Мощный и масштабируемый прокси SNMP: разработчик SNMPD может разработать динамические модули расширенные SNMPD, протокол связи Net-SNMP с главным агентом.

Обеспечить многочисленные инструменты командной строки для проверки и использования протокола SNMP

Графический инструмент просмотра MIB

Процесс приема ловушек для получения и отображения ловушки и записывает ловушку в файл журнала.

2. Установка и настройка Net-SNMP

3. Поддерживаемые платформы

Net-SNMP может быть скомпилирован на операционные системы, такие как BSD Unix, Linux, Windows. Вы можете установить программное обеспечение VMware Virtual Machine под Windows, создайте виртуальную машину, установить Linux на виртуальной машине для изучения.

Приветствую тебя, гость и постоянный читатель. Пришлось в последнее время внедряться в сетевой мониторинг. Очень актуальная тема для мониторинга - SNMP (Simple Network Management Protocol). Часто приходилось использовать SNMP, но руки не доходили до его описания. Сегодня хочу изложить свое понимание данной технологии.

Введение в протокол SNMP

SNMP есть Simple Network Management Protocol, он же Простой Протокол Сетевого Управления. Протокол создан в 1988 г. с целью управления большим количеством сетевых устройств. С того момента протокол набрал соответствующую популярность и стал стандартом. С момента разработки протокол SNMP был 3 раза переработан с версии SNMPv1, SNMPv2 и SNMPv3. На самом деле, версий было больше, например v2 была пересмотрена 2 раза (или даже более). Так же стоит отметить, что кроме SNMP были и другие попытки создать коммерческие и не коммерческие протоколы управления (CORBA, TMN . ) не увенчавшиеся успехом.

Кроме управления устройствами, очень часто всегда SNMP используют для мониторинга. SNMP может получать различную информацию от любых сетевых устройств, будь то роутер, свич или просто компьютер (в которых имеется поддержка данного протокола (читай - запущен агент SNMP). Содержимое получаемой информации может быть очень разнообразно, например: время аптайма, различные счетчики производительности CPU, сети и др., сетевые параметры устройств.

Архитектура протокола SNMP

Сеть, использующая SNMP для управления содержит три основных компонента:

  1. SNMP менеджер - ПО, устанавливаемое на ПК администратора (системы мониторинга)
  2. SNMP агент - ПО, запущенное на сетевом узле, за которым осуществляется мониторинг.
  3. SNMP MIB - MIB это Management information base. Этот компонент системы обеспечивает структурированость данных, которыми обмениваются агенты и менеджеры. По сути - это некая база данных в виде текстовых фалов.

Давайте попытаемся рассмотреть обозначенные компоненты.

SNMP менеджер и SNMP агент

Для понимания назначения компонентов, можно сказать, что SNMP менеджер является прослойкой (интерфейсом) между оператором\администратором и сетевым узлом с запущенным SNMP агентом. Так же, можно сказать, что SNMP агент - это интерфейс между SNMP менеджером и железным оборудованием на сетевом узле. Если провести аналогию протокола SNMP с клиент-серверной архитектурой (например, веб-сервера) то веб-сервер работает как служба на некотором порту, а пользователь силами браузера обращается к веб-серверу как клиент. Это четко обозначенная архитектура с выраженным клиентом и сервером. В случае SNMP роли клиента и сервера несколько размыты. Например, SNMP агент является своего рода службой, работающей на устройстве (за которым производится мониторинг) и обрабатывает запросы на определенном порту udp/161, то есть фактически является сервером. А SNMP менеджер является своего рода клиентом, который обращается к серверу SNMP агенту. В SNMP существует т.н. Trap. Это запрос от агента к менеджеру. Точнее даже не запрос, а уведомление. При отправке данного уведомления, агент и менеджер "меняются ролями". То есть, менеджер в таком случае должен являться сервером, работающем на порту udp/162, а агент является клиентом. В последних версиях SNMP trap может именоваться как извещение (notification).

Агенты, работающие на хостах, собирают информацию об устройствах и записывают собранные счетчики в значения переменных в базу данных MIB. Тем самым делая ее доступной для менеджеров. Давайте рассмотрим схему взаимодействия SNMP-агент - SNMP-менеджер:

архитектрура SNMP

Итак, как я уже сказал, SNMP менеджер отправляет запросы агенту на порт udp/161 (если конфигурационно в агенте не задан другой порт) с произвольного порта из эфемерного диапазона. В запросе SNMP менеджера указывается порт и адрес источника (о полной структуре пакета SNMP опишу ниже). Далее агент принимает пакет и обрабатывает (если выполняются нижеописанные условия). В процессе обработки, формируется ответ, который отправляется на порт взятый из исходного запроса. Ответ отправляется с udp/161 порта. Можно сказать, что SNMP агент таким образом предоставляет доступ SNMP менеджеру к данным, хранящимся в базе MIB. При этом, в момент отправки, SNMP менеджер вставляет в PDU некий ID (RequestID), а агент в ответном PDU вставляет данный ID без изменения, для того чтобы менеджер не путал пакеты от разных агентов. SNMP агент может быть настроен на посылку Trap уведомлений, которую он выполняет с эфимерного порта на udp/162 порт SNMP менеджера.

  • Trap – одностороннее уведомление от SNMP агента –> менеджеру о каком-либо событии.
  • GetReponse – ответ от агента к менеджеру, возвращающий запрошенные значения переменных.
  • GetRequest - запрос к агенту от менеджера, используемый для получения значения одной или нескольких переменных.
  • GetNextRequest - запрос к агенту от менеджера, используемый для получения следующего в иерархии значения переменной.
  • SetRequest - запрос к агенту на установку значения одной или нескольких переменных.
  • GetBulkRequest – запрос к агенту на получение массива данных (тюнингованная GetNextRequest). (Этот PDU был введен в SNMPv2.)
  • InformRequest – одностороннее уведомление между менеджерами. Может использоваться, например для обмена информацией о MIB (соответствие символьных OID - цифровым). В ответ менеджер формирует аналогичный пакет в подтверждение того, что исходные данные получены. (Этот PDU был введен в SNMPv2.)

Как видно, в зависимости от версии протокола, набор команд разный (например InformRequest и GetBulkRequest полноценно появился только во второй версии SNMP). Компонент SNMP MIB рассмотрим ниже.

Структура PDU

Рассмотрение структуры PDU не обязательно, но это поможет более глубоко понять логику работы SNMP. Все PDU (кроме Trap) состоят из определенного набора полей, в которые записывается необходимая информация:

структура пакета SNMP

Что данные поля обозначают:

При этом, содержимое Trap PDU содержит некоторые дополнительные поля (вместо заголовка запроса):

  • Фирма – характеризующее производителя хоста
  • Тип trapуведомления, может быть следующим:
    • 0 (Coldstart) и 1 (Warmstart) – объект возвращен в начальное состояние (между ними имеется некая разница, но какая. ),
    • 2 (Linkdown) – интерфейс опущен, при этом, поле переменной содержит интерфейс о котором идет речь,
    • 3 (Linkup) – интерфейс поднялся, при этом, поле переменной содержит интерфейс о котором идет речь,
    • 4 (Authenticationfailure) – менеджер прислал мессадж с неверной строкой community,
    • 5 (EGPneighborloss) – затрудняюсь что либо сказать ),
    • 6 (Entrprisespecific) – данный тип Trap сообщает о том, что в следующем поле содержится специализированный для данного вендора тип трапа.

    В новых версиях SNMP содержимое Trap PDU может незначительно меняться, но в целом, смысл тот же.

    Логика работы протокола SNMP

    Логика работы SNMP при обмене PDU-единицами

    При получении PDU GetRequest, SNMP агент действует по следующему алгоритму:

    При получении PDU GetNextRequest, SNMP агент действует по следующему алгоритму:

    При получении PDU SetRequest, SNMP агент действует по следующему алгоритму:

    Логика работы SNMP в картинках

    Обмен PDU GET⁄ GET NEXT⁄ GET BULK⁄ SET

    Обмен PDU Trap или notification

    SNMP MIB

    Давайте попробуем понять MIB. Это совсем не люди в черном ) Как я уже сказал, это Management information base, то есть база набор управляющей информации. Каждый сетевой узел, имеющий на своем борту SNMP агента (читай – поддерживающий протокол SNMP) предоставляет свой набор данных, тот, который в него «вложили» программисты\разработчики при проектировании железки\программы. То есть в каждом сетевом устройстве с поддержкой SNMP имеется своя база MIB со строго обозначенным набором переменных. Каждая база MIB имеет древовидную структуру, каждый объект в которой характеризуется уникальным идентификатором объекта (Object Identifier, OID).

    Каждая ветка MIB-иерархии оканчивается некоторой переменной (так же имеющей свой OID), содержащей в себе определенное значение, которое записывается в переменную SNMP агентом, работающем на хосте. Данное значение неким образом характеризует данный хост (например, содержит информацию об аптайме, загрузке сетевого интерфейса и мн.др. параметры).

    Имеется некая единая общая структура дерева MIB, а так же, имеются единые стандарты и принципы дальнейшего формирования данного дерева, его переменных, др. параметров, за эти правила отвечает некий разработанный стандарт под названием Структура Информации Управления (SMI, Structure of Management Information). Так же, имеется некий стандарт, называемый абстрактный синтаксис нотаций - ASN.1. Который тоже участвует в описании протокола SNMP и базы MIB. А еще имеется базовые правила кодирования BER (Basic Encoding Rules), определяющие кодирование сущностей, применяемых в SNMP.

    Кроме того, существует всемирное дерево регистрации стандартов ISO, содержащее базовую структура дерева MIB (точнее этих структур существует несколько, они формировались вместе с совершенствованием версий SNMP). Составное числовое имя объекта SNMP MIB соответствует полному имени этого объекта в дереве регистрации объектов стандартизации ISO. За данную древовидную структуру отвечает и контролирует организация IANA (и некоторые другие).

    Давайте рассмотрим типичное дерево MIB на рисунке:

    Managenent Information base

    Дерево объектов MIB подобно системе DNS (Domain Name System). Тут аналогично имеются символьные имена (аналогично NS имени) и называемые ASN.1 нотацией, и соответствующие им числовые значения (аналогично IP адресам), называемые dot нотацией. Каждый объект в MIB состоит из нескольких чисел, разделенных точками. Числам соответствуют текстовые наименования. При этом, в отличии от DNS - нет какого-то единого централизованного сервера, отвечающего за разолвинг имен. Все разрешения имен из символов в числа происходят силами SNMP менеджера (в зависимости от того, какие сопоставления MIB загружены в менеджер). Весь обмен между узлами SNMP происходит только в числовом виде. В символьном виде, наименования используются только для отображения на экране или в документации.

    Часто OID характеризующий определенный объект в дереве MIB сравнивают со структурой телефонных номеров, т.к. они (номера) так же иерархичны и отдельные части номера назначаются различными организациями. Например, международные телефонные номера состоят из кода страны (назначаемого международной организацией) и телефонного номера в том виде, в котором он определен локально в стране. При этом, телефонный номер в стране делится на код области\края\региона, номер АТС и далее номер абонента, привязанного к АТС. Аналогично - в MIB OID верхнего уровня назначаются международной организацией (ISO IEC . ), ветки OID нижнего уровня назначаются организациями, отвечающими за эти ветки.

    Итак, структура OID в дереве MIB:

    MIB SNMP ветка enterprise

    Ниже структура аналогичная всем остальным разделам – древовидна. В каждом поддереве соответствующий производитель оборудования в праве сам регистрировать свои ветвления и переменные.

    Так же, важным моментом, является то, что любая ветвь базы MIB оканчивается переменной , в которую записывается некоторое значение. При этом, в MIB существует несколько типов переменных. Во-первых, они делятся на переменные «только для чтения» и доступные для изменения, которые не позволяют выполнять запрос SetRequest и позволяют выполнять, соответственно. Во-вторых, имеются строковые переменные, табличные и мн.др., значения которых так же идентифицируются по OID. В целом, если нет желания к программированию для SNMP, то этим пониманием и можно ограничиться.

    Безопасность протокола SNMP (или версии протокола SNMP)

    В одной из вторых версий SNMP (SNMPv2p) была попытка реализовать аутентификацию на основе сторон (т.н.Party-based Security Model). Технология кроме аутентификации, так же поддерживала возможность шифрования трафика. Данная технология не прижилась, как "сложная и запутанная" ) и в данный момент не используется. После чего SNMP второй версии вернулась к Community-based Security и стала именоваться SNMPv2c и применяется по сей день. SNMPv2 была переписана чуть более чем полностью, в результате чего существенно повышено быстродействие протокола, безопасность.

    Третья версия протокола (SNMPv3) была более удачно доработана и поддерживает как аутентификацию на основе имени пользователя (т.н. User-based Security Model), так и шифрование трафика. Хотя их можно и не использовать.

    Версии протокола между собой не совместимы. Несовместимость заключается в разнице пакетов PDU, в наличии дополнительных команд в более новых версиях протокола (возможно, в других…). В RFC 2576 имеется некоторая информация, позволяющая организовать возможность совместного использования SNMPv1 и v2. Для этого есть 2 пути: 1. Использование прокси-агентов (агент преобразует PDU SNMPv2 в PDU SNMPv1), 2. Использование менеджера с поддержкой 2х версий (менеджер для каждого хоста должен помнить версию агента).

    Принципы настройки протокола SNMP

    Для того, чтобы SNMP менеджер мог работать с символьными именами OID (ASN.1 нотация), необходимо подсунуть ему соответствующие файлы SMI и MIB, хранящие соответствия символьной записи и цифровой. Для того чтобы SNMP менеджер мог взаимодействовать с каком-либо агентом, необходимо менеджеру указать на этого агента, для чего задать соответствующие настройки, например:

    • Порт отправки
    • Принимать ли trap
    • community для чтения
    • community для записи
    • период опроса
    • OID’ы

    В большинстве реализаций менеджеров SNMP (в данном контексте, наверно, лучше сказать – систем управления сетью Network Management System) предоставлены некие возможности механизма автоматического обнаружения SNMP агентов. В большинстве случаев это сводится к выполнению по расписанию некоторого скрипта, запускаемого в определенный промежуток времени и опрашивающего заданный диапазон IP адресов.

    SNMP в Linux

    В большинстве дистрибутивов Linux для работы с SNMP используется пакет net-snmp (RedHat) и snmp + snmpd (в Debian в snmp лежит клиентская часть, а в snmpd – серверная часть), который позволяет использовать протокол SNMP посредством отправки и получения PDU. После установки пакета(ов) в linux появятся следующие инструменты (перечислены не все):

    SNMP в Debian

    Политика лицензирования Debian определяет базы MIB, как несвободное ПО, поэтому они не расположены в свободных репозитоиях, а размещены в non-free репозиториях. Для того чтобы базы корректно установились, необходимо данный репозиторий прописать в /etc/apt/sources.list, например:

    и установить пакет snmp-mibs-downloader. (в процессе установки данный пакет попытается получить mib-базы из интернета). Так, же, необходимо в /etc/snmp/snmp.conf закомментировать строку:

    Маленький итог о SNMP

    Итак, в статье я постарался как можно понятней рассказать о SNMP, чтобы применять эту технологию в сетях мониторинга. Подводя краткий итог протокол SNMP базируется на нескольких основных принципах:

    Большую часть рабочего времени системный администратор посвящает сбору точной информации о ваших серверах и инфраструктуре. Существует ряд инструментов и опций для сбора и обработки данных такого типа. Многие из них опираются на технологию, которая называется SNMP.

    SNMP — это простой протокол сетевого управления (simple network management protocol). Это протокол, который серверы используют для обмена информацией о своем текущем состоянии и который также используется в качестве канала, через который администратор может изменять предварительно установленные значения. Хотя сам протокол очень легкий, структура программ, реализующих SNMP, может очень быстро приобретать большую сложность. Дополнительную информацию об основах протокола SNMP см. в нашей статье Знакомство с SNMP.

    С помощью этого руководства вы сможете настроить инструменты для коммуникации, использующие SNMP. Вы будете использовать два сервера Ubuntu 18.04 в демонстрационных целях. Один сервер будет содержать менеджер SNMP, который будет взаимодействовать с агентом для реализации сетевых устройств. Он будет называться сервером менеджера. На другом сервере будет размещаться агент SNMP, который будет выполнять указания, получаемые от менеджера сервера. Он будет называться сервером агента. Вы можете установить агента на сервере менеджера, но рекомендуется разделять их, что упрощает процесс демонстрации того, какой функционал предоставляет каждый компонент.

    Предварительные требования

    Для данного обучающего руководства вам потребуется следующее:

    • Два сервера Ubuntu 18.04, настроенные в соответствии с указаниями обучающего руководства Начальная настройка сервера для Ubuntu 18.04, включая пользователя без прав root с привилегиями sudo и настроенный брандмауэр ufw .

    Шаг 1 — Установка демона и утилит SNMP

    Вы можете начать изучение того, как SNMP можно реализовать в системе, установив демон и инструменты на ваши сервера Ubuntu.

    Из вашего локального компьютера выполните вход на сервер менеджера с помощью вашего пользователя без прав root:

    Обновите индекс пакетов для менеджера пакетов APT:

    Затем установите программное обеспечение SNMP:

    Пакет snmp предоставляет набор инструментов командной строки для отправки запросов SNMP агентам. Пакет snmp-mibs-downloader поможет установить файлы информационной базы управления (MIB), которая отслеживает сетевые объекты, и управлять ими.

    Затем откройте новый терминал на вашем локальном компьютере и выполните вход на сервер агента:

    На сервере агента обновите индекс пакетов:

    Затем установите демон SNMP.

    Обратите внимание, что вам не нужен пакет snmp-mibs-downloader , так как сервер агента не будет управлять файлами MIB.

    Теперь, когда вы установили эти компоненты, вы сможете перейти к настройке вашего сервера менеджера.

    Шаг 2 — Настройка сервера менеджера SNMP

    Как упоминалось ранее, большая часть работы выполняется на сервере агента, поэтому ваша конфигурация сервера менеджера будет задействована в меньшей мере. Вам нужно изменить один файл, чтобы гарантировать, что инструменты SNMP смогут использовать дополнительные данные MIB, установленные вами.

    На вашем сервере менеджера откройте файл /etc/snmp/snmp.conf в текстовом редакторе, используя привилегии sudo. В этом обучающем руководстве мы будем использовать nano :

    В этом файле есть несколько комментариев и одна незакомментированная строка. Чтобы позволить менеджеру импортировать файлы MIB, закомментируйте строку mibs : :

    Сохраните и закройте snmp.conf , нажав CTRL+X , Y , а затем нажмите ENTER , если вы используете nano .

    Вы завершили настройку сервера менеджера, но вам нужно будет использовать этот сервер при настройке вашего сервера агента, которую вы выполните на следующем шаге.

    Шаг 3 — Настройка сервера агента SNMP

    Как элемент настоящей клиент-серверной системы, агент сервер не имеет никаких внешних инструментов, необходимых для собственной настройки SNMP. Вы можете изменить некоторые файлы конфигурации для внесения изменений, но большинство необходимых изменений будут выполнены при подключении к вашему серверу агента из вашего сервера менеджера.

    Для начала откройте на вашем сервере агента файл конфигурации демона с привилегиями sudo:

    Внутри этого файла вам нужно внести несколько изменений. Они будут использоваться главным образом для начальной загрузки вашей конфигурации, чтобы вы могли управлять ей из другого сервера.

    Сначала вам нужно изменить директиву agentAddress . Согласно текущим настройкам, она разрешает только подключение из локального компьютера. Вам нужно будет закомментировать текущую строку и разкомментировать строку ниже, которая разрешает все подключения.

    Примечание. Поскольку разрешение всех подключений, как в этом случае, не является оптимальной практикой, рекомендуется вернуть исходные настройки обратно сразу же после завершения начальной загрузки.

    Далее вы выполните временную вставку строки createUser . Эти директивы обычно не хранятся в этом файле; поэтому вы должны будете удалить их снова через какое-то время.

    Созданный вами пользователь с именем bootstrap будет использоваться в качестве шаблона, с помощью которого вы создадите вашего первого реального пользователя. Пакет SNMP делает это в процессе клонирования свойств пользователя.

    При определении нового пользователя необходимо указать тип аутентификации (MD5 или SHA), а также предоставить фразу-пароль, которая должна быть длиной не менее восьми символов. Если вы планируете использовать шифрование при передаче, как в данном руководстве, вы должны указать протокол конфиденциальности (DES или AES) и по желанию фразу-пароль протокола конфиденциальности. Если фраза-пароль протокола конфиденциальности не будет предоставлена, фраза-пароль аутентификации также будет использоваться для протокола конфиденциальности.

    Добавьте строку createUser в конце файла:

    Теперь, когда у вас есть новый пользователь, вы можете установить уровень доступа для данного пользователя. В этом обучающем руководстве вы выполните настройку вашего пользователя bootstrap, а также нового пользователя с именем demo, которого вы создадите. Вы предоставите права на чтение и запись с помощью директивы rwuser (альтернативой является rouser для предоставления исключительно права на чтение).

    Также вы примените использование шифрования, добавив priv после вашего пользователя. Если вы хотите ограничить пользователя конкретной частью MIB, вы можете указать идентификатор объекта (OID) самого высокого уровня, к которому будет иметь доступ пользователь, в конце строки.

    В рамках данного обучающего руководства обе строки будут выглядеть следующим образом:

    Когда вы закончите внесение изменений, сохраните и закройте файл.

    Для вступления этих изменений в силу, перезапустите службу snmpd на вашем сервере агента:

    Демон SNMP будет прослушивать подключения к порту :161 . Настройте UFW для разрешения подключений с сервера менеджера к этому порту:

    Дополнительную информацию о UFW можно получить в статье Настройка брандмауэра с UFW в Ubuntu 18.04.

    Теперь, когда сервер агента настроен, вы можете подключиться к вашему серверу агента из сервера менеджера для проверки подключения.

    Шаг 4 — Проверка аутентификации для сервера агента

    На этом шаге вы выполните тест, чтобы убедиться, что вы можете подключиться к серверу агента с помощью учетной записи bootstrap. Однако перед этим в этом обучающем руководстве мы кратко расскажем об общей структуре отправки команды SNMP.

    При использовании набора инструментов из пакета snmp (программный набор net-snmp ​​) существует несколько паттернов, которые вы должны использовать при вызове команд. В первую очередь необходимо выполнить аутентификацию с помощью демона SNMP, с которым вы хотите взаимодействовать. Обычно это подразумевает предоставление определенной информации. Как правило, это следующая информация:

    • -v : этот флаг используется для указания версии протокола SNMP, которую вы хотите использовать. В этом обучающем руководстве мы будем использовать версию 3.
    • -c : этот флаг используется, если вы работаете со строками доступа для аутентификации в стиле, используемом в версиях 1 и 2 протокола SNMP. Поскольку вы используете аутентификацию с помощью пользователя в стиле версии 3, вам не нужно использовать этот флаг.
    • -u : этот параметр используется для указания имени пользователя, которого вы будете использовать для аутентификации. Для чтения или изменения с помощью SNMP необходимо выполнять аутентификацию с помощью известного имени пользователя.
    • -l : этот флаг используется для определения уровня безопасности, который вы используете при подключении. Возможные значения — noAuthNoPriv при отсутствии аутентификации и шифрования, authNoPriv — при наличии аутентификации, но без шифрования, и authPriv — при использовании аутентификации и шифрования. Имя пользователя, которое вы используете, необходимо настроить в соответствии с уровнем безопасности, который вы указываете, либо аутентификация не будет выполнена.
    • -a : этот параметр используется для указания протокола аутентификации, который используется. Возможные значения — MD5 или SHA . Его значение должно соответствовать информации, которая была указана при создании пользователя.
    • -x : этот параметр используется для указания протокола шифрования, который используется. Возможные значения — DES или AES . Его значение должно соответствовать информации, которая была указана при создании пользователя. Это необходимо, если после привилегий пользователя идет priv , который делает шифрование обязательным.
    • -A : данный флаг используется для предоставления фразы-пароля аутентификации, которая была указана при создании пользователя.
    • -X : эта фраза-пароль шифрования, которая была указана при создании пользователя. Если ничего не было указано, но алгоритм шифрования был предоставлен, будет использоваться фраза-пароль аутентификации. Это обязательно, если указан параметр -x , либо если после привилегий пользователя идет priv , что говорит о необходимости шифрования.

    Используя эту информацию, вы можете создать ваши команды. С учетом того, как вы настроили вашего пользователя bootstrap, команды, которые вы будете использовать с этой учетной записью, будут выглядеть следующим образом:

    С помощью вашего сервера менеджера выполните тест, чтобы убедиться, что ваша учетная запись bootstrap доступна. Введите следующую информацию, чтобы вывести на экран данные о системе для сервера агента:

    Строка 1.3.6.1.2.1.1.1.0 — это OID, который отвечает за отображение информации о системе. Он будет возвращать вывод uname -a на удаленной системе.

    Результат будет выглядеть следующим образом:

    Теперь, когда вы убедились, что можете выполнять аутентификацию для сервера с запущенным демоном SNMP, вы можете перейти к созданию стандартной учетной записи пользователя.

    Шаг 5 — Настройка стандартной учетной записи пользователя

    Хотя вы указали привилегии для учетной записи demo в файле snmpd.conf , на самом деле вы еще не создали этого пользователя. На этом шаге вы будете использовать пользователя bootstrap в качестве шаблона для вашего нового пользователя. Вам потребуется инструмент snmpusm , который используется для управления пользователями.

    На сервере менеджера вы можете создать пользователя из шаблона с помощью инструмента snmpusm и следующего общего синтаксиса:

    Используя то, что вы узнали о флагах аутентификации, которые вы должны передавать, и учетную запись, которая у вас уже есть (bootstrap), вы можете создать пользователя, соответствующего привилегиям пользователя, которые вы уже определили (demo).

    Итоговая команда будет выглядеть следующим образом:

    Теперь у вас есть полностью рабочий пользователь с именем demo на сервере агента. Однако он все еще использует ту же информацию для аутентификации, что и учетная запись bootstrap. Для повышения безопасности вы можете изменить пароль на новый. На этот раз вы будете использовать учетную запись demo для аутентификации. Не забывайте, что пароли должны быть не короче восьми символов:

    Вы можете проверить ваши новые учетные данные и пароль, запросив у сервера агента, как долго служба SNMP запущена. Вы будете использовать команду snmpget для получения одного значения от сервера агента.

    На этот раз воспользуйтесь дополнительными определениями MIB, которые вы загрузили, чтобы получить значение по имени, а не по числовому идентификатору OID.

    Вы получите значение, которое будет отображать последний момент перезапуска удаленного демона SNMP:

    Теперь у вас есть рабочая учетная запись с именем demo. На следующем шаге вы упростите работу с командами SNMP, настроив клиент.

    Шаг 6 — Создание файла конфигурации клиента

    Вы, вероятно, заметили к этому моменту, что данные аутентификации для всех ваших команд SNMP будут оставаться достаточно статичными для каждого запроса. Вместо того, чтобы вводить их каждый раз, вы можете создать файл конфигурации на стороне клиента, который будет содержать учетные данные, которые вы используете для подключения.

    Файл конфигурации клиента можно разместить в двух разных местах, в зависимости от того, насколько широкий доступ к нему вы хотите предоставить.

    Если вы хотите поделиться учетными данными с любым действительным пользователем на вашем компьютере управления, вы можете указать данные в глобальном файле snmp.conf​​​ на сервере менеджера. Вам потребуется открыть этот файл с привилегиями sudo:

    Если вы хотите определить учетные данные аутентификации для вашего пользователя отдельно, вы можете создать скрытую директорию .snmp в домашней директории вашего пользователя на сервере менеджера и добавить файл в эту директорию:

    Независимо от вашего решения о том, где вы будете размещать конфигурацию, содержимое будет одним и тем же.

    Команды, которые вы будете использовать для аутентификации, находятся в следующей таблице. В правом столбце вы можете увидеть названия директив, которые используются для установки данных конфигурации в файле snmp.conf :

    Флаг команды Описание Директива snmp.conf
    -u username Имя пользователя SNMP3 для аутентификации. defSecurityName username
    -l authPriv Уровень безопасности для аутентификации. defSecurityLevel authPriv
    -a MD5 Протокол аутентификации для использования. defAuthType MD5
    -x DES Протокол конфиденциальности (шифрования) для использования. defPrivType DES
    -A passphrase Фраза-пароль аутентификации для предоставленного имени пользователя. defAuthPassphrase passphrase
    -X passphrase Фраза-пароль конфиденциальности из предоставленного имени пользователя. defPrivPassphrase passphrase

    Используя эту информацию, вы можете создать соответствующий файл snmp.conf . В рамках этого руководства он будет выглядеть следующим образом:

    После завершения редактирования сохраните и закройте файл.

    Теперь вы можете использовать команды без предоставления данных для аутентификации. Вам потребуется только команда SNMP, хост и аргументы команды.

    Вместо того, чтобы вводить следующую команду:

    Вы можете ввести:

    Как вы можете видеть, это значительно снижает количество информации, необходимой для предоставления в каждом запросе. Далее вы выполните удаление учетной записи bootstrap для укрепления сетевой безопасности.

    Шаг 7 — Удаление учетной записи Bootstrap

    Теперь, когда ваша стандартная учетная запись настроена корректно, вы можете удалить небезопасную учетную запись bootstrap.

    На вашем сервере агента откройте файл /etc/snmp/snmpd.conf еще раз с привилегиями sudo.

    Найдите и закомментируйте (или удалите) обе строки, которые вы ранее добавили для ссылки на пользователя bootstrap:

    Сохраните и закройте файл.

    Теперь перезапустите демон SNMP:

    Это позволит выполнить рекомендацию, согласно которой в файле snmpd.conf ​​​ должны отсутствовать директивы createUser . Также это действие удалит привилегии из этого временного пользователя.

    Если вы хотите полностью удалить пользователя bootstrap из usmUserTable , вы можете сделать это, запустив следующую команду из сервера менеджера:

    Заключение

    К настоящему моменту у вас есть готовая клиент-серверная установка, которая может безопасно передавать данные при помощи протокола SNMP. Теперь вы можете добавить дополнительные демоны на других хостах и настроить доступ к учетной записи для всей инфраструктуры.

    Для дальнейшего изучения вы можете использовать наше обучающее руководство Использование набора инструментов Net-SNMP для управления и мониторинга серверов, чтобы узнать больше об инструментах SNMP, о том, как использовать их для получения значений по отдельности или пакетом, а также о том, как изменять данные.

    Читайте также: