Почему сломан SNMP?

28

Версия Ubuntu: Ubuntu 14.04.1 LTS

Версия SNMP: 5.7.2

Краткий выпуск. Многие записи в файле конфигурации «по умолчанию» повреждены. Что на самом деле не имеет значения, потому что я даже не могу запустить SNMP.

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

ПРИМЕЧАНИЕ. Из многих источников, в том числе веб-сайтов Ubuntu, принадлежащих Canonical, говорится, что я должен изменить exportи SNMPDOPTS, чтобы иметь базовую функциональность.

/etc/default/snmpd

export MIBS=UCD-SNMP-MIB
SNMPDRUN=yes
SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -g snmp -I -smux -p /var/run/snmpd.pid -c /etc/snmp/snmpd.conf'
TRAPDRUN=no
TRAPDOPTS='-Lsd -p /var/run/snmptrapd.pid'
SNMPDCOMPAT=yes

/etc/snmp/snmpd.conf

view   systemonly  included   .1.3.6.1.2.1.1
view   systemonly  included   .1.3.6.1.2.1.25.1
rocommunity public
rwcommunity nanana
sysLocation    vm1-ryd-wlo
sysContact     Paul Adams <pauladams@nanana.com>
sysServices    72
disk       /     10000
disk       /var  5%
load   12 10 5
trapsink     localhost public
iquerySecName   internalUser
rouser          internalUser
master          agentx

/var/log/syslog

Oct  3 13:59:51 mdnsreflector-ryd-wlo snmpd[9120]: Server Exiting with code 1
Oct  3 14:00:09 mdnsreflector-ryd-wlo snmpd[9143]: Turning on AgentX master support.
Oct  3 14:00:09 mdnsreflector-ryd-wlo snmpd[9145]: NET-SNMP version 5.7.2

sudo service --status-all

[ + ]  snmpd

sudo service ufw status

Status: inactive
  1. Хотя эта конфигурация загружается и, очевидно, работает. Вы не можете на самом деле запросить что-либо из этого экземпляра SNMP с удаленного устройства. В конечном итоге время ожидания истекло.

  2. Запрос его с самого сервера ничего не дает.

snmpwalk -Os -c public -v 1 система локального хоста

system: Unknown Object Identifier (Sub-id not found: (top) -> system)
  1. Мне пришлось удалить записи «agentAddress», потому что программа продолжала паниковать каждый раз, когда пыталась обработать эту команду. (Даже если это значение по умолчанию и способ, которым он должен быть указан в конфигурации.)

/etc/var/syslog

Oct  3 14:10:32 mdnsreflector-ryd-wlo snmpd[9292]: Turning on AgentX master support.
Oct  3 14:10:32 mdnsreflector-ryd-wlo snmpd[9292]: Turning on AgentX master support.
Oct  3 14:10:32 mdnsreflector-ryd-wlo snmpd[9292]: Error opening specified endpoint "udp:161"
Oct  3 14:10:32 mdnsreflector-ryd-wlo snmpd[9292]: Server Exiting with code 1

sudo service --status-all

[ - ]  snmpd
  1. Мне пришлось удалить несколько записей по умолчанию в конфигурации, потому что они также вызывали ошибки при их запуске.

/etc/snmp/snmpd.conf

proc mount
proc ntalkd    4
proc sendmail    10 1
includeAllDisks 10%
extend    test1   /bin/echo  Hello, world!
extend-sh test2   echo Hello, world! ; echo Hi there ; exit 35

/ Вар / Журнал / системный журнал

