Cisco IOS中的IPv6通配符匹配可能吗?


9

Facebook的IPv6地址方案非常聪明,但是让我想到了ACL,是否有可能编写与之匹配的Cisco IOS IPv6 ACL?在IPv4中,您可以匹配一个中间的八位位组,例如10.xxx.10.xxx,以便用“忽略”命中任何“ x”。我认为这在IPv6中是不可能的,至少从IOS 15.1起是不可行的。

在我的示例中,由于Facebook很聪明,因此可以轻松地在FACE:B00C上进行匹配。这样就简化了,因为无需查找分配的块,我就可以在该范围内进行匹配。

2A03:2880:F000:[0000-FFFF]:FACE:B00C :: / 96

显而易见的正常方法是在2A03:2880:F000 :: // 48上进行匹配,但是不幸的是,我不确定FB是否具有较大范围(可能确实如此)。因此,在这种特殊情况下,如果我可以仅在FACE:B00C部分进行匹配,则可以匹配他们正在使用的所有内容,假设它们不会继续前进到FACE:B00D

由于无法在IOS for和IPv6 ACL中输入通配符掩码,因此我认为您无法执行此操作,但是我很好奇是否有人有一个有趣的解决方法。我认为了解这一点将很有用,因为在某些时候,我可能仅由于DDoS或激进的流量而需要过滤一个子块,而又不想为某个大型提供程序阻塞整个/ 32。

另外,这可能允许基于策略的流量重定向或优先级。如果我发现广告位于不同的块中,则可以对它们进行QoS调整,例如,对于低带宽,拥塞的卫星链路来说,这是一个不错的功能。

编辑:澄清一下。在某些情况下,我需要阻止或允许大范围内的某些范围(例如/ 32)。这些可能会有些连续,而不是数百个条目,通配符可能会匹配其中的大部分。这也可以按我可以路由所有10.x.10.0块的方式用于流量工程,其中如果x为奇数,则它沿一条路线进行运动,甚至经过另一条路线。

另一个示例是DDoS,其中使用拼写黑客的组名的模式来欺骗IPv6源IP。这将至少发生一次,能够对其进行过滤将是一件很不错的事情。

紧凑的ACL更干净,但并不总是更易于管理。这些东西可能是好主意或坏主意/做法,在这里并不是要争辩,只是试图掌握我拥有的工具与可能要创造的工具。


请帮助我们了解如果获得了ACL,将如何使用它们。这是出于安全性吗?如果是这样,您是否可以将防火墙转移给它?什么样的防火墙?
Mike Pennington 2014年

不要打扰 如果您正在寻找Facebook,只需匹配其前缀并完成即可。我最近看到了一种...:face:b00c:0:1您的方法不会采用的方法。
迈克尔·汉普顿

如果要阻止范围,请使用子网。如果大于/ 48,则使用/ 47,/ 46 ...等。在这种情况下,我不确定使用“通配符”匹配将完成什么操作。您能否再澄清一点?
塞巴斯蒂安·维辛格

有什么答案对您有帮助吗?如果是这样,您应该接受答案,这样问题就不会永远弹出来寻找答案。或者,您可以提供并接受自己的答案。
罗恩·莫平

Answers:


6

不幸的是,思科取消了IPv6中的通配符掩码。这在大多数情况下都是一件好事,但在这种情况下除外。但是,要使您的想法可行,您必须依靠Facebook既“聪明”又一致,这可能不仅仅是人们所希望的。

但是,如果您要对Facebook的流量进行不同于其他流量的处理,则可以仅按其分配的地址块进行过滤。您在问题中提到的那个实际上分配给了Facebook Ireland:2a03:2880 :: / 32。

但是,在注册表中查找其他人同样容易。


有趣,因为那是我要从佛罗里达州的实验室连接到的Facebook的障碍。GeoIP是另一种咆哮。是的,很好,接受/过滤/阻止整个/ 32。我要问的概念上的原因更实际,其中ISP分配了一系列滥用的块。我想阻止,但是我不能只阻止整个/ 32特定的/ 48s或/ 64s。FACE:B00C的使用是一个简单的示例,但我想阻止的也可以是2001:2880:0100-0FF0:FACE:B00C。它不会成为常见的过滤器,但我想始终接受:C0FF:EE:
John Spade-'DaSpadeR'2014年

1
@ JohnSpade-'DaSpadeR'A /32足够大,您可以将其分解为很多子网,并将它们路由到全球。子网和IPv4 IP地址一样多!此时,whois记录几乎无关紧要。而且,IPv6地址的地理位置定位还不是很好。
迈克尔·汉普顿

5

我正在使用FPM做一些事情,我认为它可以满足您的需求:

