Free propose à ses abonnés dégroupés un préfixe ipv6 /64 depuis la fin 2007. En l'activant dans la console de gestion, la freebox permet l'auto-configuration des interfaces réseau en ipv6 via NDP. Mais pour cela, la freebox cherche à atteindre directement toutes les interfaces réseaux, or avec un routeur supporté par OpenWRT, la freebox est en mode bridge pour l'ipv4...
Pour contourner cet obstacle, il va falloir ne rien toucher pour l'ipv4, mais bridger l'interface wan vers le lan pour l'ipv6.
-
Compilation d'OpenWRT
Suivre les instructions du wiki d'OpenWRT pour compiler le trunk (version utilisée : r25461).
Il faut rajouter le support d'ebtables (non disponible dans la ditribution officielle de BackFire), le support d'IPv6 par défaut dans les paquets et ip6tables.
Bien vérifier que le binaire généré correspond bien au modèle de routeur. -
Flashage du routeur
Flasher un routeur est une opération dangeureuse qui peut endommager le matériel de façon irréversible!
Pour un premier flashage, il vaut mieux installer un firmware officiel et activer le boot_wait pour avoir une chance de revenir en arrière après le flashage.
-
Configurer le bridge IPv6
Récupérer le préfixe ipv6 dans l'interface de gestion de free (ne pas oublier d'activer l'IPv6 sur la freebox).
Via SSH sur le routeur flashé :
- Désactiver les règles IPv6 par défaut (pris en compte au prochain démarrage du pare feu)
-
uci set firewall.@forwarding[-1].family=ipv4uci set firewall.@zone[0].family=ipv4uci set firewall.@zone[1].family=ipv4uci commit firewall - Activer la possiblité de filtrer le traffic ipv6 d'un bridge avec ip6tables (désactivé par défaut) (pris en compte au prochain démarrage d'OpenWRT)
-
sysctl -w net.bridge.bridge-nf-call-ip6tables=1 - Créer le bridge et mettre en place un firewall minimaliste (remplacer $PREFIX par votre préfixe IPv6)
-
# ajout de l'interface WAN sur le bridge du réseau localbrctl addif br-lan eth0.1# Politique par défaut du routage dans le bridge : ACCEPTebtables -t broute -P BROUTING ACCEPT# On vide la table ebtables -t broute -F BROUTING# On n'accepte que l'IPv6, l'IPv4 passe toujours via le routage/NAT classiqueebtables -t broute -A BROUTING -i eth0.1 -p ! ipv6 -j DROP# Politique IPv6 : on n'accepte rienip6tables -P INPUT DROP ip6tables -P OUTPUT DROP ip6tables -P FORWARD DROP# On vide les tablesip6tables -F INPUTip6tables -F OUTPUTip6tables -F FORWARD# ICMPv6 accepté (ping, NDP, ...) dans les 2 sensip6tables -I FORWARD -p icmpv6 -j ACCEPT# Traffic déjà établi ou en relation avec une connexion déjà acceptée seulementip6tables -I FORWARD -i br-lan -m state --state ESTABLISHED,RELATED -j ACCEPT# Traffic en provenance du préfixe IPv6 de Free acceptéip6tables -A FORWARD -i br-lan -p tcp -s $PREFIX -j ACCEPT
Je ne garantie pas que les règles de pare feu suffisent à la sécurité du réseau local!
Normallement, les hôtes du réseau local devraient recevoir automatiquement le préfixe IPv6 de la freebox et le ping6 devrait fonctionner.
ping6 www.free.fr
PING www.free.fr(www.free.fr) 56 data bytes
64 bytes from www.free.fr: icmp_seq=1 ttl=60 time=32.7 ms
64 bytes from www.free.fr: icmp_seq=2 ttl=60 time=32.3 ms
64 bytes from www.free.fr: icmp_seq=3 ttl=60 time=33.1 ms
64 bytes from www.free.fr: icmp_seq=4 ttl=60 time=32.7 ms
^C
--- www.free.fr ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 32.389/32.765/33.154/0.270 msSi tout fonctionne correctement, il suffit d'ajouter ces dernières règles (à partir du brctl) dans le fichier /etc/firewall.user pour qu'elles soient pris en compte à chaque démarrage du pare feu.