Les correspondances génériques IPv6 dans Cisco IOS sont-elles possibles?

9

Facebook est très intelligent avec leur schéma d'adresse IPv6, mais cela m'a fait penser aux ACL et est-il possible d'écrire une ACL IPv6 Cisco IOS qui correspond? Dans IPv4, vous pouvez faire correspondre un octet du milieu tel que 10.xxx.10.xxx afin de frapper n'importe quel 'x' avec 'ne vous en souciez pas'. Je ne pense pas que ce soit possible dans IPv6, du moins pas depuis IOS 15.1.

Dans le cas de mon exemple, puisque Facebook a été intelligent, il est facile de faire correspondre simplement sur FACE: B00C si vous le pouvez. D'une certaine manière, cela simplifie, car sans chercher quel bloc a été attribué, je peux simplement faire correspondre cette plage.

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

La manière évidente et normale est de faire correspondre 2A03: 2880: F000 :: / 48 mais malheureusement, je ne suis pas sûr d'un coup d'œil si FB a une gamme plus large (probablement). Donc, dans ce cas particulier, si je pouvais faire correspondre uniquement la partie FACE: B00C, je pourrais faire correspondre tout ce qu'ils utilisent, en supposant qu'ils ne passent pas à FACE: B00D

Comme je ne peux pas entrer un masque générique dans IOS pour et IPv6 ACL, je ne pense pas que vous puissiez le faire, mais je suis curieux de savoir si quelqu'un a une solution de contournement intéressante. Je pense qu'il serait utile de le savoir car à un moment donné, je pourrais avoir besoin de filtrer un sous-bloc uniquement à cause des DDoS ou du trafic agressif tout en ne voulant pas bloquer un / 32 entier pour un grand fournisseur.

De plus, cela pourrait permettre une redirection ou une priorisation du trafic basée sur des règles. Si je me rends compte que les publicités sont dans un bloc différent, je pourrais les QoS différemment par exemple, une fonctionnalité intéressante pour les liaisons satellites à faible bande passante et encombrées.

EDIT: Pour clarifier un peu. Il peut y avoir des cas où j'ai besoin de bloquer ou d'autoriser certaines plages dans un grand bloc comme un / 32. Celles-ci peuvent être légèrement contiguës et plutôt que des centaines d'entrées, un caractère générique peut correspondre à de grandes parties d'entre elles. Cela pourrait également être utilisé pour l'ingénierie du trafic dans la façon dont je pourrais router tous les blocs 10.x.10.0 où si x est impair, il va d'un itinéraire vs même à un autre itinéraire.

Un autre exemple est un DDoS où l'IP source IPv6 est usurpé avec un modèle qui épelle le nom du groupe des pirates. Cela se produira au moins une fois, ce serait bien de pouvoir y filtrer.

Un ACL compact est plus propre mais pas toujours plus facile à gérer. Ces choses peuvent être de bonnes ou de mauvaises idées / pratiques, pas ici pour faire valoir cela, juste pour essayer de comprendre quels outils j'ai par rapport à quels outils je dois peut-être créer.

John Spade - «DaSpadeR»
la source
Veuillez nous aider à comprendre comment vous utiliseriez les listes de contrôle d'accès si vous les obteniez. Est-ce pour la sécurité? Si oui, y a-t-il des pare-feu sur lesquels vous pouvez décharger cela? Quel genre de pare-feu?
Mike Pennington
Ne t'embête pas. Si vous recherchez Facebook, faites simplement correspondre leurs préfixes et terminez. J'en ai récemment vu une qui n'a ...:face:b00c:0:1pas été retenue par votre approche.
Michael Hampton
Si vous souhaitez bloquer des plages, utilisez des sous-réseaux. Si c'est plus qu'un / 48, utilisez / 47, / 46 ... etc. Je ne sais pas ce que vous accomplirez avec une correspondance "générique" dans ce scénario. Pouvez-vous peut-être clarifier un peu plus?
Sebastian Wiesinger
Une réponse vous a-t-elle aidé? si c'est le cas, vous devez accepter la réponse afin que la question ne s'affiche pas indéfiniment, à la recherche d'une réponse. Alternativement, vous pouvez fournir et accepter votre propre réponse.
Ron Maupin

