如何使用snmpwalk列举自定义MIB文件中的节点
SNMP MIB节点snmpwalk无法输出解决方案
根因说明
snmptranslate可正常返回OID说明MIB文件本身格式合法、路径配置正确,snmpwalk无法输出对应节点存在两个核心原因:
- snmpwalk默认未加载目标MIB文件
- snmpd服务端未将目标MIB对应的OID分支纳入公开访问视图
配置步骤
1. 修改snmpd服务端访问视图
默认snmpd配置中,public团体名对应的访问视图通常仅开放1.3.6.1.2.1(mib-2分支),SNMP-COMMUNITY-MIB属于1.3.6.1.6.3.18分支,不在默认视图范围内,需手动添加:
- 打开snmpd主配置文件(通常路径为
/etc/snmp/snmpd.conf),找到默认视图配置:
view systemonly included .1.3.6.1.2.1 view systemonly included .1.3.6.1.4.1
- 新增一行配置,将目标MIB的OID分支加入允许访问的视图:
# SNMP-COMMUNITY-MIB分支,自定义MIB替换为对应根节点OID即可 view systemonly included .1.3.6.1.6.3.18
- 重启snmpd服务生效:
- Debian/Ubuntu/CentOS7+ 系统:
sudo systemctl restart snmpd - 其他旧版本发行版:
sudo service snmpd restart
2. 配置snmp客户端自动加载MIB
snmp类工具(snmpwalk、snmpget等)默认不会读取snmpd.conf里的MIB加载配置,你之前执行snmptranslate时手动加了-m +SNMP-COMMUNITY-MIB参数才临时加载了MIB,需要修改客户端配置实现自动加载:
- 打开当前用户的snmp配置文件
~/.snmp/snmp.conf(如需要全局生效则修改/etc/snmp/snmp.conf),新增以下两行:
mibdirs +$HOME/.snmp/mibs # 自定义MIB替换为对应MIB名称即可 mibs +SNMP-COMMUNITY-MIB
- 确认MIB文件对执行snmpwalk的用户有可读权限,避免权限不足导致加载失败。
验证测试
先执行带指定分支的命令确认服务端配置生效:
snmpwalk -v2c -c public -m +SNMP-COMMUNITY-MIB localhost 1.3.6.1.6.3.18
如能正常返回对应节点值,再执行通用snmpwalk命令即可看到目标MIB的节点和OID信息。
内容的提问来源于stack exchange,提问作者Sujay
相关产品推荐
相关产品推荐

