邻接方发现缓存保护
NDP 缓存保护使您能够在 IPv6 部署方案中保护路由引擎免受某些类型的拒绝服务 (DoS) 攻击。
邻接方发现缓存保护概述
在 IPv6 部署方案中,路由引擎可能容易受到某些拒绝服务 (DoS) 攻击。IPv6 子网通常非常大,例如,子 /64 网可能具有大量未分配的地址。路由引擎的控制平面对未知地址执行地址解析。攻击者可通过为此未分配的地址空间生成解析请求,迅速淹没路由引擎的控制平面,从而导致缓存溢出。攻击者依赖于生成的请求数和请求排队的速率。此类场景可能会占用路由器资源,并阻止路由引擎响应有效的邻居请求和维护现有的邻居缓存条目,从而有效地导致合法用户遭受 DoS 攻击。
缓解此类 DoS 攻击的策略如下:
过滤未使用的地址空间。
最小化子网的大小。
为子网配置丢弃路由。
对邻接方发现缓存中条目的大小和解析速率实施限制。
通过限制可添加到缓存中的 IPv6 邻接方和新的未解析下一跃点地址的数量,可以将邻接方发现缓存的影响降至最低。您可以使用和 配置nd6-new-hold-limit语句设置每个接口nd6-max-cache的限制,nd-system-cache-limit也可以使用 配置语句在系统范围内设置限制。
对于 ACX、EX22XX、EX3200、EX33XX 和 SRX 等小型平台,默认值为 20,000。
对于 EX4200、EX45XX、EX4300、EX62XX、QFX 和 MX 等中型平台,默认值为 75,000。
对于其余平台,默认值为 100,000。
配置邻接方发现缓存保护
在 IPv6 部署方案中,路由引擎可能容易受到某些类型的拒绝服务 (DoS) 攻击。一般来说,IPv6 子网往往非常大;例如,子 /64 网可能有大量未分配的地址。路由引擎的控制平面对未知地址执行地址解析。攻击者可通过为此未分配的地址空间生成解析请求,迅速淹没路由引擎的控制平面,从而导致缓存溢出。攻击者依赖于生成的请求数量和请求排队的速度。
邻接方发现过程是实现邻接方发现协议的控制平面的一部分。它负责执行地址解析和维护邻居缓存中的条目。缓解 DoS 攻击的一种方法是对邻居发现缓存的大小和新下一跃点条目的解析速率实施限制,并确定某些类别的邻居发现流量的优先级。您可以为每个接口和整个系统配置邻接方发现缓存限制。
开始之前,请确保您运行的是 Junos OS 15.1 或更高版本。
本地限制适用于单个接口,并针对邻接方发现队列中的已解析和未解析条目进行定义,而全局限制则适用于整个系统。
要在接口上配置邻接方发现缓存保护,请执行以下作:
要验证配置,请执行 show interfaces interface-name 作命令。
要在整个系统范围内配置邻接方发现缓存保护,请执行以下作:
配置邻接方发现缓存的系统范围限制。
[edit] user@host# set system nd-system-cache-limit limit
要验证配置的系统范围限制,请执行 show system statistics icmp6 作命令。
对于 ACX、EX22XX、EX3200、EX33XX 和 SRX 等小型平台,默认值为 20,000。
对于 EX4200、EX45XX、EX4300、EX62XX、QFX 和 MX 等中型平台,默认值为 75,000。
对于其余平台,默认值为 100,000。
示例:配置邻接方发现缓存保护以防止拒绝服务攻击
此示例说明如何配置可添加到邻接方发现的 IPv6 邻接方条目数限制。对缓存中的条目数强制实施限制可以缓解拒绝服务 (DoS) 攻击。邻接方发现缓存功能支持两种类型的限制:
本地 — 本地限制按接口配置,并为邻接方发现缓存中的已解析和未解析条目定义。
全局 - 全局限制适用于整个系统。公共接口和管理接口将进一步单独定义全局限制,例如 fxp0。管理接口只有一个全局限制,没有本地限制。全局限制对邻接方发现缓存的条目强制执行系统范围的上限,包括内部路由实例的环路接口,以及管理接口和公共接口。
要求
此示例要求运行 Junos OS 15.1 或更高版本的 MX 系列路由器。
概述
在 IPv6 部署场景中,路由引擎可能容易受到某些类型的 DoS 攻击。IPv6 子网通常非常大,例如,子 /64 网可能有大量未分配的地址,可用于执行 DoS 攻击。路由引擎的控制平面对未知地址执行地址解析。攻击者可通过为此未分配的地址空间生成解析请求,迅速淹没路由引擎的控制平面,并使队列溢出。攻击者依赖于生成的请求数和请求排队的速率。
邻接方发现过程是实现邻接方发现协议的控制平面的一部分。它负责执行地址解析和维护邻居缓存。缓解 DoS 攻击的一种方法是强制限制邻居发现队列限制,这可以通过限制队列大小和解析速率以及确定某些类别的邻居发现流量的优先级来实现。
配置
要配置邻接方发现缓存保护,请执行以下任务:
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,然后将命令复制并粘贴到层 [edit] 级的 CLI 中,然后从配置模式进入 commit 。
set interfaces ge-0/3/0 unit 5 family inet6 nd6-max-cache 100 set interfaces ge-0/3/0 unit 5 family inet6 nd6-new-hold-limit 100
您还可以对邻接方发现缓存中的 IPv6 邻接方条目数配置系统范围限制。此限制还包括环路接口、管理接口和公共接口。
set system nd-system-cache-limit 100
语句对不同接口类型的限制分配nd-system-cache-limit是根据一定的固定百分比执行的。当定义为X且内部路由接口邻接方发现缓存限制为Y(默认值为 200)时nd-system-cache-limit,则:
公共最大缓存限制, Z = () 的X- Y 80%
管理接口 最大缓存限制(例如,fxp0), M = () 的X-Y 20%
配置邻接方发现缓存保护
分步过程
下面的示例要求您在各个配置层级中进行导航。有关 CLI 导航的信息,请参阅 CLI 用户指南中的在配置模式下使用 CLI 编辑器。
要为每个接口配置邻接方发现缓存保护,请执行以下作:
配置和
nd6-max-cachend6-new-hold-limit。[edit] user@host# set interfaces ge-0/3/0 unit 5 family inet6 nd6-max-cache 100 user@host# set interfaces ge-0/3/0 unit 5 family inet6 nd6-new-hold-limit 100
结果
要在本地确认邻接方发现缓存保护,请从配置模式输入 show interfaces ge-0/3/0 。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。
[edit]
user@host# show interfaces ge-0/3/0
unit 5{
family inet6 {
nd6-max-cache 100;
nd6-new-hold-limit 100;
}
}
验证
确认配置工作正常。
全局验证邻接方发现缓存保护
目的
验证输出是否反映了邻接方发现缓存的系统范围限制。
行动
在作模式下,运行 show system statistics icmp6 命令。
user@host> show system statistics icmp6
icmp6:
79 Calls to icmp_error
0 Errors not generated because old message was icmp error
0 Errors not generated because rate limitation
Output histogram:
79 unreach
30 echo
163 multicast listener query
6 multicast listener report
940 neighbor solicitation
694184 neighbor advertisement
0 Messages with bad code fields
0 Messages < minimum length
0 Bad checksums
0 Messages with bad length
Input histogram:
10 echo reply
6 multicast listener report
693975 neighbor solicitation
Histogram of error messages to be generated:
0 No route
0 Administratively prohibited
0 Beyond scope
79 Address unreachable
0 Port unreachable
0 Time exceed transit
0 Time exceed reassembly
0 Erroneous header field
0 Unrecognized next header
0 Unrecognized option
0 Unknown
0 Message responses generated
0 Messages with too many ND options
100000 Max System ND nh cache limit
79840 Max Public ND nh cache limit
200 Max IRI ND nh cache limit
19960 Max Management intf ND nh cache limit
79840 Current Public ND nexthops present
4 Current IRI ND nexthops present
0 Current Management ND nexthops present
909266 Total ND nexthops creation failed as limit reached
909266 Public ND nexthops creation failed as public limit reached
0 IRI ND nexthops creation failed as iri limit reached
0 Management ND nexthops creation failed as mgt limit reached
意义
对邻接方发现缓存条目强制执行的全系统上限为 100000。
Management ND nexthops creation failed as mgt limit reached 指示达到系统范围限制时管理接口的丢弃计数。 Total ND nexthops creation failed as limit reached 指示管理、公共或内部路由实例接口的故障,并 Public ND nexthops creation failed as public limit reached 指示当达到系统范围的条目数限制时,公共接口的丢弃计数。
在本地验证邻接方发现缓存保护
目的
验证输出是否反映了配置的接口限制。
行动
在作模式下,运行 show interfaces ge-0/3/0 命令。
user@host> show interfaces ge-0/3/0
Logical interface ge-0/2/0.8 (Index 348) (SNMP ifIndex 690)
Flags: Up SNMP-Traps 0x4000 VLAN-Tag [ 0x8100.8 ] Encapsulation: ENET2
Input packets : 181628
Output packets: 79872
Protocol inet6, MTU: 1500
Max nh cache: 100000, New hold nh limit: 100000, Curr nh cnt: 79840, Curr new hold cnt: 0, NH drop cnt: 0
Flags: Is-Primary
Addresses, Flags: Is-Preferred Is-Primary
Destination: 8001:1::/64, Local: 8001:1::1:1
Addresses, Flags: Is-Preferred
Destination: fe80::/64, Local: fe80::56e0:3200:8c6:e0a4
Protocol multiservice, MTU: Unlimited
意义
可连接到接口 ge-0/3/0 的新的未解析下一跃点地址的最大总条目数和最大条目数为 100000。
NH drop cnt 指由于已达到接口最大队列大小限制而未服务的邻接方发现请求数。