我正在尝试让 Net-SNMP 给我其配置的 snmpEngineID,尽管它看起来就在那里,但我无法访问 snmpV2 MIB 中的任何内容。
我有一台 CentOS 7 服务器,在该服务器上我从 RHeL 存储库安装了 Net-SNMP,我需要对其进行设置,以便远程管理服务器可以使用 SNMPv3 对其进行监控,为此我需要 snmpEngineID。
安装顺利,守护进程正常运行:
# snmpwalk -v 2c -c public localhost system.sysContact
SNMPv2-MIB::sysContact.0 = STRING: Martin <[email protected]>
#
但是,当我尝试检索 snmpEngineID 时,它失败了:
# snmpwalk -v 2c -c public localhost SNMP-FRAMEWORK-MIB::snmpEngineID
SNMP-FRAMEWORK-MIB::snmpEngineID = No more variables left in this MIB View (It is past the end of the MIB tree)
#
在对 snmpget 命令进行完整调试(-D all)时,我得到了以下内容:
...
trace: snmp_parse_var_op(): snmp.c, 164:
dumph_recv: Name
dumpx_recv: 06 0A 2B 06 01 06 03 0A 02 01 01 00
dumpv_recv: ObjID: SNMP-FRAMEWORK-MIB::snmpEngineID.0
trace: snmp_pdu_parse(): snmp_api.c, 4530:
dumph_recv: Value
trace: _sess_process_packet(): snmp_api.c, 5245:
sess_process_packet: received message id#0 reqid#1594114350 len 45
trace: snmp_synch_input(): snmp_client.c, 183:
snmp_synch: Response (ReqID: 1594114350 - Cmd 162)
SNMP-FRAMEWORK-MIB::snmpEngineID.0 = No Such Object available on this agent at this OID
#
尽管 snmpwalk() 应该可以工作,但我还是尝试直接 snmpget() 获取输出中提供的 objID:
# snmpget -v 2c -c public localhost ObjID: SNMP-FRAMEWORK-MIB::snmpEngineID.0
MIB search path: /usr/local/nom/share/snmp/mibs:/usr/local/nom/share/snmp/mibs
Cannot find module (ObjID): At line 0 in (none)
ObjID:: Unknown Object Identifier
#
正如您所见,这也失败了。
我思考调试输出中提供的“06 0A 2B 06 01 06 03 0A 02 01 01 00”是实际的引擎 ID,但我不想将其视为真理,更重要的是,我想知道为什么我尝试的 snmpwalk 和 snmpget 命令失败了。
我确实尝试了 OID 本身,以防 MIB 文件存在问题,但它也失败了:
# snmpget -v 2c -c public localhost .1.3.6.1.6.3.10.2.1.1.0
SNMP-FRAMEWORK-MIB::snmpEngineID.0 = No Such Object available on this agent at this OID
#
然后我尝试通过 OID 进行回溯,遍历每个数字。它们都失败了,直到我找到 .1.3.6.1
# snmpwalk -v 2c -c public localhost .1.3.6.1.6 | head -1
SNMPv2-SMI::snmpV2 = No more variables left in this MIB View (It is past the end of the MIB tree)
# snmpwalk -v 2c -c public localhost .1.3.6.1 | head -1
SNMPv2-MIB::sysDescr.0 = STRING: Linux 143-42-69-251.ip.linodeusercontent.com 3.10.0-1160.90.1.el7.x86_64 #1 SMP Thu May 4 15:21:22 UTC 2023 x86_64
#
.1.3.6.1.6 是 snmpV2-SMI MIB,但我不明白为什么没有报告这个 MIB。
有人遇到过这种情况吗?我猜这是基本问题,但我肯定看不出是什么问题或在哪里。
非常感谢您的帮助。
答案1
好吧,经过一下午的努力,我终于发现这只是一个安全问题。我确信我已经将“public”作为社区名称输入(用于测试目的),但事实证明我没有。
对我来说,解决方案是将其(重新)添加到 /etc/snmp/snmpd.conf 文件中:
rocommunity MyComPw
瞧,它起作用了:
SNMP-FRAMEWORK-MIB::snmpEngineID.0 = Hex-STRING: 80 00 1F 88 80 F9 FC C1 5F F3 BD DC 65 00 00 00
00
# snmpget -v 2c -c MyComPw localhost .1.3.6.1.6.3.10.2.1.1.0
SNMP-FRAMEWORK-MIB::snmpEngineID.0 = Hex-STRING: 80 00 1F 88 80 F9 FC C1 5F F3 BD DC 65 00 00 00
00
#
对于下一个遇到此问题的人来说,任务很简单,始终先检查您的安全设置是否正确!