IPv6 chez freeFree fourni une connectivité IPv6 depuis Décembre 2007. J'ai longtemps cherché comment mettre en place cette techno chez moi, malheureusement, j'ai l'impression que les differentes doc trouvées sur le net datent un peu et ne sont pas forcement à jour. AttentionLes technos IPv6 chez Free semblent évoluer rapidement. Il faut donc noter que tout ce qui suit est valable au 11/06/2008. Cette documentation manque peut-être de précision ou est erronée, sur certain point. Toutes les remarques ou compléments d'informations sont les bienvenus Syntaxe, conventions et notes
Ce que fait la FreeboxComment activer IPv6L'activation se fait au travers de l'interface d'admin free. Après avoir coché l'option, il faut redémarrer la Freebox. L'activation est immédiate. Comment l'IPv6 circule-t-il entre la Freebox et ailleursLa Freebox transporte les paquets via un tunnel 6to4rd (source: http://www.iliad.fr/presse/2007/CP_IPv6_121207.pdf - cache). Cette "technologie innovante" est un dérivé des tunnels 6to4. Elle permet de fournir à l'utilisateur une ip avec le préfixe IPv6 attribué a Free. Ce protocole n'a donné suite à aucune spécification ou RFC. On ne peut donc pas monter soit-même son propre tunnel 6to4rd. On reste tributaire de la Freebox. Comment l'IPv6 circule-t-il entre la Freebox et le réseaux localLa freebox en mode IPv6 se comporte comme un routeur. Elle ne sait pas communiquer avec un autre routeur. Par défaut la freebox doit donc pouvoir joindre directement avoir toutes les adresses utilisées sur votre réseau. Elle envoie régulièrement des paquets de type "router advertisement" en multicast sur son réseau. (détails sur le "router advertisement": http://www.networksorcery.com/enp/protocol/icmp/msg9.htm - cache). Ces paquets permettent l'autoconfiguration simple des neuds IPv6 présents. La freebox prend la première adresse disponible pour le réseau fourni. ainsi, pour le reseau 2a01:e35:2f22:e3d0::/64 l'adresse de la freebox sera 2a01:e35:2f22:e3d0::1 Valider le lienje configure ma machine en ipv6, j'affecte une adresse ip. J'utilise la première disponible, donc 2a01:e35:2f22:e3d0::2. Je configure une route par défaut vers la freebox. Les commandes sont: ip -6 address add 2a01:e35:2f22:e3d0::2/64 dev dev_int ip -6 route add default via 2a01:e35:2f22:e3d0::1 dev_int la commande ip -6 address retourne la configuration des interface. On peut noter des adresses positionnées automatiquement reconaissables par leur préfixe fe80::. Ces adresses sont dites "adresses de lien local" elles sont indispensable pour le bon fonctionnement d'IPv6. (plus d'infos sur l'adressage IPv6: http://www.linux-france.org/~openingault/gulliveripv6/theorie/addr.html - cache) ~# ping6 2001:200:0:8002:203:47ff:fea5:3085 PING 2001:200:0:8002:203:47ff:fea5:3085 (2001:200:0:8002:203:47ff:fea5:3085): 56 data bytes 64 bytes from 2001:200:0:8002:203:47ff:fea5:3085: icmp6_seq=0 ttl=46 time=329.2 ms 64 bytes from 2001:200:0:8002:203:47ff:fea5:3085: icmp6_seq=1 ttl=46 time=327.9 ms ~# tcpdump -ni dev_int ip6 15:02:35.940446 IP6 2a01:e35:2f22:e3d0::2 > 2001:200:0:8002:203:47ff:fea5:3085: ICMP6, echo request, seq 0, length 64 15:02:36.262112 IP6 fe80::207:cbff:fe36:7d6 > ff02::1:ff00:2: ICMP6, neighbor solicitation, who has 2a01:e35:2f22:e3d0::2, length 32 15:02:36.262507 IP6 2a01:e35:2f22:e3d0::2 > fe80::207:cbff:fe36:7d6: ICMP6, neighbor advertisement, tgt is 2a01:e35:2f22:e3d0::2, length 32 15:02:36.263089 IP6 2001:200:0:8002:203:47ff:fea5:3085 > 2a01:e35:2f22:e3d0::2: ICMP6, echo reply, seq 0, length 64 15:02:37.021098 IP6 2a01:e35:2f22:e3d0::2 > 2001:200:0:8002:203:47ff:fea5:3085: ICMP6, echo request, seq 256, length 64 15:02:37.361008 IP6 2001:200:0:8002:203:47ff:fea5:3085 > 2a01:e35:2f22:e3d0::2: ICMP6, echo reply, seq 256, length 64 On peut constater que ça fonctionne. Si le ping ne répond pas, il faut investiguer. Cette validation est bien évidement indispensable pour installer IPv6. On peut noter dans la capture, l'ecghange "neighbor solicitation"/"neighbor advertisement" qui à pour vocation de remplace l'ARP. On peut aussi noter que les adresses utilisées pour ces échanges sont les adresses de lien local. Topologie de son réseaux et techniquesToute personne soucieuse de la sécurité et du bon focntionnement de son réseaux refusera de mettre tout un lan directement relié à la Freebox. Il faut absolument rajouter un routeur filtrant. A cause du fonctionnement de la freebox, on ne peux pas utiliser de solution propre. Deux solution s'opposent, une utilise un switch filtrant, l'autre se base sur l'équivalent IPv6 du proxy ARP. La solution a base de switch filtrant est décrite ici: http://ip6.fr/free-broute/ - cache Personellement je préfère utiliser le routage standard. Je vais donc décrire la solution que j'ai employé. Voilà déjà le schéma:
Format des adresses IPv6 fournies et sous résauxMon ipv6 free donnée sur le site free est la suivante: 2a01:e35:2f22:e3d0::/64. Elle est composée comme ceci:
IPv6 utilise ses 64 premiers bits pour les adresses de réseaux, et les 64 bits de poids faible pour les adresses de hosts. C'est une norme, dans la pratique, on peut découper ses réseaux comme bon nous semble. Ca tombe bien, car Free done un /64, donc un seul réseau. Préparation du routeurPlan d'adressagedans mon exemple, je vais découper le reseau de la manière suivante:
Avec ce plan d'adressage, j'économise un peu les adresses. On peut remarquer un /126 pour le réseaux d'interconnexion entre la freebox et et le routeur. Il n'y à que 4 adresses utilisée (2 adresses utiles + 2 adresses de réseau) au lieu de 2^64 adresses prévues par la norme. Chaque DMZ est un reseau /112, cela laisse la possibilité d'utiliser 2^16 ip par dmz (a mon avis EDF m'aura coupé le courant avant que j'en ai utilisé la moitié). La raison de ce découpage est simple, je peux utiliser le ':' de la norme d'ecriture IPv6 comme séparateur entre els adresses de host et les adresses de réseau. Configuration du routeurip -6 address add 2a01:e35:2f22:e3d0::2/126 dev dev_int ip -6 address add 2a01:e35:2f22:e3d0:2:1/112 dev dev_dmz ip -6 address add 2a01:e35:2f22:e3d0:3:1/112 dev dev_lan ip -6 route add default via 2a01:e35:2f22:e3d0::1 dev_int NOTE: j'ai constaté sur mon kernel, des routes par defaut qui apparaissent toutes seules. Je ne connais pas l'élément déclencheur de l'apparition, mais il faut prendre soin de les effacer. ces routes ont cette forme: ~# ip -6 route default dev dev_int default dev dev_dmz1 default dev dev_dmz2 default dev dev_lan La syntaxe pour supprimer une route est la suivante: ip -6 route del default dev dev_XXX Test de routageFaisons un ping depuis une DMZ vers l'internet: dmz~# ping6 2001:200:0:8002:203:47ff:fea5:3085 PING 2001:200:0:8002:203:47ff:fea5:3085(2001:200:0:8002:203:47ff:fea5:3085) 56 data bytes --- 2001:200:0:8002:203:47ff:fea5:3085 ping statistics --- 6 packets transmitted, 0 received, 100% packet loss, time 5013ms Ca ne fonctionne pas, voyons la capture réseau sur le routeur: ~# tcpdump -ni dev_lan ip6 00:10:35.934720 IP6 2a01:e35:2f22:e3d0::2:2 > 2001:7a8:363c:2::2: ICMP6, echo request, seq 1, length 64 00:10:36.056274 IP6 fe80::207:cbff:fe36:7d6 > ff02::1:ff02:2: ICMP6, neighbor solicitation, who has 2a01:e35:2f22:e3d0::2:2, length 32 00:10:36.948538 IP6 2a01:e35:2f22:e3d0::2:2 > 2001:7a8:363c:2::2: ICMP6, echo request, seq 2, length 64 00:10:37.056268 IP6 fe80::207:cbff:fe36:7d6 > ff02::1:ff02:2: ICMP6, neighbor solicitation, who has 2a01:e35:2f22:e3d0::2:2, length 32 On voit le ping partir sur le net (ICMP6, echo request). On ne le voit pas revenir, en revanche, on voit des requête "neighbor solicitation" en provenace de la Freebox. L'explication est simple: la Freebox est sencé être le routeur par défaut pour tout le réseau IPv6. Elle s'attend donc à trouver l'adresse source émettrice du ping directement reliée à elle. Elle essaye de faire la correspondance entre l'adresse IPv6 et l'adresse mac pour savoir à qui envoyer le paquet ICMP6 de réponse. Comme expliqué précédement, les requêtes "neighbor solicitation" sont emises avec l'adresse de lien local. Ces types d'adresses ne peuvent pas être routées (d'où leur nom). La machine qui à emis le ping ne peux donc pas être jointe. La solutionAvec un kernel 2.4, la solution consiste à renseigner les IPv6 pour lesquelles le routeur pourra joindre l'hôte de la manière suivante: ip -6 neigh add proxy <IPv6> nud permanent dev dev_int. De cette manière, le routeur répondra au requêtes ICMP6 "Neighbor Solicitation" à la place du destinataire, il recevra le paquet, et pourra le router. Toutefois cette technique fonctionne, mais elle est un peu contraignante, il faut renseigner toutes les IPv6 disponibles sur le réseau local: ip -6 neigh add proxy 2a01:e35:2f22:e3d0::2:2 nud permanent dev dev_int Voila comment réagit le routeur pour un ping: dmz~# ping6 2001:200:0:8002:203:47ff:fea5:3085 PING 2001:200:0:8002:203:47ff:fea5:3085(2001:200:0:8002:203:47ff:fea5:3085) 56 data bytes 64 bytes from 2001:200:0:8002:203:47ff:fea5:3085: icmp6_seq=0 ttl=46 time=337.3 ms ~# tcpdump -ni dev_int ip6 00:11:26.748925 IP6 2a01:e35:2f22:e3d0::2:2 > 2001:200:0:8002:203:47ff:fea5:3085: ICMP6, echo request, seq 1, length 64 00:11:26.857472 IP6 fe80::207:cbff:fe36:7d6 > ff02::1:ff02:2: ICMP6, neighbor solicitation, who has 2a01:e35:2f22:e3d0::2:2, length 32 00:11:26.940163 IP6 fe80::213:10ff:fe15:57db > fe80::207:cbff:fe36:7d6: ICMP6, neighbor advertisement, tgt is 2a01:e35:2f22:e3d0::2:2, length 32 00:11:26.940749 IP6 2001:200:0:8002:203:47ff:fea5:3085 > 2a01:e35:2f22:e3d0::2:2: ICMP6, echo reply, seq 1, length 64 On voit la requete "neighbor solicitation" émise par la freebox, et la réponse du routeur "neighbor advertisement" se déclarant comme répondant à cette adresse IP. Le paquet "ICMP6, echo reply" peut ensuite être acheminé vers sa destination. |
Advertisements |