为/ 127子网案例

这不是地址保护。但是,它可能是安全问题。

在我的以前的文章我写了所有我们从几乎不可思议的海量IPv6地址空间得到积极,都在那里给我们享受,如果我们只是摆脱我们长期以来根深蒂固的IPv4地址保护的心态。

我们最常看到IPv4保守性的负面影响的地方是对点对点链接的寻址。我写了关于我们是如何陷入不合逻辑的思考的,因为我们没有把握我们正在工作的规模:我们似乎没有问题,在一个有5000个地址的局域网,浪费了另外2个地址64-5000个地址,但我们不能浪费64点至点链接-2地址。在1800万个万亿地址规模,5000和2之间的差别可以忽略不计。

有关子网地址的大小这一问题的不合逻辑有点是我经常听到的一个问题:“为什么他们使用了一个完整的64位为接口的ID?为什么不是32位,这仍然给了我们更多的地址在一个子网比我们将永远使用,并会留给我们的前缀96位?”

我的回答是:你为什么想知道?

这仍然只是垃圾放错地方的忧虑。我们可以很容易地问他们为什么没有做出IPv6地址为64位,与前缀(位置),32位和接口的ID(身份)32位。有可能会仍比在可预见的未来足够的地址了。And you just know that if an IPv6 address were 64 bits, there would be people asking why they didn’t make the Interface-ID 16 bits (65,536 addresses should still be more than enough for any subnet!) so that we could have 48 bits for prefixes.

你看到的那种车辙你可以不必担心浪费地址卡住吗?IPv6地址是128位,前缀和接口-ID之间均匀地划分,正是因为它给了我们更多的地址,我们无法想象的使用。设计师们用一个真正的,大锤子。与IPv4不同,它不期望您能有效地使用/64子网上所有可用的接口地址。

所以真的。别担心。

有其他原因使用/ 127上的点至点的链接?

嗯,是有。

这里有一些背景:RFC 4291,第2.5.4节,明确声明IPv6接口id为/64,用于所有全局单播地址。它没有说“除非你担心你在浪费。”为了让那些坚持在点对点链接上使用/127s的用户更清楚,我们有了RFC 3627上面写着,就在标题“的/ 127前缀是有害的路由器之间使用的长度。”然后来了RFC 6164也就是说,在点对点链接上使用/127前缀是非常好的。事实上RFC 6547移动到3627年前(作废)状态,由6164所取代。

乱吗?它真的没有那么复杂。

RFC 3627过时是有原因的

为RFC 3627的结论的主要理由是/ 127前缀是有害的,有做Subnet-Router Anycast地址。这些是其中前缀是完整的地址,但该接口-ID位全部设置成零。所以地址的作用域是由前缀的特定子网,但地址的标识部分是不确定的。一个设备可以将数据包发送到子网路由器任播地址,他们将通过连接到子网的路由器被拾起。RFC 4291要求路由器支持子网路由器任播地址;这个想法是,应用程序可以使用这个地址与子网“的路由器集合中的任何一个”沟通,虽然没有明确为何应用程序将使用该选播,而不是所有路由器组播地址。

这里的场景,假设/ 127前缀是有害的:

  1. 您连接两个路由器,RA和RB,用点至点链接。
  2. 您将RA的接口配置为地址2001:db8:1:2:a:b:c:1/127。路由器对这个地址的链接运行重复地址检测(DAD),这个地址就通过了。
  3. RA,符合RFC 4291,增加了子网路由器任播地址2001:DB8:1:2:A:B:C:0/127。RFC 2462第5.4节,指定不为Anycast地址运行DAD(这是有意义的,因为根据定义,Anycast地址可以驻留在多个接口上)。所以没有父亲会竞选这个地址。
  4. 现在转到RB并为/127前缀配置另一个地址:2001:db8:1:2:a:b:c:0/127。路由器是否反对它不能使用那个地址作为它的单播,因为它是这个前缀的子网路由器Anycast地址?它是否接受地址,然后添加相同的地址作为它需要的子网路由器Anycast?如果它执行DAD,则地址将失败,因为它已经在RA上了。

这听起来像一个大问题,但有几件事情知道

  • 子网路由器Anycast,尽管它的用途看起来很模糊,但显然是用于多址网络。为什么它会被用于点对点链接?
  • 尽管RFC 4291强制要求使用地址,但事实上它并没有得到广泛的实现。即使是RFC 3627,在列出了上述场景之后,也承认它还没有在野外被观察到。我已经配置了许多/127地址,还没有遇到问题。

DAD是地址自动配置机制和邻居发现协议,这两者对点至点链接有限的实用性非常有用。保险的容易一点,如果你的路由器操作系统支持,是禁用DAD您点至点链接。如果您使用的是以太网点至点链接许多点至点技术,如SONET不使用NDP,但是,你可能会需要手动禁用NDP。

