为路由实例配置 SNMP
了解路由实例的 SNMP 支持
Junos OS 允许所有路由实例的 SNMP 管理器请求和管理与相应路由实例和逻辑系统网络相关的 SNMP 数据。
在 Junos OS 中:
来自默认路由实例和/或逻辑系统以外的客户端只能访问 MIB 对象并仅在它们所属的路由实例和/或逻辑系统网络上执行 SNMP 操作。
默认路由实例中的客户端可以访问与所有路由实例和逻辑系统网络相关的信息。
Junos 管理路由实例 (
mgmt_junos
) 是一个特殊实例。来自管理路由实例的客户端被视为在默认路由实例中,并且可以访问与所有路由实例和逻辑系统网络相关的信息。
在 Junos OS 8.4 版之前,只有默认路由实例 (inet.0) 中的 SNMP 管理器有权访问 MIB 对象。
随着虚拟专用网络 (VPN) 服务产品的增加,此功能对于需要获取特定路由实例的 SNMP 数据的服务提供商尤其有用(请参阅 图 1)。服务提供商可以将此信息用于自己的管理需求,也可以导出数据以供其客户使用。
如果未在请求中指定路由实例,则 SNMP 代理将像以前一样运行:
对于非路由表对象,将公开所有实例。
对于路由表对象,仅公开与默认路由实例关联的对象。
注:实际的协议数据单元 (PDU) 仍通过默认 (inet.0) 路由实例进行交换,但返回的数据内容由请求 PDU 中指定的路由实例决定。
SNMPv3 管理路由实例
从 Junos OS 19.4R1 开始,通过在所需路由实例中配置 SNMPv3 管理接口,可以访问与所有路由实例和逻辑系统网络相关的信息,而不是特定于入口路由实例的信息。您可以在层次结构级别配置管理实例配置语句 [edit snmp v3]
。
优势
SNMPv3 管理路由实例启用来自非默认路由实例的所有 SNMPv3 请求,就像这些请求来自默认路由实例一样。使用 SNMPv3 管理路由实例,您可以访问与所有路由实例和逻辑系统网络相关的信息。
启用管理路由实例
要启用 SNMPv3 管理路由实例,请执行以下操作:
配置管理实例语句。
[edit]
user@host#set snmp v3 management-routing-instance <routing-instance>
提交配置。
[edit]
user@host#commit
删除管理路由实例
要删除 SNMPv3 管理路由实例,请执行以下操作:
删除或停用 SNMPv3 管理路由实例语句。
[edit]
user@host#delete snmp v3 management-routing-instance <routing-instance>
您无法在 [edit snmp v3 management-routing-instance <routing-instance>
] 层次结构级别配置 Junos 管理路由实例 (mgmt_junos
),因为默认情况下 可以访问mgmt_junos
所有路由实例。
路由实例支持的 SNMP MIB
表 1 显示 Junos OS 支持的特定于企业的 MIB 对象,并提供详细说明在 SNMP 请求中指定路由实例时如何处理这些对象的说明。短划线 (–) 表示该项目不适用。
对象 |
支持类 |
说明/注释 |
---|---|---|
jnx产品(1) |
– |
产品对象 ID |
jnx服务(2) |
– |
服务 |
jnxMibs(3) jnx盒子解剖学(1) |
第 3 类 |
对象仅针对默认逻辑系统公开。 |
MPLS(2) |
第 2 类 |
逻辑系统中的所有实例都会公开。数据不会向下隔离到路由实例级别。 |
ifJnx(3) |
第 1 类 |
仅公开属于特定路由实例的逻辑接口(及其父物理接口)。 |
jnx报警器(4) |
第 3 类 |
对象仅针对默认逻辑系统公开。 |
jnx防火墙(5) |
第 4 类 |
数据不按路由实例隔离。公开所有实例。 |
jnxDCU(6) |
第 1 类 |
仅公开属于特定路由实例的逻辑接口(及其父物理接口)。 |
jnxPingMIB(7) |
第 3 类 |
对象仅针对默认逻辑系统公开。 |
jnxTraceRouteMIB(8) |
第 3 类 |
对象仅针对默认逻辑系统公开。 |
自动取款机(10) |
第 1 类 |
仅公开属于特定路由实例的逻辑接口(及其父物理接口)。 |
jnxIpv6(11) |
第 4 类 |
数据不按路由实例隔离。公开所有实例。 |
jnxIpv4(12) |
第 1 类 |
jnxIpv4AddrTable(1). 仅公开属于特定路由实例的逻辑接口(及其父物理接口)。 |
jnxRmon(13) |
第 3 类 |
jnxRmonAlarmTable(1). 对象仅针对默认逻辑系统公开。 |
jnxLdp(14) |
第 2 类 |
jnxLdpTrapVars(1). 逻辑系统中的所有实例都会公开。数据不会向下隔离到路由实例级别。 |
jnxCos(15) jnxCosIfqStatsTable(1) jnxCosFcTable(2) jnxCosFcIdTable(3) jnxCosQstatTable(4) |
第 3 类 |
对象仅针对默认逻辑系统公开。 |
jnxScu(16) jnxScuStatsTable(1) |
第 1 类 |
仅公开属于特定路由实例的逻辑接口(及其父物理接口)。 |
jnxRpf(17) jnxRpfStatsTable(1) |
第 1 类 |
仅公开属于特定路由实例的逻辑接口(及其父物理接口)。 |
jnxCfgMgmt(18) |
第 3 类 |
对象仅针对默认逻辑系统公开。 |
jnxPMon(19) jnxPMonFlowTable(1) jnxPMonErrorTable(2) jnxPMon内存表(3) |
第 1 类 |
仅公开属于特定路由实例的逻辑接口(及其父物理接口)。 |
jnxSonet(20) jnxSonetAlarmTable(1) |
第 1 类 |
仅公开属于特定路由实例的逻辑接口(及其父物理接口)。 |
jnxAtmCos(21) jnxCosAtmVcTable(1) jnxCosAtmScTable(2) jnxCosAtmVcQstatsTable(3) jnxCosAtmTrunkTable(4) |
第 1 类 |
仅公开属于特定路由实例的逻辑接口(及其父物理接口)。 |
ipSecFlowMonitorMIB(22) |
– |
– |
jnxMac(23) jnxMacStats(1) |
第 1 类 |
仅公开属于特定路由实例的逻辑接口(及其父物理接口)。 |
apsMIB(24) |
第 3 类 |
对象仅针对默认逻辑系统公开。 |
jnx机箱定义(25) |
第 3 类 |
对象仅针对默认逻辑系统公开。 |
jnxVpnMIB(26) |
第 2 类 |
逻辑系统中的所有实例都会公开。数据不会向下隔离到路由实例级别。 |
jnxSericesInfoMib(27) |
第 1 类 |
仅公开属于特定路由实例的逻辑接口(及其父物理接口)。 |
jnxCollectorMIB(28) |
第 1 类 |
仅公开属于特定路由实例的逻辑接口(及其父物理接口)。 |
jnx历史(29) |
– |
– |
jnxSpMIB(32) |
第 3 类 |
对象仅针对默认逻辑系统公开。 |
表 2 显示 Junos OS 支持的 1 类 MIB 对象(标准和企业特定的 MIB)。对于 Class 1 对象,仅公开属于特定路由实例的那些逻辑接口(及其父物理接口)。
类 |
MIB |
对象 |
---|---|---|
第 1 类 |
802.3ad.mib |
(dot3adAgg)MIB 对象: dot3adAggTable dot3adAggPortListTable (dot3adAggPort) dot3adAggPortTable dot3adAggPortStatsTable dot3adAggPortDebugTable |
rfc2863a.mib |
ifTable ifXTable ifStackTable |
|
rfc2011a.mib |
ipAddrTable ipNetToMediaTable |
|
rtmib.mib |
ipForward (ipCidrRouteTable) |
|
rfc2665a.mib |
dot3统计表 dot3控件表 dot3暂停表 |
|
rfc2495a.mib |
dsx1配置表 dsx1当前表 dsx1间隔表 dsx1总计表 dsx1FarEndCurrentTable dsx1远端间隔表 dsx1FarEndTotalTable dsx1FracTable ... |
|
rfc2496a.mib |
dsx3 (dsx3ConfigTable) |
|
rfc2115a.mib |
frDlcmiTable(以及相关的 MIB 对象) |
|
RFC3592.MIB |
sonetMediumTable(和相关 MIB 对象) |
|
RFC3020.MIB |
mfrMIB mfrBundleTable mfrMibBundleLinkObjects mfrBundleIfIndexMappingTable (以及相关的 MIB 对象) |
|
ospf2mib.mib |
所有对象 |
|
ospf2trap.mib |
所有对象 |
|
bgpmib.mib |
所有对象 |
|
rfc2819a.mib |
示例:以太统计表 |
|
第 1 类 |
RFC2863a.mib |
示例: ifXtable ifStackTable |
RFC2665A.MIB |
以太MIB |
|
rfc2515a.mib |
atmMIB 对象 示例: atmInterfaceConfTable atmVplTable atmVclTable |
|
RFC2465.MIB |
IP-v6MIB 示例: IPv6IfTable ipv6地址前缀表 ipv6NetToMediaTable IPv6路由表 |
|
rfc2787a.mib |
VRRP MIB |
|
RFC2932.MIB |
ipMRouteMIB ipMRouteStdMIB |
|
mroutemib.mib |
ipMRoute1MIBObjects |
|
isismib.mib |
伊西斯米布 |
|
pimmib.mib |
pimMIB |
|
msdpmib.mib |
msdpmib |
|
jnx-if-extensions.mib |
示例: ifJnxTable if机箱表 |
|
jnx-dcu.mib |
jnxDCU |
|
jnx-atm.mib |
示例: jnxAtmIfTable jnxAtmVCTable jnxAtmVpTable |
|
JNX-IPv4.miB |
jnxipv4 示例:jnxIpv4AddrTable |
|
jnx-cos.mib |
示例: jnxCosIfqStatsTable jnxCosQstatTable |
|
jnx-scu.mib |
示例:jnxScuStatsTable |
|
jnx-rpf.mib |
示例:jnxRpfStatsTable |
|
jnx-pmon.mib |
示例:jnxPMonFlowTable |
|
jnx-sonet.mib |
示例:jnxSonetAlarmTable |
|
第 1 类 |
jnx-atm-cos.mib |
示例: jnxCosAtmVcTable jnxCosAtmVcScTable jnxCosAtmVcQstatsTable jnxCosAtmTrunkTable |
jnx-mac.mib |
示例:jnxMacStatsTable |
|
jnx-services.mib |
示例:jnxSvcFlowTableAggStatsTable |
|
jnx-coll.mib |
jnxCollectorMIB 示例: jnxCollPicIfTable jnxCollFileEntry |
表 3 显示 Junos OS 支持的 2 类 MIB 对象(标准和企业特定的 MIB)。对于类 2 对象,将公开逻辑系统中的所有实例。数据不会向下隔离到路由实例级别。
类 |
MIB |
对象 |
---|---|---|
第 2 类 |
RFC3813.MIB |
mplsLsrStdMIB 示例: mpls接口表 mplsInSegmentTable mplsOutSegmentTable mplsLabelStackTable mplsXCTable (以及相关的 MIB 对象) |
igmpmib.mib |
igmpStdMIB 注:
这是 |
|
l3vpnmib.mib |
mplsVpnmib |
|
jnx-mpls.mib |
示例:mplsLspList |
|
jnx-ldp.mib |
jnxLdp 示例:jnxLdpStatsTable |
|
jnx-vpn.mib |
jnxVpnMIB |
|
jnx-bgpmib2.mib |
jnxBgpM2实验 |
表 4 显示 Junos OS 支持的 3 类 MIB 对象(标准和企业特定的 MIB)。对于类 3,对象仅针对默认逻辑系统公开。
类 |
MIB |
对象 |
---|---|---|
第 3 类 |
RFC2819a.mib |
rmon事件 报警表 日志表 事件表 代理xMIB |
rfc2925a.mib |
平米布 |
|
rfc2925b.mib |
tracerouteMIB |
|
jnxchassis.mib |
jnxBox解剖学 |
|
jnx-chassis-alarm.mib |
jnx警报 默认情况下,SRX 系列防火墙仅在冗余组 0 (RG0) 的主节点上查询 jnx警报 mib,而不在辅助节点上查询。 |
|
jnx-ping.mib |
jnxPingMIB |
|
jnx-traceroute.mib |
jnxTraceRouteMIB |
|
jnx-rmon.mib |
jnxRmonAlarmTable |
|
jnx-cos.mib |
示例:jnxCosFcTable |
|
jnx-cfgmgmt.mib |
示例:jnxCfgMgmt |
|
jnx-sonetaps.mib |
apsMIBObjects |
|
jnx-sp.mib |
jnxSpMIB |
|
ggsn.mib |
ejnmobileipABmib |
|
RFC1907.MIB |
snmp模块 |
|
snmp模块 |
示例: snmpMIB snmpFrameworkMIB |
表 5 显示 Junos OS 支持的 4 类 MIB 对象(标准和企业特定的 MIB)。对于 Class 4 对象,数据不会按路由实例隔离。公开所有实例。
类 |
MIB |
对象 |
---|---|---|
第 4 类 |
系统 |
示例:系统可操作 |
RFC2011a.mib |
ip (ipDefaultTTL, ipInReceives) ICMP |
|
rfc2012a.mib |
啧啧�� tcp连接表 ipv6TcpConnTable |
|
rfc2013a.mib |
UDP udpTable ipv6UdpTable |
|
rfc2790a.mib |
小时系统 |
|
rfc2287a.mib |
sysApplOBJ |
|
jnx-firewall.mib |
jnx防火墙 |
|
JNX-IPv6.miB |
jnxIpv6 |
MIB 对象的支持类
指定路由实例时,所有与路由相关的 MIB 对象都将返回路由实例在请求中维护的数据。对于所有其他 MIB 对象,返回的数据将根据该路由实例进行隔离。例如,SNMP 代理仅公开分配给该路由实例的接口(例如,逻辑接口 [ifls] 及其相应的物理接口 [ifds])。同样,与接口具有明确附件的对象(例如,地址)也会被隔离。
对于附件不明确的对象(例如,sysApplMIB 中的对象),不会进行隔离,并且所有实例在所有情况下都可见。
仅当未指定逻辑系统(仅在默认逻辑系统中)时,无论默认逻辑系统中的路由实例如何,另一类对象才可见。此类别中的对象包括机箱 MIB 对象、SNMP 组中的对象、RMON 报警、事件和日志组、Ping MIB 对象、配置管理对象和 V3 对象。
总之,为了支持路由实例,MIB 对象属于以下类别之一:
类 1 — 数据根据请求中的路由实例进行隔离。这是隔离类中最精细的。
类 2 — 根据请求中指定的逻辑系统隔离数据。对于属于特定逻辑系统的所有路由实例,将返回相同的数据。通常,这适用于难以提取路由实例信息或不适用路由实例的路由表对象。
类 3 - 仅为默认逻辑系统公开数据。对于属于默认逻辑系统的所有路由实例,将返回相同的数据集。如果指定其他逻辑系统(不是默认系统),则不会返回任何数据。通常,此类适用于在不监视逻辑系统更改并仅使用默认上下文注册其对象的子代理中实现的对象(例如,机箱 MIB 对象)。
类 4 — 数据未按路由实例隔离。为所有路由实例返回相同的数据。通常,这适用于在子代理中实现的对象,这些子代理程序监视逻辑系统更改,并为每个逻辑系统更改注册或取消注册其所有对象。其值无法按路由实例隔离的对象属于此类。
有关与每个类关联的对象的列表,请参阅 路由实例支持的 SNMP MIB 。
路由实例支持的 SNMP 陷阱
您可以限制陷阱接收器接收与其所属的逻辑系统网络无关的陷阱。为此,请在层次结构级别包含 logical-system-trap-filter
语句 [edit snmp]
:
[edit snmp] logical-system-trap-filter;
如果语句 logical-system-trap-filter
未包含在 SNMP 配置中,则所有陷阱都将转发到配置的路由实例目标。但是,即使配置了此语句,与默认路由实例关联的陷阱接收器也将接收所有 SNMP 陷阱。
在陷阱组对象下配置时,应用于路由实例(或属于路由实例的接口)的所有 v1 和 v2c 陷阱都将路由实例名称编码在社区字符串中。编码与请求 PDU 中使用的编码相同。
对于在 v3 框架下配置的陷阱,配置 v3 消息处理模型后,路由实例名称将包含在上下文字段中。对于其他消息处理模型(v1 或 v2c),路由实例名称不会在陷阱消息头中携带(也不会在社区字符串中编码)。
标识路由实例
借助此功能,路由实例由 v3 请求中的上下文字段标识,或在 v1 或 v2c 请求中的社区字符串中编码。
在社区字符串中编码时,路由实例名称首先出现,并用字符与 @
实际的社区字符串分隔。
Junos SNMP 代理使用 @
特殊字符将特定路由实例信息指定为社区字符串的一部分。例如,如果在设备上为社区配置了路由实例,则 SNMP 查询中使用的社区字符串为 routinginstance@community
。
如果要从 NMS 轮询设备并检索所有路由实例的统计信息,则应在 SNMP 查询 @community
中使用社区字符串为 。不要在 @
字符前指定任何路由实例名称。
为了避免与包含该字符的有效 @
社区字符串发生冲突,仅当典型的社区字符串处理失败时,才会解析社区。例如,如果配置了名为的RI
路由实例,则会在该路由实例的RI
上下文中处理 的 RI@public
SNMP 请求。访问控制(视图、源地址限制、访问权限等)是根据实际的社区字符串(在本例public
中为字符后的@
数据集)应用的。但是,如果配置了社区字符串 RI@public
,则会根据该社区处理协议数据单元 (PDU),并忽略嵌入的路由实例名称。
逻辑系统执行物理路由器操作的子集,并具有自己唯一的路由表、接口、策略和路由实例。在逻辑系统中定义路由实例时,必须使用斜杠 ( ) /
对逻辑系统名称与路由实例一起进行编码,以分隔两者。例如,如果在逻辑系统中LS
配置了路由实例RI
,则该路由实例必须在社区字符串中编码为 LS/RI@public
。在逻辑系统外部(默认逻辑系统内)配置路由实例时,不需要逻辑系统名称(或 /
字符)。
此外,创建逻辑系统时,始终会在逻辑系统中创建默认路由实例(名为 default
)。查询该路由实例的数据时,应使用此名称(例如 LS/default@public
)。对于 v3 请求,应直接在上下文字段中标识名称 logical system/routing instance 。
要识别虚拟 LAN (VLAN) 生成树实例(MX 系列 5G 通用路由平台上的 VSTP),请指定路由实例名称,后跟双冒号 (::
) 和 VLAN ID。例如,要在全局默认路由实例中标识 VLAN 10 的 VSTP 实例,请包含在 default::10@public
(SNMPv3) 或 community
(SNMPv1 或 v2) 字符串中context
。
通过路由实例启用 SNMP 访问
要使默认路由实例以外的路由实例中的 SNMP 管理器能够访问 SNMP 信息,请在层次结构级别包含 routing-instance-access
语句 [edit snmp]
。
如果此语句未包含在 SNMP 配置中,则来自默认路由实例以外的路由实例的 SNMP 管理器无法访问 SNMP 信息。此设置适用于对任何版本的 SNMP(SNMP v1、v2 或 v3)的请求。
在 SNMPv1 或 SNMPv2c 社区中指定路由实例
将客户端添加到 SNMP 社区时,可以指定路由实例以及客户端信息。要指定客户端所属的路由实例,请在 routing-instance
SNMP 配置中包含语句,后跟路由实例名称和客户端信息。
以下示例显示了将路由实例 test-ri 添加到 SNMP 社区 community1 的配置语句。
在层次结构级别指定的 [edit snmp community community-name]
路由实例将添加到社区中的默认逻辑系统中。
[edit snmp] community community1 { clients { 10.209.152.33/32; } routing-instance test-ri { clients { 10.19.19.1/32; } } }
如果路由实例是在逻辑系统中定义的,请在 [edit snmp community community-name logical-system logical-system-name
] 层次结构级别包含该routing-instance
语句,如以下示例所示:
[edit snmp] community community1 { clients { 10.209.152.33/32; } logical-system test-LS { routing-instance test-ri { clients { 10.19.19.1/32; } } } }
示例:配置路由实例的接口设置
此示例显示了分配给名为 INFrtd 的路由实例的 802.3ad ae0 接口配置:
[edit chassis] aggregated-devices { ethernet { device-count 5; } } [edit interfaces ae0] vlan-tagging; aggregated-ether-options { minimum-links 2; link-speed 100m; } unit 0 { vlan-id 100; family inet { address 10.1.0.1/24; } } [edit interfaces fe-1/1/0] fastether-options { 802.3ad ae0; } [edit interfaces fe-1/1/1] fastether-options { 802.3ad ae0; } [edit routing-instances] INFrtd { instance-type virtual-router; interface fe-1/1/0.0; interface fe-1/1/1.0; interface fe-1/1/5.0; interface ae0.0; protocols { ospf { area 0.0.0.0 { interface all; } } } }
以下命令 snmpwalk
显示如何从路由器 1 和属于具有 SNMP 社区的路由实例 INFrtd 的 802.3ae 捆绑接口检索 SNMP 相关信息 public
:
router# snmpwalk -Os router1 INFrtd@public dot3adAggTable dot3adAggMACAddress.59 = 0:90:69:92:93:f0 dot3adAggMACAddress.65 = 0:90:69:92:93:f0 dot3adAggActorSystemPriority.59 = 0 dot3adAggActorSystemPriority.65 = 0 dot3adAggActorSystemID.59 = 0:0:0:0:0:0 dot3adAggActorSystemID.65 = 0:0:0:0:0:0 dot3adAggAggregateOrIndividual.59 = true(1) dot3adAggAggregateOrIndividual.65 = true(1) dot3adAggActorAdminKey.59 = 0 dot3adAggActorAdminKey.65 = 0 dot3adAggActorOperKey.59 = 0 dot3adAggActorOperKey.65 = 0 dot3adAggPartnerSystemID.59 = 0:0:0:0:0:0 dot3adAggPartnerSystemID.65 = 0:0:0:0:0:0 dot3adAggPartnerSystemPriority.59 = 0 dot3adAggPartnerSystemPriority.65 = 0 dot3adAggPartnerOperKey.59 = 0 dot3adAggPartnerOperKey.65 = 0 dot3adAggCollectorMaxDelay.59 = 0 dot3adAggCollectorMaxDelay.65 = 0
示例:在社区中配置路由实例
此示例显示 社区 myCommunity1的路由实例InBandManagement的配置。
路由实例仅限于接口 et-0/0/16。受限客户端按策略选项中的配置进行 SNMPClients 配置。
user@host# show interfaces
et-0/0/16:0 { unit 0 { family inet { address 192.168.1.3/24; } } }user@host# show policy-options
prefix-list SNMPClients { 10.0.10.2/32; 192.168.1.2/32; }user@host# show snmp
{ community myCommunity1 { authorization read-only; routing-instance InBandManagement { client-list-name SNMPClients; } } routing-instance-access; }user@host# show routing-instances
routing-instances { InBandManagement { instance-type virtual-router; interface et-0/0/16:0.0; } }
以下命令 snmpwalk
显示如何将 SNMP 请求从配置的客户端发送到接口 et-0/0/16 ,如下所示 routinginstance@community:
user@ubuntu:~# snmpwalk -v2c -c InBandManagement@myCommunity1 -On 192.168.1.3 SNMPv2-MIB::sysDescr
为通过路由实例进行的 SNMP 访问配置访问列表
您可以创建和维护访问列表以管理对 SNMP 信息的访问。访问列表配置允许您允许或拒绝对特定路由实例的客户端的 SNMP 访问,并适用于任何版本 SNMP 的请求。
以下示例演示如何创建访问列表:
[edit snmp] routing-instance-access { access-list { ri1 restrict; ls1/default; ls1/ri2; ls1*; } }
示例中给出的配置:
限制 中的
ri1
客户端访问 SNMP 信息。允许 、
ls1/ri2
以及名称以 开头的ls1
所有其他路由实例中的ls1/default
客户端访问 SNMP 信息。
您可以使用通配符 (*) 来表示路由实例名称中的字符串。
不能限制默认路由实例的 SNMP 管理器访问 SNMP 信息。