Réponses:

6

Malheureusement, Cisco a supprimé les masques génériques dans IPv6. C'est surtout une bonne chose, SAUF dans ce cas particulier. Cependant, pour que votre idée fonctionne, vous devez compter sur Facebook à la fois "intelligent" et cohérent, ce qui est probablement plus que ce que l'on peut espérer.

Mais si vous souhaitez traiter le trafic de Facebook différemment des autres trafics, vous pouvez simplement filtrer sur leur bloc d'adresse attribué. Celui que vous mentionnez dans votre question est en fait attribué à Facebook Ireland: 2a03: 2880 :: / 32.

Mais il est tout aussi facile de rechercher les autres dans les registres.

Ron Trunk
la source
Amusant, car c'est le bloc sur Facebook auquel je me connecte depuis mon laboratoire en Floride. GeoIP est une autre diatribe. Oui, très bien, acceptez / filtrez / bloquez le tout / 32. La raison conceptuelle que je demande est plus pratique, lorsqu'un FAI attribue une série de blocs abusifs. Je veux bloquer, mais je ne peux pas bloquer l'ensemble / 32 uniquement des / 48 ou 64. L'utilisation de FACE: B00C est un exemple illustratif facile, mais il pourrait également s'agir de 2001: 2880: 0100-0FF0: FACE: B00C que je veux bloquer. Ce ne sera pas un filtre commun, mais j'aimerais toujours accepter : C0FF: EE:
John Spade - 'DaSpadeR'
1
@ JohnSpade-'DaSpadeR 'A /32est assez grand pour que vous puissiez le décomposer en de très nombreux sous-réseaux et les acheminer dans le monde entier. C'est autant de sous-réseaux que d'adresses IP IPv4! Le record de whois est presque hors de propos à ce stade. Et la géolocalisation n'est pas encore très bonne pour les adresses IPv6.
Michael Hampton
5

Je jouais avec FPM et je pense que cela peut faire ce que vous cherchez:

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

J'ai dû rouler mon propre fichier ipv6.phdf pour celui-ci:

<?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>

Malheureusement, quand je fais une "affiche l'interface de contrôle d'accès de type policy-map fa0 / 1", je n'obtiens aucune correspondance sur le 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 

Je soupçonne que mes pings vers l'adresse IPv6 de Facebook ne fonctionnent pas correctement via CEF (la FAQ FPM dit que c'est nécessaire) ou je manque quelque chose. Pourtant, je mets cela à la disposition de tous ceux qui veulent le mâcher.

Jody Lemoine
la source
Salut Jody, +1 pour une réponse créative. Cisco IOS gère les pings vers et depuis le routeur au niveau du processus (c'est-à-dire non commutés CEF) ... peut-être qu'il vaut la peine d'ajouter un autre hôte derrière le routeur pour prouver la solution.
Mike Pennington
Salut Mike. Bon point. Je faisais tous mes tests de ping de mon Mac vers Facebook, donc même si cela peut encore être un problème de commutation de processus, ce n'est pas parce qu'il a commencé ou s'est terminé sur le routeur. J'essaie toujours de comprendre celui-ci. La chose intéressante est que je n'obtiens même pas de correspondance avec le type d'éther 0x86dd de la stratégie parent.
Jody Lemoine
S'ils ne proviennent pas / ne se terminent pas sur le routeur, ils doivent être commutés cef, tant que ipv6 cef est activé.
Mike Pennington
IPv6 CEF est définitivement activé, donc je pense que nous y sommes bien. Je me demande vraiment pourquoi il n'y a pas de correspondance sur le type éther.
Jody Lemoine du