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的方式。这是出于安全性吗?如果是这样,您是否可以将防火墙转移给它?什么样的防火墙?

不要打扰如果您正在寻找Facebook,只需匹配其前缀并完成即可。我最近看到了一个...:face:b00c:0:1,您的方法将无法使用。

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

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

#1 楼

不幸的是,思科取消了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月21日在2:56



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

–迈克尔·汉普顿
2014年1月21日15:30

#2 楼

我正在玩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操作...也许值得在路由器后面添加另一台主机以证明解决方案。

–迈克·彭宁顿
2014年1月26日13:34



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

–乔迪·莱莫因(Jody Lemoine)
2014年1月26日13:39



如果它们不是在路由器上发起/终止,只要启用了ipv6 cef,就应该进行cef切换。

–迈克·彭宁顿
2014年1月26日13:56

IPv6 CEF肯定已启用,因此我认为我们做得很好。真的想知道为什么在ethertype上没有匹配项。

–乔迪·莱莫因(Jody Lemoine)
2014年1月26日下午16:55