我正在尝试使用 SNMPv3 了解交换机映射。我注意到正在进行身份验证的组(用户)需要访问以context
映射 VLAN。我发现这可以通过以下命令完成:
snmp-server group [groupname] v3 priv context [vlanID / match]
但是,似乎并非所有 IOS 版本都支持匹配功能,并且上下文功能似乎也未出现在所有 Cisco IOS 版本中。谁能帮助我更好地了解这一切的背景?(没有双关语)
我正在尝试使用 SNMPv3 了解交换机映射。我注意到正在进行身份验证的组(用户)需要访问以context
映射 VLAN。我发现这可以通过以下命令完成:
snmp-server group [groupname] v3 priv context [vlanID / match]
但是,似乎并非所有 IOS 版本都支持匹配功能,并且上下文功能似乎也未出现在所有 Cisco IOS 版本中。谁能帮助我更好地了解这一切的背景?(没有双关语)
根据 Internet 标准组织 (IETF),SNMP 上下文描述如下:
https://www.rfc-editor.org/rfc/rfc5343
在管理域内,SNMP 引擎由 snmpEngineID 值[RFC3411]唯一标识。一个 SNMP 实体,由一个 SNMP 引擎和几个 SNMP 应用程序组成,可以提供对多个上下文的访问。
SNMP 上下文是 SNMP 实体可访问的管理信息的集合。一项管理信息可能存在于多个上下文中,并且一个 SNMP 实体可能有权访问许多上下文[RFC3411]。上下文由托管管理信息的实体的 snmpEngineID 值(也称为 contextEngineID)和标识特定上下文的上下文名称(也称为 contextName)来标识。
为了识别管理域中的单个管理信息项,使用了一个四元组,包括
- 一个 contextEngineID,
- 一个上下文名称,
- 对象类型,以及
- 它的实例标识。
最后两个元素编码在对象标识符 (OID) 值中。contextName 是一个字符串(遵循 SNMP-FRAMEWORK-MIB [RFC3411]的 SnmpAdminString 文本约定),而 contextEngineID 是根据定义为 SNMP-FRAMEWORK-MIB 的 SnmpEngineID 文本约定的一部分的规则构造的八位字节字符串[RFC3411]。
SNMP 协议操作和协议数据单元 (PDU) 在 OID 上运行,因此处理对象类型和实例 [RFC3416]。SNMP 体系结构[RFC3411]将 scopedPDU的概念引入为包含 contextEngineID、contextName 和 PDU 的数据结构。SNMP 版本 3 (SNMPv3) 消息格式使用 ScopedPDU 来交换管理信息[RFC3412]。
在 SNMP 框架内,contextEngineID 用作端到端标识符。这在部署 SNMP 代理以在协议版本之间进行转换或跨中间件(例如网络地址转换器)的情况下变得很重要。此外,snmpEngineID 将 SNMP 引擎的标识与用于与 SNMP 引擎通信的传输地址分开。此属性可用于轻松关联管理信息,即使在使用多个不同传输来检索信息或传输地址可以动态更改的情况下也是如此。
要从 SNMPv3 代理检索数据,必须知道适当的 contextEngineID。SNMPv3 的基于用户的安全模型 (USM) 提供了一种发现远程 SNMP 引擎的 snmpEngineID 的机制,因为出于安全处理的原因需要这样做。发现的 snmpEngineID 随后可用作 ScopedPDU 中的 contextEngineID,以访问远程 SNMP 引擎本地的管理信息。
为了澄清您的评论“看起来它们在添加后的某个时候从 IOS 中删除了。 ”
那不是真的。Cisco 设备仍然支持新 IOS、IOS-XE、NXOS 等上的 SNMP 上下文。
过去需要配置对每个“vlan-*”上下文的访问。较新版本的 IOS 支持使可伸缩性更容易的“匹配前缀”语法。
配置因 IOS 版本和型号类型而有很大差异。
例子:
Cisco 2960/S/X 等 IOS 版本 15.XX(X)(已测试 - https://communities.ca.com/thread/100549100):
Given:
View Name - View1
Group Name - Group1
Access List - Access1
User - User1
SHA pass - password1
AES pass - password2
Location - Location1
Contact - Contact1
Then:
conf t
ip access-list standard Access1 (create access list "Access1")
permit any (grant permissions in the list)
end
conf t
snmp-server view View1 system included (create the view "View1", add "system" SNMP info to the view)
snmp-server view View1 internet included (add "internet" SNMP info to the view)
snmp-server group Group1 V3 priv access Access1 (create the group "Group1" with access through access list "Access1")
snmp-server group Group1 V3 priv read View1 (use "View1" with the group)
snmp-server group Group1 V3 priv context vlan- match prefix (add context names to the group, this will add all context names starting with "vlan-" which is what Spectrum wants to see)
snmp-server user User1 Group1 v3 auth sha password1 priv aes 128 password2 (create a user in group "Group1" with SNMPv3 credentials)
snmp-server location Location1 (set the switch location in the SNMP)
snmp-server contact Contact1 (set the switch contact information in SNMP)
end
wr
Make changes as required ie permission in the access list.
We used view "v1default" and added "system" to it, it already had "internet"
Cisco 3750 IOS 版本 12.2(55)SE10(已测试 - https://switchportmapper.com/support-mapping-a-cisco-switch-using-snmpv3.htm)
如何在 Cisco Switch IOS CLI 中启用 SNMPv3
Switch>enable
Switch#config term
- 这允许您编辑运行配置。(注意:要删除以下 3 个命令中的任何一个,请使用 'no snmp-server view
'、'no snmp-server group
' 或 'no snmp-server user
')- 为测试 SNMPv3 用户创建一个视图:
Switch(config)#snmp-server view testv3view internet included
- 创建一个组以访问视图:
Switch(config)#snmp-server group testv3group v3 priv read testv3view write testv3view
- 为组创建用户:
Switch(config)#snmp-server user testv3user testv3group v3 auth md5 Passw0rd priv des Passw0rd
- 通过输入以下命令激活上下文前缀匹配:
Switch(config)#snmp-server group yourV3groupName v3 auth context vlan-
匹配前缀(如果您不这样做,托管交换机端口映射工具将给出错误消息,声称它无法访问 Bridge Mib,即使映射的其余部分似乎工作。请参阅下一节,如果您的 IOS 版本不支持该命令)Switch(config)#Ctrl-z
- 可以选择将其保存到启动配置中
Switch#copy running-config startup-config
问题:我的 Cisco 3750 交换机使用 SNMPv1 或 v2c 映射良好,但使用 SNMPv3 我不再看到 MAC 地址、IP 地址、VLAN 或主机名。交换机端口映射器有什么问题?
交换机端口映射器没有任何问题。问题出在交换机及其配置设置中。
背景:Cisco 使用 SNMPv1 和 SNMPv2c 的“社区名称索引”来允许我们从 BRIDGE-MIB 获取 VLAN 特定信息。在 SNMPv3 中,他们通过使用 SNMPv3 上下文来使用这种技术的变体。每个请求的 VLAN 都会更改上下文字段,以便 BRIDGE-MIB 为我们提供该特定 VLAN 所需的信息。问题不是所有版本的 IOS 都支持上下文,为了请求每个 VLAN 的上下文信息,您必须通过 CLI 更改运行配置。如果未配置交换机,则此软件和任何其他交换机映射软件都无法将交换机与 SNMPv3 映射。
首先,您需要查看您的交换机是否支持上下文。从 CLI 运行此命令:
Switch>enable Switch#show snmp context vlan-1 vlan-3 vlan-1005 vlan-1005 vlan-1005 vlan-1005
假设您的交换机确实支持上下文,接下来检查您的交换机是否支持前缀匹配。
在您的运行配置中添加:
Switch>enable Switch#config term Switch#snmp-server group yourV3groupName v3 auth context vlan- match prefix (don't forget the dash after vlan) Switch(config)#Ctrl-z
如果交换机确实支持使用该版本的 IOS 或更高版本的每个 Cisco 交换机的前缀匹配,并且您打算映射的 SNMPv3 必须在配置中包含该命令 - 您可以跳过下一部分 - 您就完成了。
如果交换机不支持前缀匹配,你有很多工作要做。每个 VLAN 都必须为其设置上下文。您必须将此命令添加到每个 VLAN 的运行配置中:
snmp-server group yourV3groupName v3 priv context vlan-(vlanid)
因此,如果交换机上有 10 个 VLAN,则该命令必须出现 10 次,每个 VLAN 一次(“vlanid”周围没有括号,您可能希望在末尾添加“access #”)。
vlan 编号为 6、100、117 和 200 的交换机示例(注意可选的访问列表语句):
Switch>enable Switch#config term Switch(config)#snmp-server group yourV3groupName v3 priv context vlan-6 Switch(config)#snmp-server group yourV3groupName v3 priv context vlan-100 Switch(config)#snmp-server group yourV3groupName v3 priv context vlan-117 Switch(config)#snmp-server group yourV3groupName v3 priv context vlan-200 access 51 Switch(config)#Ctrl-z
重要提示:“vlan-”上下文可能与您可能使用的 SNMP 上下文不同 - 无论使用前缀匹配还是单个条目,您都必须在本主题的上述语句中使用 vlan- 上下文。将 vlan- 视为“保留”上下文以避免混淆。本主题之前的主题根本不使用 SNMPv3 上下文。
更多问题?看到这个线程: https: //supportforums.cisco.com/thread/2036734
我相信分界点是 12.2(50)。12.2(4x) 和更早版本不支持匹配前缀语句,但版本 50 和更新版本支持。至少那是我通过各种交换机组合发现的。