User Tools

Site Tools


doc:howto:freebox

How to use OpenWRT behind a Freebox with IPv6 delegation

This HOWTO explains how to configure OpenWRT to:

  • Enable IPv6 on the Freebox.
  • Obtain IPv6 public network delegation in OpenWRT.
  • Filter IPv6 incoming traffic.

The Freebox is a popular Internet router delivered by French ISP Free to its customers.

The original post can be found on the forum.

Please contribute any remark that could be usefull and help us.

The Freebox is available only in France, therefore this documentation is written in French.
When/if we have more information about NextOp, we will publish a page in English. Feel free to contact us on the forum.

Support IPv6 Freebox

Tous les modèles de Freebox en zone dégroupée sont compatibles avec l'adressage IPv6.

Pour activer l'adressage IPv6, se connecter à l'espace abonné et sélectionner Ma Freebox⇒Passer au protocole IPv6. Ensuite, relancer la Freebox.

S'il est possible de connecter un ordinateur à la Freebox et d'obtenir une adresse IPv6 pour chaque machine connectée, la Freebox fait seulement office de routeur et ne filtre pas les paquets IPv6. Chaque machine connectée est donc exposée directement sur Internet et il convient d'activer le firewall sur chaque machine connectée (lorsque c'est possible). Or, un certain nombre d'objets et d'ordinateurs connectés sont par essence défaillants, ce qui pose d'immenses problèmes de vulnérabilité.

Il est donc intéressant de passer à ipV6 en utilisant un routeur faisant office de firewall, et c'est là qu'OpenWRT rentre en jeu.

Le schéma est le suivant :

Internet ⇔ Freebox IPv6 (délégation /64) ⇔ OpenWRT (adresses /128) ⇔ Clients Windows, Linux, Mac OSX (adresses /128)

Modèles Freebox

Chaque Freebox configurée en IPv6 fournit une délégation d'IPv6 en classe 64, soit 2^64 adresses IPv6 (1,844674407×10¹⁹). La délégation en mode automatique n'est pas officiellement documentée par Illiad et nous avons ouvert un ticket d'incident pour exiger plus d'informations.

Actuellement, la seule méthode fonctionne repose sur la définition d'un NextOP, accessible uniquement dans l'interface Web http://mafreebox.free.fr.

Seuls les modèles FreeBox v6 (Révolution) et FreeBox Android offrent la configuration du NextOP. Pour obtenir une délégation d'adresses IPv6, il vous faudra donc une FreeBox v6 (Révolution) ou une Freebox Android.

Pour simplifier :

  • Zone dégroupée, option IPv6 activée.
  • Freebox mini 4K Android : compatible délégation IPv6.
  • Freebox v6 (révolution) : compatible délégation IPv6.
  • Freebox v5 : incomptabible.
  • Freebox crystal : incomptabible.

Tickets Free.fr :

Matériel OpenWRT

Le routeur OpenWRT utilisé pour réaliser les tests IPv6 est un TP-Link TL-WDR3600, un matériel conçu et assemblé en Chine. Ce matériel dispose de deux cartes réseau sans fil et offre 4 connections Gigabits. Une partie du routage s'effectue au niveau matériel, ce qui laisse supposer de hauts-débits, surtout lorsque la Freebox est connectée à la fibre optique. C'est un matériel performant, bon marché, mais destiné à une utilisation personnelle, car conçu en Chine et donc assez peu adapté à une utilisation dans un milieu nécessitant un haut niveau de sécurité : centre de recherche, entreprise exportatrice, etc … Si vous évoluez dans un environnement sécurisé, nous recommandons d'utiliser un PC du commerce, disposant d'un BIOS simple et éprouvé.

La version d'OpenWRT recommandée pour ce tutoriel est Chaos Calmer (>= 15.05), car le support ipV6 y a été revu et simplifié. DNSmasq est compilé avec le support IPv6. Le démon ODHCPD assure la gestion des baux ipV6 en faisant office de relais SLAAC (RAs). les anciennes versions d'OpenWRT ne fonctionnent pas nativement en ipv6, ou alors il faudra installer des extensions, ce qui n'est pas toujours possible.

