← 回到技术随笔
· 8395 字

H3C交换机SNMP网管识别配置实例

以 H3C S5570S 和 Comware V7 为例,配置只读 SNMPv3 账号、设备识别信息和 IPv4/IPv6 来源限制,让网管系统安全识别交换机。

本文以 H3C S5570S 系列和 Comware V7 为主要示例,只适用于本人拥有或已经明确授权管理的交换机。文中的地址、账号、密码、ACL 编号和设备位置都是示例,使用时要换成现场实际规划。

一、现场场景

交换机已经可以通过 SSH 管理,接下来要把它加入公司的网管系统。网管系统需要读取设备名称、型号、运行时间和端口状态,但不能修改交换机配置。

出于安全性要求,我会使用带认证和加密的 SNMPv3,并且只允许指定网管服务器访问。SNMPv1 和 SNMPv2c 使用团体名,安全性较低,新配置不再使用。

本次使用下面的示例:

项目 示例值
交换机 HQ-Access-01
管理 VLAN 100
交换机 IPv4 192.168.100.2
交换机 IPv6 2001:db8:100::2
网管服务器 IPv4 192.168.100.20
网管服务器 IPv6 2001:db8:100::20
SNMPv3 用户 nms_hq01
SNMPv3 组 NMS_ReadOnly
IPv4 ACL 2010
IPv6 ACL 2011
设备位置 HQ_3F_Network_Room_Rack_A03
联系人 Network_Team_Ext_8001

示例中的 IP 地址不能直接用于生产网络。SNMPv3 用户名、两个密码、联系人和设备位置也要换成公司批准的信息。

二、配置目标

  1. 让交换机只使用 SNMPv3 接受网管查询;
  2. 创建一个只读的 SNMPv3 用户;
  3. 使用认证和加密保护 SNMP 数据;
  4. 只允许指定网管服务器通过 IPv4 或 IPv6 访问;
  5. 让网管平台正确显示设备名称、位置和联系人;
  6. 在网管平台完成真实采集验证。

三、配置前检查

先确认交换机与网管服务器双向可达:

# 查看设备版本,确认本文命令适用。
<HQ-Access-01> display version

# 测试网管服务器的 IPv4 地址。
<HQ-Access-01> ping 192.168.100.20

# 测试网管服务器的 IPv6 地址。
<HQ-Access-01> ping ipv6 2001:db8:100::20

再检查交换机是否已经配置过 SNMP:

# 查看当前允许的 SNMP 版本、联系人和设备位置。
<HQ-Access-01> display snmp-agent sys-info

# 查看已有 SNMPv3 组和用户,避免覆盖现有网管配置。
<HQ-Access-01> display snmp-agent group
<HQ-Access-01> display snmp-agent usm-user

# 查看 SNMPv1/v2c 团体名。旧设备可能仍然依靠它接入网管。
<HQ-Access-01> display snmp-agent community

# 检查准备使用的 ACL 编号是否已经被占用。
<HQ-Access-01> display acl 2010
<HQ-Access-01> display acl ipv6 2011

如果现有网管仍使用 SNMPv1 或 SNMPv2c,要先在网管平台增加 SNMPv3 参数并完成测试,再停用旧版本。直接删除旧团体名可能让现有监控全部中断。

网管服务器还要放行发往交换机的 SNMP 查询。默认目的端口是 UDP 161,中间防火墙和管理网 ACL 也必须允许这条通信。

四、Comware V7 配置实例

1. 配置设备识别信息

设备名称使用交换机当前的 sysname。本文前面的配置已经把它设置为 HQ-Access-01,这里不重复修改,只补充设备位置和联系人:

<HQ-Access-01> system-view

# 填写机房、机柜等位置,网管发现设备后可以直接显示。
[HQ-Access-01] snmp-agent sys-info location HQ_3F_Network_Room_Rack_A03

# 填写维护团队或值班联系方式,不建议写个人私人信息。
[HQ-Access-01] snmp-agent sys-info contact Network_Team_Ext_8001
[HQ-Access-01] return

位置描述要与资产表一致。只写“机房”或“办公室”,设备多了以后仍然无法定位。

2. 限制网管服务器来源

先创建 IPv4 和 IPv6 ACL。ACL 必须先有允许规则,再交给 SNMP 使用;引用不存在或没有规则的 ACL 时,SNMP 访问不会受到预期限制。

<HQ-Access-01> system-view

