← 回到技术随笔
· 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-mode 或 privacy-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 软件可能没有 simple 或 acl 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.2 或 2001: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 2010 和 acl 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

参考资料