S'il fallait faire un choix, nous commandons la version de développement d'OpenWRT compilée régulièrement, qui offre les derniers correctifs.

Configuration OpenWRT

Dans l'interface mafreebox.free.fr, noter :

  • Le préfixe de délégation IPv6, dans notre cas : '2a01:e35:87d8:xxxx::/64' (adaptez à votre valeur). Chaque Freebox propose plusieurs plages d'adresses, on utilisera la première.
  • La case "NextOP", vide, qu'il faudra remplir.

Concernant OpenWRT !

  • ula_prefix est la classe d'adressage privé /64 permettant à OpenWRT de communiquer avec toutes les machines sur réseau local. Dans notre cas, il s'agit de 'fe80:ea94:f6ff:febb::', mais vous pouvez choisir toute valeur.
  • ip6prefix '2a01:e35:87d8:xxxx::/64' est le préfixe obtenu en délégation dans l'interface http://mafreebox.free.fr de la Freebox.
  • 2a01:e35:87d8:xxxx::2' est l'adresse publique du routeur OpenWRT.
  • 2a01:e35:87d8:xxxx::1' est l'adresse publique du gateway, c'est à dire la Freebox.
  • IL faudra adapter ifname 'eth0.1' et ifname 'eth0.2' aux valeurs correspondant à votre matériel.

Passons à la configuration d'OpenWRT :

/etc/config/network

config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
        
config globals 'globals'
option ula_prefix 'fe80:ea94:f6ff:febb::'
 
config interface 'lan'
option ifname 'eth0.1'
option force_link '1'
option type 'bridge'
option proto 'static'
option ipaddr '192.168.1.1'
option netmask '255.255.255.0'
option ip6addr '2a01:e35:87d8:xxxx::1:fe/64' # ATTENTION : Notez le 1:fe
option ip6prefix  '2a01:e35:87d8:xxxx::/64'
option ip6gw      '2a01:e35:87d8:xxxx::1'
option ip6assign '64'

config interface 'wan'
option ifname 'eth0.2'
option proto 'dhcp'

config interface 'wan6'
option ifname 'eth0.2'
option _orig_ifname 'eth0.2'
option _orig_bridge 'false'
option proto 'static'
option ip6addr    '2a01:e35:87d8:xxxx::2/126'
option ip6gw      '2a01:e35:87d8:xxxx::1'
option ip6prefix  '2a01:e35:87d8:xxxx::/64'

...

Ce fichier est probablement inutile, mais nous le laissons toutefois en attendant confirmation : /etc/config/dhcp

config dnsmasq
        option domainneeded '0'
        option boguspriv '1'
        option localise_queries '1'
        option rebind_protection '1'
        option rebind_localhost '1'
        option local '/lan/'
        option domain 'lan'
        option expandhosts '1'
        option authoritative '1'
        option readethers '1'
        option leasefile '/tmp/dhcp.leases'
        option resolvfile '/tmp/resolv.conf.auto'
        option localservice '1'

config dhcp 'lan'
        option interface 'lan'
        option start '100'
        option limit '150'
        option leasetime '12h'
        option ra 'server'
        option dhcpv6 'server'

config dhcp 'wan'
        option interface 'wan'
        option ignore '1'

config odhcpd 'odhcpd'
        option maindhcp '0'
        option leasefile '/tmp/hosts/odhcpd'
        option leasetrigger '/usr/sbin/odhcpd-update'

Vérifier qu'il est possible de pinger la Freebox et OpenWRT:

# ping6 2a01:e35:87d8:xxxx::1
PING 2a01:e35:87d8:xxxx::1(2a01:e35:87d8:xxxx::1) 56 data bytes
64 bytes from 2a01:e35:87d8:xxxx::1: icmp_seq=1 ttl=64 time=0.355 ms
64 bytes from 2a01:e35:87d8:xxxx::1: icmp_seq=2 ttl=64 time=0.368 ms
64 bytes from 2a01:e35:87d8:xxxx::1: icmp_seq=3 ttl=64 time=0.332 ms

