Il est généralement admis qu'il existe une non fragmentation IPv6, car l'en-tête IPv6 ne possède pas le champ de décalage de fragment que fait IPv4; Cependant, ce n'est pas exactement exact. IPv6 n'autorise pas les routeurs à fragmenter les paquets; cependant, les noeuds d'extrémité peuvent insérer un en-tête de fragmentation IPv6 .
Comme RFC 5722 États , l'un des problèmes de fragmentation est qu'il tend à créer des trous de sécurité. À la fin des années 1990, il y avait plusieurs attaques bien connues sur Windows 95 qui exploitaient des fragments IPv4 chevauchants ; en outre, la fragmentation en ligne des paquets est risquée à graver dans le silicium du routeur Internet en raison de la longue liste de problèmes qui doivent être traités. L'un des plus gros problèmes est que les fragments qui se chevauchent dans un routeur (en attente de réassemblage) pourraient potentiellement causer une faille de sécurité sur ce périphérique s'ils sont mal gérés. Le résultat final est que la plupart des implémentations de routeurs poussent les paquets nécessitant une fragmentation vers le logiciel; cela ne se fait pas à grande vitesse.
L'autre problème est que si vous réassembler des fragments, vous devez les tampons pendant une période de temps jusqu'à ce que le reste sont reçus. Il est possible pour quelqu'un de tirer parti de cette dynamique et d'envoyer un très grand nombre de fragments IP non finis; forcer l'appareil en question à dépenser de nombreuses ressources en attente d'une opportunité de réassembler. Les implémentations intelligentes limitent le nombre de fragments en suspens pour éviter un déni de service de cette part; cependant, limiter les fragments en suspens pourrait légitimement affecter le nombre de fragments valides qui peuvent être réassemblés.
En bref, il y a trop de problèmes poilues pour permettre à un routeur pour gérer la fragmentation. Si les paquets IPv6 nécessitent une fragmentation, les implémentations des hôtes doivent être assez intelligentes pour utiliser TCP Path MTU discovery. Cela implique également que plusieurs messages ICMPv6 doivent être autorisés de bout en bout; Il est intéressant de nombreux administrateurs de pare-feu IPv4 bloquent ICMP pour se prémunir contre la cartographie de réseau hostile (et bloquer tout naïvement ICMPv6), sans se rendre compte que le blocage de tous les ICMPv6 casse les choses de façon subtile .
FIN-NOTES:
Voir la section 4.5 du Internet Protocol, Version 6 (IPv6) Specification
De RFC 5722: Handling of Overlapping IPv6 Fragments:
pare-feu couramment utilisés utilisent l'algorithme spécifié dans [RFC1858] pour éliminer les paquets malveillants qui tentent de surcharger riter les parties de l'en-tête de couche de transport dans afin de contourner les contrôles de connexion entrants. [RFC1858] empêche une attaque de fragment chevauchant sur un protocole de couche supérieure (dans ce cas, TCP) en recommandant que les paquets avec un décalage de fragment de 1 soient supprimés.
Bien que cela fonctionne bien pour les fragments IPv4, il ne fonctionnera pas pour les fragments IPv6. En effet, la partie fragmentable du paquet IPv6 peut contenir des en-têtes d'extension avant l'en-tête TCP, rendant cette vérification moins efficace.
Voir Teardrop attack (wikipedia)
Voir RFC 4890: Recommendations for Filtering ICMPv6 Messages in Firewalls
+1, c'est incroyable combien les routeurs peuvent être plus rapides quand ils peuvent tout faire dans le matériel – mpontillo
Bloquer tout v4 ICMP est tout aussi nocif - les réponses de fragmentation nécessaires sont tout aussi importantes pour PMTUD dans IPv4. – caf