Configuration IPv6 NAT via OpenWRT

02/10/2018

Cette configuration a été mise en place sur un Linksys WRT1900ACS avec dessus un OpenWRT (dans la version 18.06). Le routeur ne remplace ici pas la box (10.0.0.1) mais se trouve juste derrière gérant un autre réseau (10.0.0.2 <=> 10.0.1.1). L'idée étant d'avoir de l'IPv6 mais privée pour garder un contrôle strict sur mes appareils. Ce pourquoi j'ai opté pour du NAT6.

Installation des dépendances

J'espère que vous avez déjà un accès SSH (root) au routeur, si ce n'est pas le cas occupez vous déjà de ça (je détails rien, il existe pas mal de tuto sur le net (voir même la doc)). On s'attaque dans un premier temps aux dépendances pour le support des outils IPv6 (certains des packages sont déjà installés par défaut) :

$ opkg update
$ opkg install ip6tables kmod-ipt-nat6 iputils-tracepath6

Configuration WAN et WAN6

On va faire simple, je pars du principe que ces 2 interfaces soient connectés en mode DHCP, en gros vous n'avez pas besoin de modifier quoi que ce soit. Votre routeur doit récupérer une IPv4 et IPv6 depuis la box.

Configuration du NAT

On configure le NAT pour transferer le traffic IPv6, pour ça il faut rajouter la ligne ci-dessous dans le fichier /etc/firewall.user (qui existe déjà) :

$ ip6tables -t nat -A POSTROUTING -o $(uci -q get network.wan6.ifname) -j MASQUERADE

Configuration de la gateway

Et pour terminer on configure la gateway, le mieux étant de faire un script qui sera automatiquement exécuté lors du démarrage des interfaces réseaux, oui toutes mais la route sera rajoutée uniquement si ça concerne le wan6, le fichier /etc/hotplug.d/iface/90-ipv6 sera très certainement à créer :

#!/bin/sh
[ "$ACTION" = ifup ] || exit 0
[ "$INTERFACE" = wan6 ] && {
    route -A inet6 add ::/0 gw $(tracepath6 -n xorhak.fr | grep ' 1: ' | awk 'NR==1 {print $2}') dev $(uci -q get network.wan6.ifname)
}

Et ne pas oublier les droits d'exécution :

$ chmod +x /etc/hotplug.d/iface/90-ipv6

Vérification

Bon avant de vérifier quoi que ce soit, il faudra redémarrer le routeur pour la prise en charge des modifications (forcément), attendez quelques minutes...

Maintenant depuis votre PC (peut importe l'OS du moment qu'il support aussi l'IPv6 en DHCP) vous devriez avoir une IPv6 attribuée automatiquement (même plusieurs) et l'accès à l'extérieur devrait bien répondre :

$ ping6 google.com

Vous devez aussi vérifier qu'il s'agisse bien de l'IPv6 de votre routeur via test-ipv6.com ou ipv6-test.com.

🌱 DJΞRFY 🚀

👨🏻‍💻 Tech Lead SRE. Like #Linux, #Apple, #Kubernetes, #Docker, #Unraid, #Traefik, #Hacking, #Chia. Member of @OpenChia Team 🌱 ¯\_(ツ)_/¯