# ping6 2a01:e35:87d8:xxxx::2
PING 2a01:e35:87d8:xxxx::2(2a01:e35:87d8:xxxx::2) 56 data bytes
64 bytes from 2a01:e35:87d8:xxxx::2: icmp_seq=1 ttl=64 time=0.351 ms
64 bytes from 2a01:e35:87d8:xxxx::2: icmp_seq=2 ttl=64 time=0.318 ms
64 bytes from 2a01:e35:87d8:xxxx::2: icmp_seq=3 ttl=64 time=0.338 ms

Cela signifiee que les machines sont bien visibles en local.

Il reste maintenant à indiquer à la Freebox où se trouve le routeur permettant de réaliser le routage de la classe /64 obtenue en délégation.

Se connecter à la machine OpenWRT et faire un "ifconfig":

br-lan    Link encap:Ethernet  HWaddr E8:94:F6:BB:AE:16  
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: 2a01:e35:87d8:xxxx::1/64 Scope:Global
          inet6 addr: 2a01:e35:87d8:xxxx::1:fe/64 Scope:Global
          inet6 addr: fe80::ea94:f6ff:febb:ae16/64 Scope:Link
          inet6 addr: 2a01:e35:87d8:xxxx::2/126 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:149251 errors:0 dropped:0 overruns:0 frame:0
          TX packets:165502 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:19964051 (19.0 MiB)  TX bytes:128996868 (123.0 MiB)
 
eth0      Link encap:Ethernet  HWaddr E8:94:F6:BB:AE:16  
          inet6 addr: fe80::ea94:f6ff:febb:ae16/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:321537 errors:0 dropped:0 overruns:0 frame:0
          TX packets:311732 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:158869490 (151.5 MiB)  TX bytes:147256251 (140.4 MiB)
          Interrupt:4 
 
eth0.1    Link encap:Ethernet  HWaddr E8:94:F6:BB:AE:16  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:147289 errors:0 dropped:0 overruns:0 frame:0
          TX packets:152710 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:20627586 (19.6 MiB)  TX bytes:116689392 (111.2 MiB)
 
eth0.2    Link encap:Ethernet  HWaddr E8:94:F6:BB:AE:16  
          inet addr:192.168.0.253  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::ea94:f6ff:febb:ae16/64 Scope:Link
          inet6 addr: 2a01:e35:87d8:xxxx::2/126 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:147302 errors:0 dropped:0 overruns:0 frame:0
          TX packets:133944 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:123124330 (117.4 MiB)  TX bytes:19600916 (18.6 MiB)
 
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:2326 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2326 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:248470 (242.6 KiB)  TX bytes:248470 (242.6 KiB)
 
wlan0     Link encap:Ethernet  HWaddr E8:94:F6:BB:AE:17  
          inet6 addr: fe80::ea94:f6ff:febb:ae17/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4374 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12932 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:312932 (305.5 KiB)  TX bytes:13214799 (12.6 MiB)
 
wlan1     Link encap:Ethernet  HWaddr E8:94:F6:BB:AE:18  
          inet6 addr: fe80::ea94:f6ff:febb:ae18/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4988 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:1203253 (1.1 MiB)

L'adresse du routeur OpenWRT sur le réseau local est br-lan : 'fe80::ea94:f6ff:febb:ae16'.

Se connecter à l'interface mafreebox.free.fr et indiquer:

Nexthop: fe80::ea94:f6ff:febb:ae16

Configuration des clients IPv6

A ce stade, nous avons obtenu une délégation d'IPV6 et configuré le routeur OpenWRT. Il nous reste maintenant à connecter une première machine à notre routeur OpenWRT et configurer son IPv6 publique pour la rendre visible sur le réseau.