Oct  3 10:51:11 mdnsreflector-ryd-wlo snmpd[7575]: /etc/snmp/snmpd.conf: line 90: Error: Already have an entry for this process.
Oct  3 10:51:11 mdnsreflector-ryd-wlo snmpd[7575]: /etc/snmp/snmpd.conf: line 92: Error: Already have an entry for this process.
Oct  3 10:51:11 mdnsreflector-ryd-wlo snmpd[7575]: /etc/snmp/snmpd.conf: line 94: Error: Already have an entry for this process.
Oct  3 10:51:11 mdnsreflector-ryd-wlo snmpd[7575]: /etc/snmp/snmpd.conf: line 106: Error: includeAllDisks already specified.
Oct  3 10:51:11 mdnsreflector-ryd-wlo snmpd[7575]: /etc/snmp/snmpd.conf: line 106: Error: #011ignoring: includeAllDisks 10%
Oct  3 10:51:11 mdnsreflector-ryd-wlo snmpd[7575]: /etc/snmp/snmpd.conf: line 146: Error: duplicate trigger name
Oct  3 10:51:11 mdnsreflector-ryd-wlo snmpd[7575]: message repeated 6 times: [ /etc/snmp/snmpd.conf: line 146: Error: duplicate trigger name]
Oct  3 10:51:11 mdnsreflector-ryd-wlo snmpd[7575]: /etc/snmp/snmpd.conf: line 148: Error: duplicate trigger name
Oct  3 10:51:11 mdnsreflector-ryd-wlo snmpd[7575]: /etc/snmp/snmpd.conf: line 148: Error: duplicate trigger name
Oct  3 10:51:11 mdnsreflector-ryd-wlo snmpd[7575]: duplicate table data attempted to be entered. row exists
Oct  3 10:51:11 mdnsreflector-ryd-wlo snmpd[7575]: Failed to register extend entry 'test1' - possibly duplicate name.
Oct  3 10:51:11 mdnsreflector-ryd-wlo snmpd[7575]: duplicate table data attempted to be entered. row exists
Oct  3 10:51:11 mdnsreflector-ryd-wlo snmpd[7575]: Failed to register extend entry 'test2' - possibly duplicate name.
Пол Адамс
источник
Следующие инструкции были проверены для работы 14.04 askubuntu.com/a/223734/106495
Кевин Боуэн

Ответы:

2

SNMP не сломан. Процесс, чтобы заставить это работать, только немного запутан.

Следующие шаги были проверены для работы 14.04:

После установки SNMP и его daemon ( sudo apt-get install snmp snmpd) вам необходимо отредактировать файл /etc/snmp/snmp.confи закомментировать строку, содержащую «mibs:»

В этом файле измените строку:

mibs :

в

#mibs : 

Далее, если вы еще этого не сделали, вам нужно будет получить полный набор MIB IETF. Эти файлы не поставляются по умолчанию в системах Debian / Ubuntu из-за проблем с лицензированием.

С терминала ( Ctrl- Alt- t) введите следующие команды:

sudo apt-get install snmp-mibs-downloader

sudo download-mibs

Затем вам нужно будет изменить /etc/snmp/snmpd.conf.

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

    #  Listen for connections from the local system only
    #  agentAddress  udp:127.0.0.1:161
    #  Listen for connections on all interfaces (both IPv4 *and* IPv6)
    agentAddress udp:161,udp6:[::1]:161
    

    Обратите внимание, что это позволит ЛЮБОЙ системе запрашивать ваш компьютер. Вам нужно будет настроить это, чтобы ограничить доступ SNMP к вашему устройству.

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

    #rocommunity public  default    -V systemonly
    rocommunity <My$ecret$tr1nG> (don't use this example!)
    

    Примечание. Удаление -V systemonlyиз строки позволит получить доступ ко всему дереву MIB и не ограничивать его системной частью дерева.

  3. Перезапустите демон SNMP

    sudo service snmpd restart
    

Наконец, ваш SNMP-запрос теперь должен отвечать правильно.

например:

snmpwalk -v 2c -c <My$ecret$tr1nG> <MachineName> ipadd

IP-MIB::ipAdEntAddr.127.0.0.1 = IpAddress: 127.0.0.1
IP-MIB::ipAdEntAddr.192.168.1.7 = IpAddress: 192.168.1.7
IP-MIB::ipAdEntIfIndex.127.0.0.1 = INTEGER: 1
IP-MIB::ipAdEntIfIndex.192.168.1.7 = INTEGER: 2
IP-MIB::ipAdEntNetMask.127.0.0.1 = IpAddress: 255.0.0.0
IP-MIB::ipAdEntNetMask.192.168.1.7 = IpAddress: 255.255.255.0
IP-MIB::ipAdEntBcastAddr.127.0.0.1 = INTEGER: 0
IP-MIB::ipAdEntBcastAddr.192.168.1.7 = INTEGER: 1

Смотрите следующие ответы для дополнительной справки:

Как получить или настроить IP-MIB в Ubuntu 12.04?

Что такое SNMP?

Кевин Боуэн
источник
0

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

Джон Оливер
источник