在本页
配置基本 SNMP
配置 SNMP
您可以在 QFX 系列和 OCX 系列产品上运行的 Junos OS 软件中实施 SNMP。默认情况下,SNMP 未启用。要启用 SNMP,必须在层次结构级别包含 SNMP 配置语句 [edit]
。
要配置 SNMP 的最低要求,请在配置的层次结构级别使用以下语句 [edit]
:
[edit] snmp { community public; }
要配置完整的 SNMP 功能,请参阅 snmp。
[编辑 snmp] 层级的配置语句
本主题显示层级的所有配置语句, [edit snmp]
及其在配置层次结构中级别。配置 Junos OS 时,您当前的层次结构级别显示在提示符前 user@host#
行的横幅中。
[edit] snmp { alarm-management { alarm-list-name list-name { alarm-id id { alarm-state state { description alarm-description; notification-id notification-id-of-alarm; resource-prefix alarm-resource-prefix; varbind-index varbind-index-in-alarm-varbind-list; varbind-subtree alarm-varbind-subtree; varbind-value alarm-varbind-value; } } } } client-list client-list-name { ip-addresses; } community community-name { authorization authorization; client-list-name client-list-name; clients { address <restrict>; } logical-system logical-system-name { routing-instance routing-instance-name; clients { address <restrict>; } } routing-instance routing-instance-name { clients { address <restrict>; } } view view-name; } contact contact; description description; engine-id { (local engine-id | use-default-ip-address | use-mac-address); } filter-duplicates; interface [ interface-names ]; location location; name name; nonvolatile { commit-delay seconds; } rmon { alarm index { description description; falling-event-index index; falling-threshold integer; falling-threshold-interval seconds; interval seconds; request-type (get-next-request | get-request | walk-request); rising-event-index index; rising-threshold integer; sample-type type; startup-alarm alarm; syslog-subtag syslog-subtag; variable oid-variable; } event index { community community-name; description description; type type; } } traceoptions { file filename <files number> <size size> <world-readable | no-world-readable> <match regular-expression>; flag flag; memory-trace; no-remote-trace; no-default-memory-trace; } trap-group group-name { categories { category; } destination-port port-number; routing-instance instance; logical-system logical-system-name; targets { address; } version (all | v1 | v2); } trap-options { agent-address outgoing-interface; source-address address; enterprise-oid; logical-system logical-system-name { routing-instance routing-instance-name { source-address address; } } routing-instance routing-instance-name { source-address address; } } v3 { notify name { tag tag-name; type (trap | inform); } notify-filter profile-name { oid oid (include | exclude); } snmp-community community-index { community-name community-name; security-name security-name; tag tag-name; } target-address target-address-name { address address; address-mask address-mask; logical-system logical-system; port port-number; retry-count number; routing-instance instance; tag-list tag-list; target-parameters target-parameters-name; timeout seconds; } target-parameters target-parameters-name { notify-filter profile-name; parameters { message-processing-model (v1 | v2c | v3); security-level (authentication | none | privacy); security-model (usm | v1 | v2c); security-name security-name; } } usm { local-engine { user username { authentication-md5 { authentication-password authentication-password; } authentication-none; authentication-sha { authentication-password authentication-password; } privacy-3des { privacy-password privacy-password; } privacy-aes128 { privacy-password privacy-password; } privacy-des { privacy-password privacy-password; } privacy-none; } } } vacm { access { group group-name { (default-context-prefix | context-prefix context-prefiix){ security-model (any | usm | v1 | v2c) { security-level (authentication | none | privacy) { notify-view view-name; read-view view-name; write-view view-name; } } } } } security-to-group { security-model (usm | v1 | v2c) { security-name security-name { group group-name; } } } } } view view-name { oid object-identifier (include | exclude); } }
配置 SNMP 的基本设置
以下部分包含有关基本 SNMP 配置的信息,以及一些在运行 Junos OS 的设备上配置基本 SNMP 操作的示例:
配置 SNMPv1 和 SNMPv2 的基本设置
默认情况下,您无法在运行 Junos OS 的设备上启用 SNMP。要启用运行 Junos OS 的设备上的 SNMP,请将语句 community public
包含在 [edit snmp]
层次结构级别。
启用 SNMPv1 和 SNMPv2 获取和获取下一步操作
[edit] snmp { community public; }
一个社区,定义为向任何客户端公开授予对所有 MIB 数据的访问权限。
要在设备上启用 SNMPv1 和 SNMPv2 Set
操作,必须在层次结构级别包含以下语句 [edit snmp]
:
启用 SNMPv1 和 SNMPv2 集操作
[edit snmp] view all { oid .1; } community private { view all; authorization read-write; }
以下示例显示了设备上的 SNMPv1 和 SNMPv2 陷阱的基本最低配置:
配置 SNMPv1 和 SNMPv2 陷阱
[edit snmp] trap-group jnpr { targets { 192.168.69.179; } }
配置 SNMPv3 的基本设置
以下示例显示了设备上用于启用Get
和Set
GetNext
操作的最低 SNMPv3 配置(请注意,配置已将身份验证设置为,并设置为md5
隐私):none
启用 SNMPv3 Get、GetNext 和设置操作
[edit snmp] v3 { usm { local-engine { user jnpruser { authentication-md5 { authentication-key "$9$guaDiQFnAuOQzevMWx7ikqP"; ## SECRET-DATA } privacy-none; } } } vacm { security-to-group { security-model usm { security-name jnpruser { group grpnm; } } } access { group grpnm { default-context-prefix { security-model any { security-level authentication { read-view all; write-view all; } } } } } } } view all { oid .1; }
以下示例显示了设备上的 SNMPv3 基本配置(配置具有身份验证和隐私设置 none
):
配置 SNMPv3 通知
[edit snmp] v3 { usm { remote-engine 00000063200133a2c0a845c3 { user RU2_v3_sha_none { authentication-none; privacy-none; } } } vacm { security-to-group { security-model usm { security-name RU2_v3_sha_none { group g1_usm_auth; } } } access { group g1_usm_auth { default-context-prefix { security-model usm { security-level authentication { read-view all; write-view all; notify-view all; } } } } } } target-address TA2_v3_sha_none { address 192.168.69.179; tag-list tl1; address-mask 255.255.252.0; target-parameters TP2_v3_sha_none; } target-parameters TP2_v3_sha_none { parameters { message-processing-model v3; security-model usm; security-level none; security-name RU2_v3_sha_none; } notify-filter nf1; } notify N1_all_tl1_informs { type inform; # Replace inform with trap to convert informs to traps. tag tl1; } notify-filter nf1 { oid .1 include; } } view all { oid .1 include; }
您可以在层级trap
将语句的值设置为以下示例中所示,type
[edit snmp v3 notify N1_all_tl1_informs]
从而将 SNMPv3 通知转换为陷阱:
将信息转换为陷阱
user@host# set snmp v3 notify N1_all_tl1_informs type trap
另请参阅
配置 SNMP 详细信息
您可以使用 SNMP 存储基本管理详细信息,如联系人名称和设备的位置。然后,当您对问题进行故障排除或执行审计时,您的管理系统可以远程检索这些信息。在 SNMP 术语中,这些是 MIB-2 系统组内的 sysName、sysContact、sys 描述和 sysLocation 对象(如 RFC 1213 ,用于基于 TCP/IP 的互联网的网络管理信息库中定义):MIB-II)。您可以直接在 Junos OS 配置中为由 SNMP 管理的每个系统设置初始值。
对于由 SNMP 管理的设备,请始终配置和更新名称、位置、联系人和说明信息。
要设置 SNMP 详细信息:
优化网络管理系统配置以获得最佳结果
您可以修改网络管理系统配置,以优化 SNMP 查询的响应时间。以下部分包含有关如何配置网络管理系统的一些提示:
将轮询方法从逐列更改为逐行
您可以将网络管理系统配置为使用逐行方法轮询 SNMP 数据。显然,逐行和多行多行轮询方法比逐列轮询效率更高。
通过将网络管理系统配置为使用逐行数据轮询方法,您可以:
-
在逐列轮询的情况下,仅针对一个接口轮询数据,而不是为多个接口轮询单个请求轮询数据。
-
降低请求超时的风险。
减少每个 PDU 的可变绑定数量
您可以通过减少每个协议数据单元 (PDU) 的变量绑定数量来缩短 SNMP 请求的响应时间。轮询与映射到不同索引条目的多个对象相关的数据的请求,在设备端转换为多个请求。这是因为子代理可能需要轮询不同的模块才能获得链接到不同索引条目的数据。
建议的方法是确保请求中只有链接到一个索引条目的对象,而不是链接到不同索引条目的多个对象。
如果来自设备的响应较慢,请避免使用 GetBulk
设备的选项,因为 GetBulk
请求可能包含链接到各种索引条目的对象,并可能会进一步增加响应时间。
snmp 批量获取建议的 OID 数量和最大重复数
SNMP 批量获取请求使用总共(最大重复次数 * OID 数)变量绑定进行响应。当查询中存在接口统计信息对象(如InOctets、ifOutOctets 等)时,请求会发送到较低的层。因此,在批量获取请求中发送的最大重复量增加会对响应产生影响。对于接口统计信息对象的批量获取查询,建议使用“最大重复数”值 10,每个请求的最大 10 个 OID 数。
增加轮询和发现间隔中的超时值
通过增加轮询和发现间隔的超时值,您可以:
-
增加设备端的排队时间。
-
减少由于请求超时而发生的节流丢弃次数。
在 snmpd 时降低传入数据包速率
以下方法可降低在任何设备上堆积 SNMP 请求的风险。
-
降低向设备发送 SNMP 请求的频率。
-
增加轮询间隔。
-
控制请求的使用
GetNext
。 -
减少每台设备的轮询站数量。
在托管设备上配置选项,以改进 SNMP 响应时间
以下部分包含有关可增强 SNMP 性能的托管设备上的配置选项的信息:
启用统计信息-缓存生存期选项
Junos OS 为您提供了一个选项,用于配置缓存接口统计信息的时间长度(以秒为单位)。如果 NMS 在缓存时间内再次查询同一接口,则返回相同的数据。如果 NMS 在缓存时间之后进行查询,则缓存不再有效,将从下层获取新数据,并更新缓存时间戳。默认为 stats-cache-lifetime
5 秒。这可以根据轮询频率进行调整。
降低 stats-缓存生存期选项的值会导致更多的查询,并可能影响性能。要获取实时未缓存的统计信息,可将 stats-cache-生存期选项的值设置为 0。但是,不建议这样做,因为它会完全禁用缓存功能并影响性能。
过滤掉重复的 SNMP 请求
如果网络管理站频繁地将 、 GetNext
或 GetBulk
SNMP 请求重新传输Get
至设备,则此请求可能会干扰先前请求的处理并减慢代理的响应时间。过滤这些重复请求可缩短 SNMP 代理的响应时间。借助 Junos OS,您可以过滤掉重复 Get
请求 GetNext
和 GetBulk
SNMP 请求。Junos OS 使用以下信息来确定 SNMP 请求是否为重复请求:
SNMP 请求的源 IP 地址
SNMP 请求的源 UDP 端口
SNMP 请求的请求 ID
默认情况下,在运行 Junos OS 的设备上禁用重复 SNMP 请求过滤。
要对运行 Junos OS 的设备上的重复 SNMP 请求启用过滤,请将以下 filter-duplicates
语句包含在 [edit snmp]
层次结构级别:
[edit snmp] filter-duplicates;
排除响应 SNMP 查询速度较慢的接口
响应接口统计信息的 SNMP 请求速度较慢的接口可能会延迟内核对 SNMP 请求的响应。您可以查看 mib2d 日志文件,了解内核响应各种 SNMP 请求需要多长时间。有关查看内核响应数据日志文件的详细信息,请参阅监控 运行 Junos OS 的设备上的 SNMP 活动和跟踪问题下的“检查内核和数据包转发引擎响应”。
如果您注意到特定接口响应缓慢,并认为其减少了内核对 SNMP 请求的响应速度,请从 SNMP 查询中排除该接口到设备。您可以通过配置 filter-interface
语句或修改 SNMP 视图设置,从 SNMP 查询中排除接口。
以下示例显示了用于从 SNMP Get
GetNext
中排除接口和Set
操作的示例配置:
[edit] snmp { filter-interfaces { interfaces { # exclude the specified interfaces interface1; interface2; } all-internal-interfaces; # exclude all internal interfaces } }
以下示例显示了 SNMP 视图配置,用于从请求中排除接口索引 (ifIndex) 值为 312 的接口,以获取与 ifTable 和 ifXtable 对象相关的信息:
[edit snmp] view test { oid .1 include; oid ifTable.1.*.312 exclude; oid ifXTable.1.*.312 exclude }
或者,您可以将响应速度较慢的接口脱机。
在运行 Junos OS 的设备上配置 SNMP
默认情况下,在运行 Junos OS 的设备上禁用 SNMP。要在路由器或交换机上启用 SNMP,必须在层次结构级别包含 SNMP 配置语句 [edit snmp]
。
要配置 SNMP 的最低要求,请在配置的层次结构级别使用以下语句 [edit snmp]
:
[edit] snmp { community public; }
这里的 public
社区定义为授予对任何客户端的所有 MIB 数据读取访问权限。
要配置完整的 SNMP 功能,请在层次结构级别使用以下语句 [edit snmp]
:
snmp { client-list client-list-name { ip-addresses; } community community-name { authorization authorization; client-list-name client-list-name; clients { address restrict; } routing-instance routing-instance-name { clients { addresses; } } logical-system logical-system-name { routing-instance routing-instance-name { clients { addresses; } } } view view-name; } contact contact; description description; engine-id { (local engine-id | use-mac-address | use-default-ip-address); } filter-duplicates; health-monitor { falling-threshold integer; interval seconds; rising-threshold integer; } interface [ interface-names ]; location location; name name; nonvolatile { commit-delay seconds; } rmon { alarm index { description text-description; falling-event-index index; falling-threshold integer; falling-threshold-interval seconds; interval seconds; request-type (get-next-request | get-request | walk-request); rising-event-index index; sample-type type; startup-alarm alarm; syslog-subtag syslog-subtag; variable oid-variable; } event index { community community-name; description text-description; type type; } } traceoptions { file filename <files number> <size size> <world-readable | no-world-readable> <match regular-expression>; flag flag; } trap-group group-name { categories { category; } destination-port port-number; routing-instance instance; targets { address; } version (all | v1 | v2); } trap-options { agent-address outgoing-interface; source-address address; } view view-name { oid object-identifier (include | exclude); } }
另请参阅
示例:在 QFabric 系统上配置 SNMP
默认情况下,在运行 Junos OS 的设备上禁用 SNMP。此示例介绍了在 QFabric 系统上配置 SNMP 的步骤。
要求
此示例使用以下硬件和软件组件:
Junos OS 版本 12.2
网络管理系统 (NMS)(运行 SNMP 管理器)
QFabric 系统(运行 SNMP 代理)与多节点设备
概述
由于在运行 Junos OS 的设备上默认禁用 SNMP,因此您必须在层次结构级别包含配置语句 [edit snmp]
来在设备上启用 SNMP。您至少必须配置语句 community public
。社区定义为对任何客户端的 MIB 数据进行公共授予只读访问权限。
clients
如果未配置语句,则允许所有客户端。建议始终包含 restrict
限制对交换机的 SNMP 客户端访问的选项。
拓扑
此示例中的网络拓扑包括一个 NMS、一个包含四个节点设备的 QFabric 系统,以及为接收陷阱而配置的外部 SNMP 服务器。
配置
程序
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,然后将命令复制并粘贴到层次结构级别的 CLI 中 [edit]
。
set snmp name “snmp qfabric” description “qfabric0 switch” set snmp location “Lab 4 Row 11” contact “qfabric-admin@qfabric0” set snmp community public authorization read-only set snmp client-list list0 192.168.0.0/24 set snmp community public client-list-name list0 set snmp community public clients 192.170.0.0/24 restrict set snmp trap-group “qf-traps” destination-port 155 targets 192.168.0.100
逐步过程
以下示例要求您在配置层次结构中的各个级别上导航。有关如何操作的说明,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用 CLI 编辑器。
要配置 QFabric 系统上的 SNMP:
如果名称、说明、位置、联系人或社区名称包含空格,请将文本括在引号 (“ ”) 中。
配置 SNMP 系统名称:
[edit snmp] user@switch# set name “snmp qfabric”
注:可以访问上述配置的 SNMP 系统名称:
使用 SNMPGet 对策略对象标识符 (OID) sysName.0 执行查询。
从通用 jnx 系统日志Trap。要发送 jnxSyslogTrap,请在层次结构中
[edit event-options policy]
配置 trap 事件。
指定说明。
[edit snmp] user@switch# set description “qfabric0 system”
此字符串放入 MIB II sys 描述对象中。
指定 QFabric 系统的物理位置。
[edit snmp] user@switch# set location “Lab 4 Row 11”
此字符串放入 MIB II sysLocation 对象中。
为 SNMP 系统指定管理联系人。
[edit snmp] user@switch# set contact “qfabric-admin@qfabric0”
此名称会放入 MIB II sysContact 对象中。
指定唯一的 SNMP 社区名称和只读授权级别。
注:read-write
QFabric 系统不支持该选项。[edit snmp] user@switch# set community public authorization read-only
创建一个客户端列表,其中一组 IP 地址可使用 SNMP 社区。
[edit snmp] user@switch# set client-list list0 192.168.0.0/24 user@switch# set community public client-list-name list0
指定受限制使用社区的客户端的 IP 地址。
[edit snmp] user@switch# set community public clients 198.51.100.0/24 restrict
配置陷阱组、目标端口和目标以接收陷阱组中的 SNMP 陷阱。
[edit snmp] user@switch# set trap-group “qf-traps” destination-port 155 targets 192.168.0.100
注:如果使用默认端口 162,
destination-port
则不需要包含语句。陷阱组 qf-traps 配置为将陷阱发送到 192.168.0.100。
结果
在配置模式下,输入命令以确认 show
您的配置。如果输出未显示预期的配置,请重复此示例中的说明,以更正配置。
[edit] user@switch# show snmp { name "snmp qfabric"; description "qfabric0 system"; location "Lab 4 Row 11"; contact "qfabric-admin@qfabric0"; client-list list0 { 192.168.0.0/24; } community public { authorization read-only; clients { 198.51.100.0/24 restrict; } } trap-group qf-traps { destination-port 155; targets { 192.168.0.100; } } }
完成设备配置后,请从配置模式进入 commit
。
配置提交延迟计时器
当路由器或交换机首次收到 SNMP 非易 Set
失请求时,将打开 Junos OS XML 协议会话,并阻止其他用户或应用程序更改候选配置(相当于命令行界面 [CLI] configure exclusive
命令)。如果路由器在 5 秒内未收到新的 SNMP Set
请求(默认值),将提交候选配置,并且 Junos OS XML 协议会话关闭(配置锁定被释放)。如果路由器在提交候选配置时收到新的 SNMP Set
请求,则 SNMP Set
请求将被拒绝并生成错误。如果路由器在 5 秒前收到新的 SNMP Set
请求,则提交延迟计时器(接收最后一个 SNMP 请求与请求提交之间的时间长度)将重置为 5 秒。
默认情况下,计时器设置为 5 秒。要为 SNMP Set
回复和开始提交配置计时器,请在 commit-delay
层次结构级别添加语句 [edit snmp nonvolatile]
:
[edit snmp nonvolatile] commit-delay seconds;
seconds
是接收 SNMP 请求与请求候选配置提交之间的时间长度。有关命令和锁定配置的详细信息 configure exclusive
,请参阅 Junos OS CLI 用户指南 。
配置 SNMP 社区
在 Junos OS 中配置 SNMP 代理是一项非常简单的任务,它与其他托管设备共享熟悉的设置。例如,您需要使用 SNMP 社区字符串和陷阱目标配置 Junos OS。社区字符串是管理名称,用于将设备集合及其上运行的代理组合到一个公共管理域中。如果经理和代理共享同一个社区,他们可以相互通信。
SNMP 社区会根据其源 IP 地址定义授予其成员的授权级别,例如可用的 MIB 对象、对这些对象有效的操作(只读或读写)以及授权的 SNMP 客户端。
SNMP 社区字符串定义 SNMP 服务器系统和客户端系统之间的关系。此字符串类似于密码,可控制客户端对服务器的访问。
要创建只读 SNMP 社区:
要创建 SNMP 读写社区:
-
进入您网络中使用的 SNMP 社区。
[edit groups global] user@host# set snmp community name
此示例标准社区字符串
private
用于标识授予对设备上运行的 SNMP 代理的读写访问权限的社区。[edit groups global] user@host# set snmp community private
-
定义社区的授权级别。
[edit groups global snmp community name] user@host# set authorization authorization
此示例将公共社区限制为只读访问。属于公共社区的任何 SNMP 客户端(例如,SNMP 管理系统)都可以读取 MIB 变量,但不能设置(更改)它们。
[edit groups global snmp community public] user@host# set authorization read-write
-
定义社区中有权在 Junos OS 中对 SNMP 代理进行更改的客户端列表。
按 IP 地址和前缀列出客户端。
[edit groups global snmp community name] user@host# set clients address
例如:
[edit groups global snmp community private] user@host# set clients 192.168.1.15/24 user@host# set clients 192.168.1.18/24
-
通过指定其 IP 地址,然后指定语句,定义在社区内未授权的
restrict
客户端。[edit groups global snmp community name] user@host# set clients address resrict
以下语句将所有其他主机定义为受公共社区限制。
[edit groups global snmp community private] user@host# set clients 0/0 restrict
-
在配置的顶层,应用配置组。
如果使用配置组,则必须应用该配置组才能使其生效。
[edit] user@host# set apply-groups global
-
提交配置。
user@host# commit
将一组客户端添加到 SNMP 社区
Junos OS 允许您向 SNMP 社区添加一个或多个客户端组。您可以在层次结构级别包含语句client-list-name name
[edit snmp community community-name]
,以便将客户端列表或前缀列表的所有成员添加到 SNMP 社区。
要定义客户端列表,请将 client-list
语句后添加层级客户端 [edit snmp]
的 IP 地址:
[edit snmp] client-list client-list-name { ip-addresses; }
您可以在层次结构级别配置前缀列表 [edit policy options]
。对 SNMP 社区配置中的前缀列表的支持使您能够使用单个列表来配置 SNMP 和路由策略。有关该 prefix-list
语句的详细信息,请参阅 路由策略、防火墙过滤器和流量监管器用户指南。
要向 SNMP 社区添加客户端列表或前缀列表,请在 client-list-name
层次结构级别添加语句 [edit snmp community community-name]
:
[edit snmp community community-name] client-list-name client-list-name;
客户端列表和前缀列表的名称不得相同。
以下示例说明如何定义客户端列表:
[edit] snmp { client-list clentlist1 { 10.1.1.1/32; 10.2.2.2/32; } }
以下示例说明如何向 SNMP 社区添加客户端列表:
[edit] snmp { community community1 { authorization read-only; client-list-name clientlist1; } }
以下示例说明如何向 SNMP 社区添加前缀列表:
[edit] policy-options { prefix-list prefixlist { 10.3.3.3/32; 10.5.5.5/32; } } snmp { community community2 { client-list-name prefixlist; } }
配置 SNMP 社区字符串
SNMP 社区字符串定义 SNMP 服务器系统和客户端系统之间的关系。此字符串类似于密码,可控制客户端对服务器的访问。
要配置 Junos OS 配置中的社区字符串,请在 community
层次结构级别添加语句 [edit snmp]
:
[edit snmp] community name { authorization authorization; clients { default restrict; address restrict; } viewview-name; }
如果社区名称包含空格,请用引号 (“ ”) 括起来。
社区的默认授权级别为 read-only
。要允许 Set
社区内的请求,您需要将该社区 authorization read-write
定义为。对于 Set
请求,还需要包含可通过语句的读写权限 view
访问的特定 MIB 对象。默认视图包括可通过只读权限访问的所有受支持的 MIB 对象;无法通过读写权限访问 MIB 对象。有关该 view
语句的更多信息,请参阅 配置 MIB 视图。
语句列表中列出了允许使用此社区的客户端(社区成员)的 clients
IP 地址。如果未显示语句 clients
,则允许所有客户端。对于 address
,必须指定 IPv4 地址,而非主机名。包括可 default restrict
拒绝访问未授予访问权限的所有 SNMP 客户端的选项。建议始终包含 default restrict
限制 SNMP 客户端对本地交换机的访问的选项。
在每个 SNMP 系统中,社区名称必须唯一。
例子:配置 SNMP 社区字符串
授予对所有客户端的只读访问权限。使用以下配置,系统将响应 SNMP Get
GetNext
和GetBulk
包含社区字符串public
的请求:
[edit] snmp { community public { authorization read-only; } }
授予所有客户端对 ping MIB 和 jnxPingMIB
的读写访问权限。使用以下配置,系统将响应 SNMP 、 、 和包含社区字符串private
的请求,并指定 ping MIB 或jnxPingMIB
层次结构中包含的 OID:Set
GetBulk
GetNext
Get
[edit] snmp { view ping-mib-view { oid pingMIB include; oid jnxPingMIB include; community private { authorization read-write; view ping-mib-view; } } }
以下配置允许对 IP 地址在范围内的1.2.3.4/24
客户端进行只读访问,并拒绝对范围内的 fe80::1:2:3:4/64
系统进行访问:
[edit] snmp { community field-service { authorization read-only; clients { default restrict; # Restrict access to all SNMP clients not explicitly # listed on the following lines. 1.2.3.4/24; # Allow access by all clients in 1.2.3.4/24 except fe80::1:2:3:4/64 restrict;# fe80::1:2:3:4/64. } } }
配置代理 SNMP 代理
从 12.3 版开始,Junos OS 允许您将网络中的一台设备分配为代理 SNMP 代理,网络管理系统 (NMS) 可以通过代理 SNMP 代理查询网络中的其他设备。配置代理时,可以指定要通过代理 SNMP 代理管理的设备名称。
当 NMS 查询代理 SNMP 代理时,NMS 会指定与需要信息的设备关联的社区名称(适用于 SNMPv1 和 SNMPv2)或上下文和安全名称(适用于 SNMPv3)。
如果为 SNMPv3 配置了身份验证和隐私方法及密码,则 SNMPv3 信息查询中也会指定这些参数。
要配置代理 SNMP 代理并指定要由代理 SNMP 代理管理的设备,请参阅 proxy (snmp)。
从 Junos OS 15.2 版开始,您必须在[edit snmp]
层次结构级别为代理 SNMP 代理配置interface <interface-name>
语句。
代理的社区和安全配置应与要管理的设备上的相应配置匹配。
由于代理 SNMP 代理没有陷阱转发功能,由代理 SNMP 代理管理的设备将陷阱直接发送至网络管理系统。
您可以使用 show snmp proxy
操作模式命令查看设备上的代理详细信息。命令 show snmp proxy
将返回代理名称、设备名称、SNMP 版本、社区/安全以及上下文信息。
配置 SNMP 陷阱
陷阱是从 SNMP 代理发送到远程网络管理系统或陷阱接收器的未经请求的消息。除了系统日志记录之外,企业还使用 SNMP 陷阱作为故障监控解决方案的一部分。在 Junos OS 中, 如果您希望使用 SNMP 陷阱,则必须配置一个陷阱组。
您可以创建一组一个或多个 SNMP 陷阱并命名,并定义哪些系统接收这组 SNMP 陷阱。陷阱组的名称作为一个称为社区名称的变量绑定 (varbind) 嵌入在 SNMP 陷阱通知数据包中。
要配置 SNMP 陷阱,
配置 SNMP 陷阱选项
使用 SNMP 陷阱选项,无论传出接口如何,都可以将路由器发送到单个地址的每个 SNMP 陷阱数据包的源地址。此外,您还可以设置 SNMPv1 陷阱的代理地址。有关 SNMPv1 陷阱内容的更多信息,请参阅 RFC 1157。
SNMP 不能与主路由实例以外的任何路由实例相关联。
要配置 SNMP 陷阱选项,请参阅 trap-options。
您还必须配置一个陷阱组,陷阱选项才能生效。有关陷阱组的信息,请参阅 配置 SNMP 陷阱组。
本主题包含以下部分:
配置 SNMP 陷阱的源地址
您可以通过多种方式配置陷阱数据包的源地址:lo0、在某个路由器接口上配置的有效 IPv4 地址或 IPv6 地址、逻辑系统地址或路由实例地址。值 lo0 表示 SNMP 陷阱数据包的源地址设置为接口 lo0 上配置的最低环路地址。
如果源地址为无效的 IPv4 或 IPv6 地址或未配置,则不会生成 SNMP 陷阱。
您可以使用以下格式之一配置陷阱数据包的源地址:
其中一个路由器接口上配置的有效 IPv4 地址
其中一个路由器接口上配置的有效 IPv6 地址
lo0
;也就是说,接口 lo0 上配置的最低环路地址逻辑系统名称
路由实例名称
作为源地址的有效 IPv4 地址
要将有效的 IPv4 接口地址指定为其中一个路由器接口上的 SNMP 陷阱的源地址,请在层级添加 source-address
语句 [edit snmp trap-options]
:
[edit snmp trap-options] source-address address;
address
是在某个路由器接口上配置的有效 IPv4 地址。
作为源地址的有效 IPv6 地址
要将有效的 IPv6 接口地址指定为其中一个路由器接口上的 SNMP 陷阱的源地址,请在层级添加 source-address
语句 [edit snmp trap-options]
:
[edit snmp trap-options] source-address address;
address
是在某个路由器接口上配置的有效 IPv6 地址。
作为源地址的最低环路地址
要指定 SNMP 陷阱的源地址,以便它们使用在接口 lo0 上配置的最低环路地址作为源地址,请将语句 source-address
包含在 [edit snmp trap-options]
层次结构级别:
[edit snmp trap-options] source-address lo0;
要启用和配置环路地址,请在 address
层级添加语句 [edit interfaces lo0 unit 0 family inet]
:
[edit interfaces] lo0 { unit 0 { family inet { address ip-address; } } }
将环路地址配置为陷阱数据包的源地址:
[edit snmp] trap-options { source-address lo0; } trap-group "urgent-dispatcher" { version v2; categories link startup; targets { 192.168.10.22; 172.17.1.2; } } [edit interfaces] lo0 { unit 0 { family inet { address 10.0.0.1/32; address 127.0.0.1/32; } } }
在此示例中,IP 地址 10.0.0.1 是从此路由器发送的每个陷阱的源地址。
作为源地址的逻辑系统名称
要将逻辑系统名称指定为 SNMP 陷阱的源地址,请在层级添加语句logical-system logical-system-name
[edit snmp trap-options]
。
例如,以下配置将逻辑系统名称 ls1
设置为 SNMP 陷阱的源地址:
[edit snmp] trap-options{ logical-system ls1; }
作为源地址的路由实例名称
要将路由实例名称指定为 SNMP 陷阱的源地址,请在 routing-instance routing-instance-name
层级添加语句 [edit snmp trap-options]
。
例如,以下配置将路由实例名称 ri1
设置为 SNMP 陷阱的源地址:
[edit snmp] trap-options { routing-instance ri1; }
配置 SNMP 陷阱的代理地址
代理地址仅在 SNMPv1 陷阱数据包中可用(请参阅 RFC 1157)。默认情况下,SNMPv1 陷阱的代理地址字段中未指定路由器的默认本地地址。要配置代理地址,请在 agent-address
层级添加语句 [edit snmp trap-options]
。目前,代理地址只能是传出接口的地址:
[edit snmp] trap-options { agent-address outgoing-interface; }
将传出接口配置为代理地址:
[edit snmp] trap-options { agent-address outgoing-interface; } trap-group “ urgent-dispatcher” { version v1; categories link startup; targets { 192.168.10.22; 172.17.1.2; } }
在此示例中,发送的每个 SNMPv1 陷阱数据包都会将其代理地址值设置为传出接口的 IP 地址。
将 snmpTrapEnterprise 对象标识符添加到标准 SNMP 陷阱
snmpTrapEnterprise 对象可帮助您识别已定义“陷阱”的企业。通常,snmpTrapEnterprise 对象显示为企业特定的 SNMP 版本 2 陷阱中的最后一个 varbind。但是,从 10.0 版开始,Junos OS 还允许您将 snmpTrapEnterprise 对象标识符添加到标准 SNMP 陷阱中。
要向标准陷阱添加 snmpTrapEnterprise,请将语句enterprise-oid
[edit snmp trap-options]
包含在层次结构级别。如果配置中未包含该 enterprise-oid
语句,则 snmpTrapEnterprise 只会为企业特定的陷阱添加。
[edit snmp] trap-options { enterprise-oid; }
配置 SNMP 陷阱组
您可以创建一组 SNMP 陷阱并将其命名为一个或多个类型的 SNMP 陷阱,然后定义哪些系统接收这组 SNMP 陷阱。您必须配置陷阱组才能发送 SNMP 陷阱。要创建 SNMP 陷阱组,请参阅 trap-group。
对于您定义的每个陷阱组,您必须包含该 target
语句,以便将至少一个系统定义为陷阱组中 SNMP 陷阱的接收方。指定每个接收者的 IPv4 或 IPv6 地址,而非其主机名。
指定陷阱组可以在语句中接收的 categories
陷阱类型。有关陷阱所属的类别的信息,请参阅 Junos OS 支持的标准 SNMP 陷阱 和 Junos OS 支持的企业特定 SNMP 陷阱 等主题。
指定语句中的 routing-instance
陷阱组使用的路由实例。陷阱组中配置的所有目标都使用此路由实例。
陷阱组可以接收以下类别:
authentication
—身份验证失败chassis
— 机箱或环境通知chassis-cluster
— 群集通知configuration
—配置通知link
—与链路相关的通知(上行转换、DS-3 和 DS-1 线路状态更改、IPv6 接口状态更改和被动监控 PIC 过载)注:要发送被动监控 PIC 过载接口陷阱,请选择
link
陷阱类别。otn-alarms
—OTN 报警陷阱子类别remote-operations
— 远程操作通知rmon-alarm
— RMON 事件报警routing
—路由协议通知services
— 服务通知,例如电路关闭或启动、连接中断或正常、CPU 超值、告警和状态更改。sonet-alarms
—SONET/SDH 报警注:如果省略 SONET/SDH 子类别,则陷阱通知中包含所有 SONET/SDH 陷阱告警类型。
loss-of-light
—光告警通知丢失pll-lock
—PLL 锁定报警通知loss-of-frame
—帧告警通知丢失loss-of-signal
—信号告警通知丢失severely-errored-frame
— 严重误码帧报警通知line-ais
-线路报警指示信号 (AIS) 报警通知path-ais
-路径 AIS 告警通知loss-of-pointer
-丢失指针报警通知ber-defect
—SONET/SDH 误码率报警缺陷通知ber-fault
-SONET/SDH 错误率告警故障通知line-remote-defect-indication
—线路远程缺陷指示报警通知path-remote-defect-indication
—路径远程缺陷指示报警通知remote-error-indication
—远程错误指示报警通知unequipped
— 未使用警报通知path-mismatch
-路径不匹配报警通知loss-of-cell
-丢失信元划线报警通知vt-ais
— 虚拟支流 (VT) AIS 报警通知vt-loss-of-pointer
—VT 指针告警通知丢失vt-remote-defect-indication
— VT 远程缺陷指示报警通知vt-unequipped
—VT 未要求报警通知vt-label-mismatch
-VT 标签不匹配错误通知vt-loss-of-cell
—VT 丢失信元划界通知
startup
-系统暖启动和冷启动timing-events
—计时事件和缺陷通知vrrp-events
— 虚拟路由器冗余协议 (VRRP) 事件,例如新主故障或身份验证故障
如果包括 SONET/SDH 子类别,则陷阱通知中仅包含这些 SONET/SDH 陷阱告警类型。
该 version
语句允许您指定发送至陷阱组目标的陷阱的 SNMP 版本。如果仅指定 v1
,将发送 SNMPv1 陷阱。如果仅指定 v2
,将发送 SNMPv2 陷阱。如果指定 all
,则针对每个陷阱条件都会发送一个 SNMPv1 和一个 SNMPv2 陷阱。有关语句的详细信息 version
,请参阅 版本 (SNMP)。
在运行 Junos OS 的设备上配置 SNMP 陷阱选项和组
某些载波具有多个陷阱接收器,用于将陷阱转发到中央 NMS。这允许通过不同的陷阱接收器为从路由器到中央 NMS 的 SNMP 陷阱提供多个路径。您可以配置运行 Junos OS 的设备,将每个 SNMP 陷阱的相同副本发送到 trap 组中配置的每个陷阱接收器。
默认情况下,每个 SNMP 陷阱数据包的 IP 标头中的源地址设置为传出接口的地址。当陷阱接收器将数据包转发到中央 NMS 时,源地址将保留。中央 NMS 仅查看每个 SNMP 陷阱数据包的源地址,假设每个 SNMP 陷阱都来自不同的来源。
实际上,SNMP 陷阱来自同一路由器,但每个陷阱都通过不同的传出接口离开路由器。
提供以下部分讨论的语句旨在使 NMS 能够识别重复陷阱,并根据传出接口区分 SNMPv1 陷阱。
要配置 SNMP 陷阱选项和陷阱组,请在 trap-options
层次结构级别添加和 trap-group
语句 [edit snmp]
:
[edit snmp] trap-options { agent-address outgoing-interface; source-address address; } trap-group group-name { categories { category; } destination-port port-number; targets { address; } version (all | v1 | v2); }
示例:配置 SNMP 陷阱组
设置为链路和启动陷阱命名 urgent-dispatcher
的陷阱通知列表。此列表用于标识应将本地路由器生成的陷阱发送到的网络管理主机(1.2.3.4
和 fe80::1:2:3:4
)。当代理向列出的目标发送陷阱时,为陷阱组指定的名称将用作 SNMP 社区字符串。
[edit] snmp { trap-group "urgent-dispatcher" { version v2; categories link startup; targets { 1.2.3.4; fe80::1:2:3:4; } } }
配置可接受 SNMP 请求的接口
默认情况下,所有路由器或交换机接口均具有 SNMP 访问权限。要仅限制通过某些接口的访问,请将语句interface
[edit snmp]
包含在层次结构级别:
[edit snmp] interface [ interface-names ];
指定应具有 SNMP 访问权限的任何逻辑或物理接口的名称。从未列出的接口进入路由器或交换机的任何 SNMP 请求将被丢弃。
示例:配置安全访问列表检查
SNMP 访问权限仅授予接口 so-0/0/0
和 at-1/0/1
上的设备。以下示例通过配置逻辑接口列表来做到这一点:
[edit] snmp { interface [ so-0/0/0.0 so-0/0/0.1 at-1/0/1.0 at-1/0/1.1 ]; }
以下示例通过配置物理接口列表来授予相同访问权限:
[edit] snmp { interface [ so-0/0/0 at-1/0/1 ]; }
从 SNMP 获取和获取下一个输出中的过滤器接口信息
Junos OS 使您能够从 SNMP Get
和 GetNext
请求的输出中过滤掉与特定接口相关的信息。您可以在与接口相关的 MIB 上执行此功能,例如 IF MIB、ATM MIB、RMON MIB 和瞻博网络企业特定的 IF MIB。
您可以在层次结构级别使用以下语句[edit snmp]
选项filter-interfaces
来指定要从 SNMP Get
和GetNext
查询中排除的接口:
interfaces
-与指定正则表达式匹配的接口。all-internal-interfaces
-内部接口。
[edit] snmp { filter-interfaces { interfaces { interface-name 1; interface-name 2; } all-internal-interfaces; } }
从 12.1 版开始,Junos OS 提供了一个除外选项(!
运算符),使您能够过滤掉所有接口,但那些与标记前缀为前缀的所有正则表达式匹配的 !
接口除外。
例如,要过滤掉 SNMP get
和get-next
结果中除接口以外的ge
所有接口,请输入以下命令:
[edit snmp] user@host# set filter-interfaces interfaces “!^ge-.*” user@host# commit
配置此功能后,Junos OS 会过滤掉所有接口, ge
SNMP get
中的接口和 get-next
结果除外。
标记 !
仅支持作为正则表达式的第一个字符。如果它显示在正则表达式中的任意位置,Junos OS 将视为该正则表达式无效,并会返回错误。
但是,请注意,这些设置仅适用于 SNMP 操作。用户可以继续使用适当的 Junos OS 命令行界面 (CLI) 命令访问与接口相关的信息(包括使用 filter-interfaces
选项隐藏的信息)。
配置 MIB 视图
SNMPv3 在 RFC 3415、 简单网络管理协议 (SNMP) 的基于视图的访问控制模式 (VACM) 中定义了 MIB 视图的概念。MIB 视图让代理可以更好地控制谁可以访问其 MIB 树中的特定分支和对象。一个视图由一个名称和一组 SNMP 对象标识符组成,这些标识符可以显式包含,也可以是排除的。定义后,视图将被分配给 SNMPv3 组或 SNMPv1/v2c 社区(或多个社区),从而自动掩盖该组或社区的代理 MIB 树成员可以访问(或不能)访问的哪些部分。
默认情况下,SNMP 社区授予读取访问权限,并拒绝对所有受支持的 MIB 对象(甚至配置为 authorization read-write
)的写访问。要限制或授予对一组 MIB 对象的读写访问权限,必须配置 MIB 视图,并将该视图与社区相关联。
要配置 MIB 视图,请参阅 view (Configuring a MIB View)。
要完全移除 OID,请使用命令, delete view all oid oid-number
但省略 include
参数。
[edit groups global snmp] user@host# set view view-name oid object-identifier (include | exclude)
以下示例创建一个名为 ping-mib-view 的 MIB 视图。语句 oid
不需要对象标识符开头有一个点。语句 snmp view
的对象标识符 .1.3.6.1.2.1.80 下包括分支。这包括整个 DISMAN-PINGMIB 子树(在 RFC 2925 中定义, 用于远程 Ping、Traceroute 和查找操作的托管对象定义),它们实际上允许访问该分支下的任何对象。
[edit groups global snmp] user@host# set view ping-mib-view oid 1.3.6.1.2.1.80 include
以下示例在同一 MIB 视图中添加第二个分支。
[edit groups global snmp] user@host# set view ping-mib-view oid jnxPingMIB include
将 MIB 视图分配给您想要控制的社区。
要将 MIB 视图与社区关联,请参阅 view (SNMP Community)。
有关 Ping MIB 的详细信息,请参阅 RFC 2925 和 PING MIB。
另请参阅
配置 Ping 代理 MIB
ping-mib限制社区仅对 Ping MIB jnxpingMIB
进行读写访问。不允许使用此社区访问任何其他 MIB。
[edit snmp] view ping-mib-view { oid 1.3.6.1.2.1.80 include; #pingMIB oid jnxPingMIB include; #jnxPingMIB } community ping-mib { authorization read-write; view ping-mib-view; }
以下配置可防止 no-ping-mib 社区访问 Ping MIB 和 jnxPingMIB
对象。但是,此配置不会阻止 no-ping-mib 社区访问设备上支持的任何其他 MIB 对象。
[edit snmp] view no-ping-mib-view { oid 1.3.6.1.2.1.80 exclude; # deny access to pingMIB objects oid jnxPingMIB exclude; # deny access to jnxPingMIB objects } community no-ping-mib { authorization read-write; view ping-mib-view; }