load protocol system:fpm/phdf/ether.phdf
load protocol flash:/fpm/phdf/ipv6.phdf
!
class-map type stack match-all cm-ipv6
 match field ETHER type eq 0x86DD next IPV6
class-map type access-control match-all cm-ipv6-facebook
 match start IPV6 dest-addr offset 9 size 4 eq 0xFACEB00C
!
policy-map type access-control pm-ipv6-facebook
 class cm-ipv6-facebook
   drop
policy-map type access-control pm-filter
 class cm-ipv6
   log
  service-policy pm-ipv6-facebook
!
interface FastEthernet0/1
 service-policy type access-control input pm-filter

我必须为此滚动自己的ipv6.phdf文件:

<?xml version="1.0" encoding="UTF-8"?>
<phdf>
 <version>1</version>
 <protocol name="ipv6" description="Definition-for-the-IPv6-protocol">
 <field name="version" description="IP version">
  <offset type="fixed-offset" units="bits">0</offset>
  <length type="fixed" units="bits">4</length>
 </field>
 <field name="tc" description="IPv6-Traffic-Class">
  <offset type="fixed-offset" units="bits">4</offset>
  <length type="fixed" units="bits">8</length>
 </field>
  <field name="fl" description="IPv6-Flow-Label">
  <offset type="fixed-offset" units="bits">12</offset>
  <length type="fixed" units="bits">20</length>
 </field>
 <field name="length" description="IPv6-Payload-Length">
  <offset type="fixed-offset" units="bits">32</offset>
  <length type="fixed" units="bits">16</length>
 </field>
 <field name="nh" description="IPv6-Next-Header">
  <offset type="fixed-offset" units="bits">48</offset>
  <length type="fixed" units="bits">8</length>
 </field>
 <field name="hl" description="IPv6-Hop-Limit">
  <offset type="fixed-offset" units="bits">56</offset>
  <length type="fixed" units="bits">8</length>
 </field>
 <field name="source-addr" description="IPv6-Source-Address">
  <offset type="fixed-offset" units="bits">64</offset>
  <length type="fixed" units="bits">128</length>
 </field>
 <field name="dest-addr" description="IPv6-Destination-Address">
  <offset type="fixed-offset" units="bits">192</offset>
  <length type="fixed" units="bits">128</length>
 </field>
 <field name="payload-start" description="IPv6-Payload-Start">
  <offset type="fixed-offset" units="bits">320</offset>
  <length type="fixed" units="bits">0</length>
 </field>
 <headerlength type="fixed" value="320"></headerlength>
 <constraint field="version" value="6" operator="eq"></constraint>
</protocol>
</phdf>

不幸的是,当我执行“显示策略映射类型访问控制接口fa0 / 1”时,在ethertype上没有找到匹配项:

FastEthernet0/1 

  Service-policy access-control input: pm-filter

    Class-map: cm-ipv6 (match-all)
      0 packets, 0 bytes
      5 minute offered rate 0 bps, drop rate 0 bps
      Match: field ETHER type eq 0x86DD next IPV6
      log

      Service-policy access-control : pm-ipv6-facebook

        Class-map: cm-ipv6-facebook (match-all)
          0 packets, 0 bytes
          5 minute offered rate 0 bps
          Match: start IPV6 dest-addr offset 9 size 4 eq 0xFACEB00C
      drop

        Class-map: class-default (match-any)
          0 packets, 0 bytes
          5 minute offered rate 0 bps, drop rate 0 bps
          Match: any 

    Class-map: class-default (match-any)
      10000 packets, 1863618 bytes
      5 minute offered rate 14000 bps, drop rate 0 bps
      Match: any 

我怀疑我对Facebook IPv6地址的ping不能通过CEF正常运行(FPM常见问题解答说这是必需的),或者我丢失了一些东西。尽管如此,我还是将它提供给任何想要咀嚼的人。


乔迪,您好,+ 1是一个有创意的答案。Cisco IOS在过程级别(即非CEF交换)处理往返于路由器的ping操作……也许值得在路由器后面添加另一台主机来证明该解决方案。
Mike Pennington 2014年

嘿,迈克。好点子。我正在从Mac到Facebook进行所有ping测试,因此尽管它仍然可能是一个过程切换问题,但这并不是因为它起源于或终止于路由器。仍在尝试找出这一点。有趣的是,我什至没有找到与父策略的0x86dd以太网类型匹配的对象。
乔迪·勒穆恩

如果它们不是在路由器上发起/终止,则应启用cef切换,只要启用了ipv6 cef。
Mike Pennington 2014年

IPv6 CEF肯定已启用,因此我认为我们做得很好。真的想知道为什么在ethertype上没有匹配项。
乔迪·勒穆因
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.