使用tshark(wireshark)解码SNMP OID

4
我正在使用Linux平台上的tshark(TShark 1.6.6)调试一个SNMP陷阱问题。(目标平台不支持wireshark GUI。)尽管我已经在/usr/share/snmp/mibs中安装了MIB文件并在/usr/local/share/mibs中创建了一个链接,但PDU中的OID以数字格式显示。我尝试了-V选项,但似乎没有tshark详细或调试选项,除了一些内存调试选项外。我查看了man页面,没有找到关于SNMP或MIB的内容。我尝试使用strace命令,并发现一个/usr/share/wireshark/oid文件,但当我把MIB目录放在那里时,会出现flex错误,而对这个神秘文件的搜索结果却是空白。我可以将OID复制粘贴到snmptranslate命令中,并正确翻译它们。我尝试创建一个~/.wireshark目录,并添加smi_modulessmi_paths"/usr/share/snmp/mibs")。我执行了tshark -G currentprefs命令,查看是否有相关的首选项,但并没有。我已经在Google上搜索了这个问题,但是得到的结果太多,无法取得任何进展。我检查了unix.stackexchange.com、superuser.com和这个网站,确认人们在这个网站上提问wireshark问题(有10,000个),以确保它是相关主题。
示例调用:
tshark -R "snmp && ip.dst==<nms_ip>" -i eth0
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
  4.675952  <agent_ip> -> <nms_ip>  SNMP 115 sNMPv2-Trap 1.3.6.1.2.1.1.3.0 1.3.6.1.6.3.1.1.4.1.0

~/.wireshark/preferences 的内容如下:

name_resolve: mtC
name_resolve_load_smi_modules: TRUE
snmp.display_oid: TRUE
snmp.desegment: TRUE
snmp.var_in_tree: TRUE

如何以符号格式显示OID,例如sysUpTimeInstancesnmpTrapOID.0


“snmptranslate”命令是net-snmp工具,与tshark执行相同任务的能力无关。只是想让你知道这个信息。我个人从来没有使用过Wireshark的MIB加载功能,所以除此之外我也提供不了更有用的信息了。 - Jolta
@Jolta:我确实意识到它们在理论上不相互映射,但这证明我至少安装了正确的MIB。有一个网站告诉我Wireshark在/usr/local/share/mibs中查找MIB,所以我将其链接到/usr/share/snmp/mibs,因此我只是作为一个健全性检查来演示snmptranslate是否可以解析它们。 - Vercingatorix
是的,它告诉我们mibs已经正确安装,以便snmptranslate可以找到它们。 - Jolta
@Jolta:我本来希望将~/.wireshark/smi_paths设置为net-snmp MIB目录就足以让tshark找到MIB,但似乎并不是这样。感谢您的建议,我很感激。 - Vercingatorix
1个回答

1
我发现通过snmpbulkwalk和tshark解析SNMP OID的信息很有用。
将我的MIB添加到~/.wireshark/smi_modules(通过wireshark名称解析偏好设置),并确保MIB位于正确的位置。
(在Mac上,我使用dtrace跟踪“tshark”正在访问哪些文件,并将路径定位为/usr/share/snmp/mibs)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接