邻居缓存攻击

还有另外一个原因,确保NDP已在以太网点至点链接无效。如果链接是/ 64子网,攻击者可以发送数据包流与上属于链接的子网但有未使用的接口-ID的目的地址的链接。对于接收到的每一个地址,路由器创建在其邻居缓存的INCOMPLETE条目,并发送NDP邻居请求消息到链接来尝试解决该条目。通过流足够不同的未使用的地址,攻击者可能会导致邻居缓存才能填满,链接无法解答的NS消息拥塞。

RFC 6164引用此漏洞为理由,使用您点至点链接/ 127S。虽然这是真的,这将阻止这种特定的攻击(因为有对子网中没有未使用的地址),只要在您点至点链接禁用NDP还消除了漏洞。更重要的是,该漏洞存在于支持NDP任何子网,你不能在你的局域网子网禁用NDP。需要的ICMPv6速率限制和智能边缘过滤来控制邻居缓存攻击的影响。

更重要的原因引述RFC 6164使用/ 127S被暴露于乒乓攻击。

乒乓球

乒乓攻击利用了与兼容的ICMPv6的旧的实现问题RFC 2463。这里的问题:

  1. 您连接两个路由器,RA和RB,用点至点链接。
  2. RA给出的地址2001:DB8:1:2 :: 1/64。
  3. RB给出的地址2001:DB8:1:2 :: 2/64。
  4. 分组到达RA与目的地址2001:DB8:1:2:3。
  5. 目标是为点至点链接的子网,但它不是RA的接口地址。所以RA将数据包转发到链路。
  6. RB收到数据包。
  7. 目标是为点至点链接的子网,而不是RB的地址,所以RB转发数据包返回到的链接。
  8. RA接收分组,并且该循环重复其本身。

你可以看到这是如何被利用:攻击者洪水未使用的目标地址的数据包到子网,包来回反弹的两个路由器之间,直到他们的跳数限制到期。这些数据包的洪水不够 - 和A / 64提供批量未使用的地址命中——电容效应和弹跳包效应会消耗带宽和路由器资源。

关于这种行为有两件事需要观察:

  • RA和RB不能确定目标地址是否属于子网上的现有设备,因为在大多数点对点链路上没有发现邻居。
  • 一个简单的分水平规则假设,如果您在子网上接收到一个属于子网但不属于接收接口的包,就不需要将包转发回相同的接口。假设目的地存在于子网中,那么它已经收到了数据包。

事实证明,这个漏洞存在于IPv4的也;它只是从来就没有多大风险,因为在IPv4上点至点链接大多数人都使用/ 30或/ 31子网,以保存地址。

RFC 4443淘汰了RFC 2463,并在其3.1节明确要求路由器接收到数据包的目的地址属于接收接口的子网,但其接口-ID不属于接口,不能发送数据包背出相同的接口。问题解决了。

是你的供应商运行过时代码?

什么了我的山羊有关此问题的是,一些厂商更愿意继续运行的ICMPv6的过时版本,而不是他们的代码升级到RFC 4443兼容的ICMPv6的。他们的答案的问题是要告诉你,在您点至点链接中使用/ 127S来代替。

IETF标准建议在任何地方都使用/64子网。RIRs支持您的运行/64子网在任何地方。那么,为了适应那些不想更新其代码的路由器供应商,你会破坏你的IPv6地址设计的良好、一致的简单性吗?或者你会告诉你的供应商停止使用过时的代码吗?

您有处理这个问题的几个选项:

  • 如果您运行的较旧的,“预RFC 4443”的Cisco IOS,升级到新的版本。思科支持RFC 4443。
  • 运行IPv6的门牌上的点至点链接。这不是很多运营商一个很好的解决方案,因为它复杂化监测和跟踪。它还在复杂的链接运行EBGP。
  • 阻止从任何不受信任区域访问点对点子网。您可能不希望从网络外部访问点到点接口的IP地址。

即使您采取我推荐的“与供应商对抗”的方法,也要花费他们一些时间来实现现代化。如果您担心乒乓漏洞,一个临时解决方案是为每个点对点链路分配/64个子网,但是在/64中选择一个/127,并在链路接口上配置该子网。这种方法允许您减轻对安全漏洞的即时关注,而且还允许您在适当的时间将/127子网更改为相应的/64s,从而减少网络中断。

你将与​​你的地址的设计很长一段时间的生活。不要让一个供应商的短期懒惰破坏你的长期计划。

加入网络世界社区足球竞猜app软件脸谱网LinkedIn对最重要的话题发表评论。

版权所有©2012足球竞彩网下载

工资调查:结果是