SNMP无法获取交换机下所有设备IP地址信息的解决求助
解决SNMP查询交换机仅返回查询端设备信息的问题
问题现象
通过SNMP查询交换机(IP:192.168.8.1)的ARP表(ipNetToMediaTable或atTable)时,仅能获取发起查询的PC(如192.168.8.96)的信息,无法获取同交换机下其他设备(192.168.9.96、192.168.8.35)的条目。
排查与解决步骤
1. 确认交换机本地ARP表是否正常学习到所有设备
登录交换机CLI,执行对应厂商的ARP查看命令,验证交换机本身是否已获取到目标设备的ARP条目:
- 思科设备:
show arp - 华为/华三设备:
display arp - 锐捷设备:
show arp
如果本地ARP表中没有目标设备的条目,说明是交换机ARP学习异常,需排查:
- 目标设备是否正常在线、连通交换机
- 端口VLAN配置是否正确(比如目标设备和查询PC是否在同一VLAN,或交换机是否配置了端口隔离)
- DHCP配置是否正常(若设备使用动态IP)
2. 检查交换机SNMP权限与视图配置
确保SNMP社区字符串(此处为public)拥有访问MIB-II IP模块的权限,且未被限制仅能查看部分条目:
思科设备配置示例:
! 创建包含所有MIB-II的视图 snmp-server view ALL-MIB included 1.3.6.1.2.1 ! 绑定社区字符串到只读视图 snmp-server community public RO ALL-MIB
华为设备配置示例:
# 创建包含MIB-II IP模块的视图 snmp-agent mib-view include IP-MIB 1.3.6.1.2.1.4 # 配置只读社区字符串并关联视图 snmp-agent community read public mib-view IP-MIB
3. 更换OID或使用更具体的分支查询
尝试直接查询ipNetToMediaTable的物理地址和IP地址分支,或使用厂商私有MIB:
- 查询ARP物理地址:
snmpwalk -c public -v 2c 192.168.8.1 1.3.6.1.2.1.4.22.1.2 - 查询ARP关联IP:
snmpwalk -c public -v 2c 192.168.8.1 1.3.6.1.2.1.4.22.1.3 - 若为思科交换机,尝试私有MIB:
snmpwalk -c public -v 2c 192.168.8.1 1.3.6.1.4.1.9.2.1.3
4. 检查SNMP访问控制与网络连通性
- 确认交换机是否配置了SNMP ACL,限制了访问源IP。若有,需将发起查询的PC IP加入允许列表。
- 测试PC到交换机UDP 161端口的连通性:
nc -uvz 192.168.8.1 161
内容的提问来源于stack exchange,提问作者Xianghui
相关产品推荐
相关产品推荐

