Почему сломан SNMP?
Версия 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
Хотя эта конфигурация загружается и, очевидно, работает. Вы не можете на самом деле запросить что-либо из этого экземпляра SNMP с удаленного устройства. В конечном итоге время ожидания истекло.
Запрос его с самого сервера ничего не дает.
snmpwalk -Os -c public -v 1 система локального хоста
system: Unknown Object Identifier (Sub-id not found: (top) -> system)
- Мне пришлось удалить записи "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
- Мне пришлось удалить несколько записей по умолчанию в конфигурации, потому что они также вызывали ошибки при их запуске.
/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.
2 ответа
SNMP не сломан. Процесс, чтобы заставить это работать, только немного запутан.
Следующие шаги были проверены для работы 14.04:
После установки SNMP и его демона (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
,
Чтобы разрешить 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 к вашему устройству.
Теперь вы захотите изменить строку SNMP только для чтения с
public
на пользовательскую строку по вашему выбору, как показано ниже:#rocommunity public default -V systemonly rocommunity <My$ecret$tr1nG> (don't use this example!)
Примечание: удаление
-V systemonly
из линии позволит получить доступ ко всему дереву MIB и не ограничивать его системной частью дерева.Перезапустите демон 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
Смотрите следующие ответы для дополнительной справки:
Я бы начал со стандартной конфигурации с представлением.1, включил ведение журнала отладки и попытался получить запросы к OID. Честно говоря, я никогда не разбирался в MIB, и, поскольку я использовал SNMP только для таких вещей, как MRTG и cacti, мне никогда не нужно было знать больше. Посмотрите, сможете ли вы получить самую простую из возможных конфигураций, а затем добавляйте по одному элементу за раз, следя за соответствующими файлами журнала.