Il existe trois grandes méthodes :

  • La configuration manuelle. L'utilisateur choisit et configure manuellement une adresse IPv6.
  • Stateful auto-configuration. Ce type de configuration requiert le protocole DHCPv6 pour attribuer des adresses IP choisies à l'avance.
  • Stateless auto-configuration. L'attribution d'adresses IPv6 s'effectue selon la norme IEEE EUI-64 et repose notamment sur la traduction de l'adresse MAC de l'ordinateur connecté en adresse IPv6. Les adresses et les routes sont distribuées via le protocole SLAAC (RAs).

Tous les systèmes d'exploitation ne savent pas exploiter la configuration stateful. Par exemple, Andoid requiert un adressage IPv6 stateless. Par ailleurs, ces méthodes peuvent cohabiter, de sorte qu'un routeur OpenWRT pourra fournir deux adresses ou plus à un même client. Dans le mesure du possible, on verra comment fournir UNE SEULE ADRESSE ipv6 exploitatble au client.

Nous vous recommandons de commencer par configurer au moins un poste en manuel, pour vérifier la connectivité.

Première méthode : configuration manuelle

La configuration manuelle permet d'assigner une seule adresse IPv6 publique. Elle est adaptée à un besoin d'auto-hébergement, lorsque vous disposez d'une connection SDSL rapide ou d'une connexion fibre optique, pour hébergement vos propres machines (ou micro-machines). C'est pour cela qu'IPv6 a été conçu …

Dans la configuration dhcp du routeur OpenWRT, désactiver l'annonce des routes par défaut (protocole SLAAC) :

config dhcp 'lan'
        #option ra 'server'  # commenter pour désactiver
        ....

Si vous souhaitez conserver SLAAC sur votre réseau interne géré par OpenWRT, il vous faudra désactiver SLAAC sur le poste client, sinon vous recevez plusieurs adresses IPv6 supplémentaires, dont au moins une adresse stateless.

Sous Debian GNU/Linux, dans le fichier /etc/syscrt.conf :

net.ipv6.conf.eth0.accept_ra=0 

Activer avec :

$syscrtl -p

