Ubuntu 版本:Ubuntu 14.04.1 LTS
SNMP 版本:5.7.2
短问题:“默认”配置文件中的许多条目都已损坏。这并不重要,因为我什至无法启动 SNMP。
期望的结果:我想要一个可以工作的 SNMP 实例,其中包含尽可能多的默认功能。
注意:从很多来源,包括 Canonical 拥有的 Ubuntu 网站,据说我必须修改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
Run Code Online (Sandbox Code Playgroud)
/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
Run Code Online (Sandbox Code Playgroud)
/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
Run Code Online (Sandbox Code Playgroud)
sudo service --status-all
[ + ] snmpd
Run Code Online (Sandbox Code Playgroud)
sudo service ufw status
Status: inactive
Run Code Online (Sandbox Code Playgroud)
即使此配置加载并且显然正在运行。您实际上无法从远程设备从该 SNMP 实例查询任何内容。连接最终超时。
从服务器本身查询它不会产生任何结果。
snmpwalk -Os -c public -v 1 本地主机系统
system: Unknown Object Identifier (Sub-id not found: (top) -> system)
Run Code Online (Sandbox Code Playgroud)
/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
Run Code Online (Sandbox Code Playgroud)
须藤服务 --status-all
[ - ] snmpd
Run Code Online (Sandbox Code Playgroud)
/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
Run Code Online (Sandbox Code Playgroud)
/var/日志/系统日志
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.
Run Code Online (Sandbox Code Playgroud)
SNMP 没有损坏。让它工作的过程有点复杂。
以下步骤已被验证可在 14.04 上运行:
安装 SNMP 及其守护进程 ( sudo apt-get install snmp snmpd
) 后,您需要编辑该文件/etc/snmp/snmp.conf
并注释掉包含“mibs:”的行
在此文件中,更改行:
mibs :
Run Code Online (Sandbox Code Playgroud)
到
#mibs :
Run Code Online (Sandbox Code Playgroud)
接下来,假设您还没有这样做,您将需要获取全套 IETF MIB。由于许可问题,默认情况下,这些文件不会在 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
Run Code Online (Sandbox Code Playgroud)
请注意,这将允许任何系统查询您的计算机。您需要调整此项以限制 SNMP 访问您的设备。
您现在需要将只读 SNMP 字符串更改为public
您选择的自定义字符串,如下所示:
#rocommunity public default -V systemonly
rocommunity <My$ecret$tr1nG> (don't use this example!)
Run Code Online (Sandbox Code Playgroud)
注意:-V systemonly
从该行中删除将允许访问整个 MIB 树,而不是将其限制为树的系统部分。
重新启动 SNMP 守护进程
sudo service snmpd restart
Run Code Online (Sandbox Code Playgroud)最后,您的 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
Run Code Online (Sandbox Code Playgroud)
请参阅以下答案以获取更多参考:
如何在 Ubuntu 12.04 中获取或配置 IP-MIB?
小智 0
我将从一个针对 .1 的库存配置开始,启用调试日志记录,并尝试获取对 OID 的查询。老实说,我从来没有掌握 MIB 的窍门,而且由于我只将 SNMP 用于 MRTG 和 cacti 之类的东西,所以我从来没有真正需要了解更多。看看是否可以获得最简单的配置,然后一次添加一个元素,同时跟踪相关日志文件。
归档时间: |
|
查看次数: |
9537 次 |
最近记录: |