# IPv4 ACL 2010 只允许网管服务器 192.168.100.20。
[HQ-Access-01] acl basic 2010
[HQ-Access-01-acl-ipv4-basic-2010] description Permit_IPv4_SNMP_NMS
[HQ-Access-01-acl-ipv4-basic-2010] rule 5 permit source 192.168.100.20 0
[HQ-Access-01-acl-ipv4-basic-2010] rule 100 deny source any
[HQ-Access-01-acl-ipv4-basic-2010] quit

# IPv6 ACL 2011 只允许网管服务器 2001:db8:100::20。
[HQ-Access-01] acl ipv6 basic 2011
[HQ-Access-01-acl-ipv6-basic-2011] description Permit_IPv6_SNMP_NMS
[HQ-Access-01-acl-ipv6-basic-2011] rule 5 permit source 2001:db8:100::20 128
[HQ-Access-01-acl-ipv6-basic-2011] rule 100 deny source any
[HQ-Access-01-acl-ipv6-basic-2011] quit
[HQ-Access-01] return

应用前检查地址和规则动作:

<HQ-Access-01> display acl 2010
<HQ-Access-01> display acl ipv6 2011

3. 创建只读 SNMPv3 用户并绑定 ACL

这里使用 privacy 级别,表示同时进行身份认证和数据加密。组没有配置写视图,因此网管用户只能读取信息,不能通过 SNMP 修改交换机。

<HQ-Access-01> system-view

# 创建只读 SNMPv3 组,并要求认证和加密。
# 未配置 write-view,因此该组没有写权限。
[HQ-Access-01] snmp-agent group v3 NMS_ReadOnly privacy

# 创建 SNMPv3 用户,使用 SHA 认证和 AES128 加密。
# IPv4/IPv6 ACL 直接绑定到该用户,只允许指定网管服务器使用它。
# 两个密码都是占位文字,输入前必须替换,而且不能使用相同密码。
[HQ-Access-01] snmp-agent usm-user v3 nms_hq01 NMS_ReadOnly simple authentication-mode sha AuthPassword_Replace_Before_Input privacy-mode aes128 PrivPassword_Replace_Before_Input acl 2010 acl ipv6 2011
[HQ-Access-01] return

这条用户命令虽然较长,但必须作为一条命令输入,不能在 authentication-modeprivacy-mode 中间回车。

认证密码和加密密码要分别保存在公司的密码管理工具中。不要把真实密码写入文章、工单截图或普通聊天记录。

4. 开启 SNMPv3

确认 ACL、组和用户都正确后,再启用 SNMP Agent:

<HQ-Access-01> system-view

# 只启用 SNMPv3。
[HQ-Access-01] snmp-agent sys-info version v3

# 开启 SNMP Agent。
[HQ-Access-01] snmp-agent
[HQ-Access-01] return

在旧设备上执行 snmp-agent sys-info version v3,不一定会自动删除以前启用的 v1 或 v2c。先完成 SNMPv3 验证,再执行下面的命令停用旧版本:

<HQ-Access-01> system-view

# SNMPv3 已经验证正常后,停用明文团体名使用的 v1 和 v2c。
[HQ-Access-01] undo snmp-agent sys-info version v1 v2c
[HQ-Access-01] return

如果配置中还留有旧团体名,应根据变更前记录逐条清理。不能在不知道团体名用途时直接删除。

五、Comware V5 配置

本文参考的 H3C S5500 Comware V5 Release 2208 同样支持 SNMPv3、SHA 认证、AES128 加密,以及把 IPv4/IPv6 ACL 绑定到 SNMPv3 用户。主要差异在 ACL 的创建命令和部分视图名称。

<HQ-Access-01> system-view

# 配置设备位置和维护联系人。
[HQ-Access-01] snmp-agent sys-info location HQ_3F_Network_Room_Rack_A03
[HQ-Access-01] snmp-agent sys-info contact Network_Team_Ext_8001

# V5 创建 IPv4 ACL 的写法。
[HQ-Access-01] acl number 2010 match-order config
[HQ-Access-01-acl-basic-2010] rule 5 permit source 192.168.100.20 0
[HQ-Access-01-acl-basic-2010] rule 100 deny source any
[HQ-Access-01-acl-basic-2010] quit

# V5 Release 2208 创建 IPv6 ACL 的写法。
[HQ-Access-01] acl ipv6 number 2011 match-order config
[HQ-Access-01-acl6-basic-2011] rule 5 permit source 2001:db8:100::20 128
[HQ-Access-01-acl6-basic-2011] rule 100 deny source any
[HQ-Access-01-acl6-basic-2011] quit