Il faut ensuite configurer :

  • l'ipv6 du client choisie au hasard dans votre délégation d'adresses. Vous pouvez utiliser la notation abrégée : 2a01:e35:87d8:xxxx::3 (ou n'importe quel chiffre autre que 3), mais vous pouvez choisir n'importe quelle adresse /128 au sein de votre plage /64.
  • l'adresse ipv6 du routeur OpenWRT, dans notre cas : fe80::5642:49ff:fe87:xxxx. Attention : il s'agit toujours de l'adresse locale du routeur OpenWRT et non de son adresse publique.

Exemples :

Debian GNU/Linux

Ajouter au fichier : /etc/networking/config:

auto eth0
 iface eth0 inet6 static
 address 2a01:e35:87d8:xxxx::3 # <= Adresse IPV6 publique
 netmask 64
 gateway fe80::5642:49ff:fe87:xxxx # <= Adresse IPV6 locale du routeur OpenWRT

Gnome

Alternativement, si vous utilisez Gnome Network Manager, le gestionnaire de réseau de l'environnement Gnome :

Créer un profil nommé "IPv6" et indiquer les information suivantes :

Adresse manuelle:
 Adresse : 2a01:e35:87d8:xxxx::3
 Préfixe : 64
 Passerelle : fe80::5642:49ff:fe87:xxxx

Deuxième méthode : Stateless configuration

La configuration stateless est une méthode d'attribution d'adresse IPv6 adaptée à un petit réseau local, selon une méthode automatique.

Les adresses IPv6 sont générées automatiquement en ajoutant le sous réseau /32 et l'adresse matérielle MAC. La configuration stateless met en oeuvre le protocole SLAAC (RAs). Toute machine connectée au routeur en DHCPv6 est alors automatiquement configurée.

Cette méthode est critiquée, car un attaquant peut mettre en relation l'adresse MAC de votre machine et son adresse IPV6, qui devient prévisible. A partir d'une base de données des vulnérabilité, il est possible par un simple ping de repérer des machines vulnérables sur un réseau.

Il est possible de contourner ce problème en activant les extensions privées d'IPv6 (ipv6 privacy extensions) sur chacun des postes clients. Il ne nous a pas été possible d'activer ces extensions sous OpenWRT.

Sur le routeur OpenWRT, activer le serveur DHCP et le protocole SLAAC. Fichier /etc/config/dhcp :

config dhcp 'lan'
        option ra 'server' 
        option dhcpv6 'server'
        
        option ra_management '0' # Default value is 1
        #0 means stateless only,
        #1 means stateless + stateful (default)
        #2 means stateful only

L'option dhcpv6 'server' fait tourner DNSmasq en tant que serveur DHCP sur le réseau local 'lan'.

L'option ra 'server' indique que la diffusion des routes est assurée par la protocole SLAAC (RAs). Il s'agit en fait du démon odhcpd.

L'option ra_management indique s'il s'agit de configurer en stateless ('0'), en statefull ('2'), ou les deux ('1'). La valeur par défaut est '1' (les deux). Pour se limiter à une adresse stateless et éviter la diffusion d'une deuxième adresse stateful, on limite la configuration au stateless :

option ra_management '0'

Sur le poste client, par exemple Debian GNU/Linux :

On active les IPv6 temporaires dans le fichier le fichier /etc/sysctl.conf :

net.ipv6.conf.eth0.use_tempaddr=2
net.ipv6.conf.eth0.temp_prefered_lft=7200

Ensuite, on configure la carte réseau sous DHCPv6 :

allow-hotplug eth0
iface eth0 inet dhcp
privext 2 # On demande le niveau 2 d'anonymisation des connexions
iface eth0 inet6 auto

Examinons une adresse assignée automatiquement :

# ip addr 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 54:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.x/24 brd 192.168.1.255 scope global dynamic eth0
       valid_lft 43166sec preferred_lft 43166sec
    inet6 2a01:e35:87d8:xxxx:b9fb:9712:4f55:bd55/64 scope global temporary dynamic 
       valid_lft 65503sec preferred_lft 6563sec
    inet6 2a01:e35:87d8:xxxx:5642:49ff:xxxx:xxxx/64 scope global mngtmpaddr noprefixroute dynamic 
       valid_lft 65503sec preferred_lft 65503sec
    inet6 fe80::5642:49ff:fe87:4f74/64 scope link 
       valid_lft forever preferred_lft forever

On notera que le client a reçu deux adresses IPv6 :

  • L'adresse 2a01:e35:87d8:xxxx:5642:49ff:xxxx:xxxx/64 est une adresse stateless, directement dérivée de l'adresse MAC du PC (donc vulnérable).
  • L'adresse 2a01:e35:87d8:xxxx:b9fb:9712:4f55:bd55/64 est une adresse stateless, attribuée selon la règle des privacy extensions, temporaire (temporary) et valide 5663 secondes (nous avions demandé 7200 s !).

L'adresse temporair est utilisée pour toute connexion sortante, comme le montre un test de connexion IPv6.

L'objectif de configuration stateless est atteint.

Troisième méthode : Stateful configuration

Cette fonctionnalité est très proche de la précédents, sauf que l'on souhaite assigner l'adresse fixe 2a01:e35:xxxx:xxxx::yyyyzzzz/128.

Les baux dhcpv6 sont gérés par le démon odhcp. Le fichier /tmp/hosts/odhcpd liste les baux en cours :

# br-lan 0004901071a15f278795aa0dd83bde8bxxxx uuuuuuuu sony-vaio .....

Le bail comprend un identifiant unique, nommé duid, dans notre cas:

0004901071a15f278795aa0dd83bde8bxxxx .....

Modifier le fichier /etc/config/dhcp

config host
        option name 'sony-vaio'
        option ip '192.168.1.x'
        option mac '54:42:49:xx:xx:xx'
        option duid '0004901071a15f278795aa0dd83bde8bxxxx'
        option hostid '00000003'

hostid a impérativement une longueur de 8 caractères, codés en hexadécimal. Le choix d'une valeur hexadécimale de huits caractères offre plus de protection contre un scan de sous-réseau, par exemple : 'ae441b1c'. Nous avons choisi une valeur simpe : '00000003', qui correspond à la notation abrégée IPv6 ::3.

Pour limiter l'attribution de plusieurs adresses stateless, on active uniquement l'option stateful :

option ra_management '2'

La configuration des clients est la même que pour l'option stateless.

Observons les adresses IP assignées :

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 54:42:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.xx/24 brd 192.168.1.255 scope global dynamic eth0
       valid_lft 43200sec preferred_lft 43200sec
    inet6 2a01:e35:87d8:xxxx::3/128 scope global tentative 
       valid_lft forever preferred_lft forever
    inet6 fe80::5642:49ff:xxxx:xxxx/64 scope link 
       valid_lft forever preferred_lft forever

L'adresse IPv6 publique est bien 2a01:e35:87d8:xxxx::3.

Par contre, il nous faut indiquer la route par défaut au routeur : fe80::5642:49ff:fe87:xxxx. J'ai posé la question au développeurs d'OpenWRT, qui vont me répondre. Et ouvert un ticket d'incident : https://dev.openwrt.org/ticket/20354

DNS public

Quand vous possédez un domaine (mondomaine.org), vous pouvez déclarer chaque machine disposant d'une adresse IPv6 en ajoutant un champ "AAAA" mamachine pointant vers l'adresse ipv6 votre machine. Vous pourrez alors identifier votre machine en utilisant mamachine.mondomaine.org. Tout ceci est très similaire à IPv4.

Dans ce cas, vous pouvez utiliser la notation simplfiée : 2a01:e35:87d8:xxxx::yyy car votre machine est destinée à être accessible et par ailleurs, vous ne trahissez pas son adresse MAC.

Vérification de la connexion

Connexion sortante

Se connecter à votre machine:

ping6 ipv6.google.com
PING ipv6.google.com(par03s12-in-x05.1e100.net) 56 data bytes
64 bytes from par03s12-in-x05.1e100.net: icmp_seq=1 ttl=57 time=28.3 ms
64 bytes from par03s12-in-x05.1e100.net: icmp_seq=2 ttl=57 time=27.0 ms
64 bytes from par03s12-in-x05.1e100.net: icmp_seq=3 ttl=57 time=27.6 ms

Votre machine peut accéder à Internet via Ipv6.

Connexion sortante

Se connecter à une machine distante (pas sur le réseau local) disposant d'une adresse IPv6, par exemple un serveur hébergé chez Online.net:

ping6 2a01:e35:87d8:xxxx::3
PING 2a01:e35:87d8:xxxx::3(2a01:e35:87d8:xxxx::3) 56 data bytes
64 bytes from 2a01:e35:87d8:xxxx::3: icmp_seq=1 ttl=58 time=32.6 ms
64 bytes from 2a01:e35:87d8:xxxx::3: icmp_seq=2 ttl=58 time=30.3 ms
64 bytes from 2a01:e35:87d8:xxxx::3: icmp_seq=3 ttl=58 time=30.5 ms

Votre machine est bien visible depuis Internet.

Filtrage

Se connecter à une machine distante (pas sur le réseau local) disposant d'une adresse IPv6, par exemple un serveur hébergé chez Online.net et utiliser nmap :

nmap -PN -6 2a01:e35:87d8:xxxx::3

Starting Nmap 6.47 ( http://nmap.org ) at 2015-08-13 01:58 CEST
Nmap scan report for 2a01:e35:87d8:xxxx::3
Host is up (0.067s latency).
All 1000 scanned ports on 2a01:e35:87d8:xxxx::3 are closed

all ports are closed

Tous les ports sont bien fermés … Clap … clap … clap

Le filtrage opéré par OpenWRT ne doit pas vous emêcher d'installer un firewall sur chaque machine pour restreindre les connexions. Deux protections valent mieux qu'une.

Adresse IPv6 visible durant la navigation

Il suffit de se connecter à une page Web de test ipv6 avec votre navigateur. Vous pourrez vérifier que votre adresse IPv6 n'est pas dérivée de vore adresse MAC.

Configuration du filtrage

A écrire

Mot de passe console série

Par défaut, la console série d'un routeur OpenWRT est accessible sans mot de passe. Il s'agit d'une large faille de sécurité car tout attaquant avec un accès physique au routeur peut devenir root très facilement.

Attention : cela ne fonctionne pas …

Dans le fichier /etc/inittab, remplacer:

::askconsole:/bin/ash --login

par :

::askconsole:/bin/login

J'ai ouvert un ticket: https://dev.openwrt.org/ticket/20359#ticket

To-Do List

Freebox :

  • Comment obtenir une délégation sur Freebox v5 ou Freebox crystal, en mode automatique, sans NextHop.
  • Pourquoi et comment utiliser l'adresse locale ipv6 de la Freebox. A comparer avec notre réglage : ula_prefix 'fe80:ea94:f6ff:febb::'. A-t-on intérêt à tout enregister sur un même réseau local ipv6 ?

OpenWRT :

  • En mode stateful, le gateway IPv6 n'est pas annoncé (donc le réseau est inaccessible). J'attends la réponse des développeurs OpenWRT ou alors j'ouvrirai un ticket d'incident.
  • Comment propager les DNS IPv6 du routeur OpenWRT.
  • Comment propager les NTP IPv6 du routeur OpenWRT.
  • Activer DNSSEC sur le routeur OpenWRT, car la Freebox inclue les informations DNSSEC. Faut-il installer la version complète de dnsmasq ?
  • Comment utiliser DHCPv6 pour configurer les interfaces WAN6 et LAN du routeur OpenWRT. Cela ne semble pas fonctionner.
  • Forcer l'anonymisation des adresses IPv6 au niveau d'OpenWRT et non sur chaque client, car la configuration est trop longue et ouvre la place à des erreurs de configuration ou des oublis.
  • Sécuriser la console. Si l'on met en place OpenWRT, c'est pour bénéficier d'une protection supplémentaire, pas pour se faire hacker avec 2 fils de console série ouverts à grand vent.

Pour aller plus loin

Free offrant la délégation de plusieurs réseaux IPv6, il est possible de segmenter les réseaux en utilisant des VLAN :

  • un premier sous-réseau /32 en configuration stateful pour de l'auto-hébergement,
  • un deuxième sous-réseau /32 en configuration stateless pour des connexions IPv6 simples.
  • un troisième vlan 100 laissant passer les services de télévision.

Recommandations de sécurité

Nos recommandations sont les suivantes :

  • Si vous évoluez dans un environnement sécurisé, préférez un ordinateur à un matériel embarqué pour faire fonctionner OpenWRT.
  • Sur votre réseau personnel, dans le cadre d'un poste bureautique : activer les privacy extensions. Si vous utilisez Gnome, vous pouvez créer deux profils réseau : ipv4 et ipv6. N'utilisez ipv6 que lorsque c'est nécessaire.
  • Sur votre réseau personnel, dans le cadre d'un auto-hébergement en ipv6, toujours privilégier une adresse IPv6 fixe manuelle.
  • Mettre un mot de passe à la console série ou la désactiver complètement (méthode physique ou logicielle).
  • Bien que les connexions soient filtrées par OpenWRT, également activer le firewall sur chaque poste. Il faudra laisser passer les requêtes DHCPv6 et ping/ping6 pour permettre l'échange des routes IPv6.
  • Mettre en place un serveur de log séparé d'OpenWRT (par exemple sur une Rasberry Pie) pour monitorer tous les incidents et détecter d'éventuelles tentatives d'intrusion. Vous êtes désormais votre propre hébergeur … avec les avantages et inconvénients que cela suppose.

Références

Acknowledgments / Remerciements

  • Steven Barth For his kind replies and help on OpenWRT developer mailing list.

Changelog

  • 2015-08-14 Publication initiale.
  • 2015-08-17 sécurisation de la console série par un mot de passe.
  • 2015-08-18 configuration stateful, privacy extensions, recommandations de sécurité.
  • 2015-08-18 remerciements. option ra_management.
doc/howto/freebox.txt · Last modified: 2015/10/16 18:47 by tmomas