# 创建要求认证和加密的只读 SNMPv3 组。
[HQ-Access-01] snmp-agent group v3 NMS_ReadOnly privacy

# V5 使用 SHA 和 AES128,并把 IPv4/IPv6 ACL 绑定到该用户。
# 两个密码必须替换为不同的实际强密码。
[HQ-Access-01] snmp-agent usm-user v3 nms_hq01 NMS_ReadOnly simple authentication-mode sha AuthPassword_Replace_Before_Input privacy-mode aes128 PrivPassword_Replace_Before_Input acl 2010 acl ipv6 2011

# 启用 SNMPv3 和 SNMP Agent。
[HQ-Access-01] snmp-agent sys-info version v3
[HQ-Access-01] snmp-agent
[HQ-Access-01] return

这条 V5 用户命令同样是一整条命令。更早的 V5 软件可能没有 simpleacl ipv6 参数,不能把 Release 2208 的双栈配置当成所有 V5 版本都支持。若设备不支持 IPv6 ACL,就不要开放 IPv6 SNMP,只保留受 IPv4 ACL 限制的管理路径。

六、验证方法

1. 在交换机上检查配置

# 查看启用的 SNMP 版本、位置和联系人。
<HQ-Access-01> display snmp-agent sys-info

# 查看 SNMPv3 组,确认安全级别为 privacy,且没有写视图。
<HQ-Access-01> display snmp-agent group

# 查看 SNMPv3 用户是否存在。
<HQ-Access-01> display snmp-agent usm-user

# 查看 ACL 和规则匹配次数。
<HQ-Access-01> display acl 2010
<HQ-Access-01> display acl ipv6 2011

# 查看 SNMP 报文收发和错误统计。
<HQ-Access-01> display snmp-agent statistics

display 命令不会显示可以直接还原的真实密码。验证重点是用户、组、安全级别和 ACL 是否存在。

2. 在网管平台添加设备

在网管系统中填写以下内容:

网管参数 本文示例
设备地址 192.168.100.22001:db8:100::2
SNMP 版本 SNMPv3
安全级别 认证并加密,常显示为 authPriv
用户名 nms_hq01
认证算法 SHA
认证密码 配置时使用的实际认证密码
加密算法 AES128 或平台中的 AES
加密密码 配置时使用的实际加密密码
端口 161/UDP

不同网管平台的字段名称可能不同,但版本、用户名、算法和两个密码必须与交换机一致。

保存后执行一次“测试凭据”“立即采集”或同类操作。不能只看到设备添加成功就结束,还要确认平台能读到:

  1. 设备名称为 HQ-Access-01
  2. 型号和系统描述符合现场设备;
  3. 设备运行时间可以正常刷新;
  4. 端口列表和端口状态能够采集;
  5. 设备位置和联系人与配置一致。

3. 验证来源限制

分别从允许和未允许的主机发起采集:

  1. 网管服务器通过 IPv4 查询,应成功;
  2. 网管服务器通过 IPv6 查询,应成功;
  3. 未加入 ACL 的电脑即使知道用户名和密码,也应无法采集;
  4. 使用错误密码测试一次,应认证失败;
  5. SNMPv1 或 SNMPv2c 查询应失败。

如果平台只支持 IPv4,就验证 IPv4 采集,并确认交换机的 IPv6 SNMP 仍受 ACL 限制。不要因为平台暂时不用 IPv6,就把 IPv6 管理入口留给所有地址。

全部验证正常后保存配置:

# 保存前检查当前配置,确认没有误改其他 SNMP 参数。
<HQ-Access-01> display current-configuration

# 保存配置。
<HQ-Access-01> save force

七、常见问题与处理

1. 网管平台提示认证失败

先核对 SNMP 版本、用户名、认证算法、加密算法和两个密码。网管平台要选择与交换机一致的 SHA,不能看到名称相近就选择 SHA-256

2. IPv4 能采集,IPv6 不能采集

检查网管服务器和交换机的 IPv6 地址、网关及路由,再确认 SNMPv3 用户已经绑定 acl ipv6 2011。中间防火墙也要允许 IPv6 UDP 161。

3. ACL 配置了但限制没有生效

确认 ACL 中已经存在规则,并检查 SNMPv3 用户命令中是否同时绑定了 acl 2010acl ipv6 2011。还要核对允许规则填写的是网管服务器实际发出的源地址。

4. 设备添加成功,但没有端口数据

检查用户所属组是否有读权限,并确认平台使用的是只读查询。本文没有配置写视图,这是正常的安全限制,不影响读取常用设备和端口信息。

5. 改成 SNMPv3 后旧监控中断

通常是网管平台仍在使用旧团体名。先恢复变更前配置,让监控恢复,再在平台和交换机两端同时迁移到 SNMPv3,不能只改其中一端。

八、回退方法

已有 SNMP 配置时,应恢复变更前记录的版本、用户、ACL 和团体名。下面只适用于删除本文新增加的 V7 示例配置:

<HQ-Access-01> system-view

# 关闭 SNMP Agent,删除期间网管平台将无法采集设备。
[HQ-Access-01] undo snmp-agent

# 删除本文创建的 SNMPv3 用户和组。
[HQ-Access-01] undo snmp-agent usm-user v3 nms_hq01 local
[HQ-Access-01] undo snmp-agent group v3 NMS_ReadOnly privacy

# 恢复默认位置和联系人。
[HQ-Access-01] undo snmp-agent sys-info location
[HQ-Access-01] undo snmp-agent sys-info contact

# 仅在 ACL 没有被其他功能使用时删除。
[HQ-Access-01] undo acl basic 2010
[HQ-Access-01] undo acl ipv6 basic 2011
[HQ-Access-01] return

如果只是网管参数填错,不需要删除交换机上的全部 SNMP 配置。先修正平台的用户名、算法或密码,再重新测试。

九、小结

网管平台能发现设备,不等于 SNMP 已经配置安全。SNMPv3 要同时核对用户名、认证、加密和只读权限,还要用 IPv4/IPv6 ACL 把访问来源限制为指定网管服务器。

配置完成后,我会在平台上实际读取设备名称、运行时间和端口状态,再从未允许的电脑做一次失败测试。允许的能采集、未允许的不能采集,才算验证完整。

十、完整配置汇总

下面汇总本文 Comware V7 示例。执行前必须替换网管地址、用户名、两个密码、位置、联系人和 ACL 编号,并确认现场没有同名用户或同号 ACL。

<HQ-Access-01> system-view

# 配置网管平台显示的设备位置和维护联系人。
[HQ-Access-01] snmp-agent sys-info location HQ_3F_Network_Room_Rack_A03
[HQ-Access-01] snmp-agent sys-info contact Network_Team_Ext_8001

# IPv4 ACL:只允许网管服务器 192.168.100.20。
[HQ-Access-01] acl basic 2010
[HQ-Access-01-acl-ipv4-basic-2010] description Permit_IPv4_SNMP_NMS
[HQ-Access-01-acl-ipv4-basic-2010] rule 5 permit source 192.168.100.20 0
[HQ-Access-01-acl-ipv4-basic-2010] rule 100 deny source any
[HQ-Access-01-acl-ipv4-basic-2010] quit

# IPv6 ACL:只允许网管服务器 2001:db8:100::20。
[HQ-Access-01] acl ipv6 basic 2011
[HQ-Access-01-acl-ipv6-basic-2011] description Permit_IPv6_SNMP_NMS
[HQ-Access-01-acl-ipv6-basic-2011] rule 5 permit source 2001:db8:100::20 128
[HQ-Access-01-acl-ipv6-basic-2011] rule 100 deny source any
[HQ-Access-01-acl-ipv6-basic-2011] quit

# 创建只读 SNMPv3 组和用户,要求认证及加密。
[HQ-Access-01] snmp-agent group v3 NMS_ReadOnly privacy

# 下一条是一整条命令;两个占位密码必须替换且不能相同。
# IPv4/IPv6 ACL 直接绑定到该用户。
[HQ-Access-01] snmp-agent usm-user v3 nms_hq01 NMS_ReadOnly simple authentication-mode sha AuthPassword_Replace_Before_Input privacy-mode aes128 PrivPassword_Replace_Before_Input acl 2010 acl ipv6 2011

# 只启用 SNMPv3,再开启 Agent。
[HQ-Access-01] snmp-agent sys-info version v3
[HQ-Access-01] snmp-agent
[HQ-Access-01] return

# 检查组、用户、系统信息、ACL 和收发统计。
<HQ-Access-01> display snmp-agent group
<HQ-Access-01> display snmp-agent usm-user
<HQ-Access-01> display snmp-agent sys-info
<HQ-Access-01> display acl 2010
<HQ-Access-01> display acl ipv6 2011
<HQ-Access-01> display snmp-agent statistics

# 网管平台完成 IPv4/IPv6 采集和未授权来源测试后保存。
<HQ-Access-01> save force

参考资料