+++
author = "Yann Verry"
categories = ["ipv6", "network"]
date = 2020-05-23T14:36:58Z
description = ""
draft = false
image = "__GHOST_URL__/content/images/2020/05/fbxserver_v6.jpg"
slug = "freebox-et-ipv6"
tags = ["ipv6", "network"]
title = "Freebox et IPv6 un firewall binaire"

+++


Free via sa freebox est de loin l'équipement qui en france propose pour le _grand public_ le plus grand support d'ipv6. En effet il est possible de router des prefix (jusqu'à 8) très facilement.

Si comme moi vous héberger beaucoup de chose chez vous vous avec le support d'IPv6 actif il vous faut donc un vrai firewalling. Ce que malheureusement la freebox ne propose pas. Actuellement il est binaire: c'est tout rentre et firewall sur chaque machine ou tout est bloqué sans règle possible à faire pour le traffic entrant.

C'est donc gênant, très gênant !

Plusieurs solution possible, voici la mienne.

## Je suis ton routeur

On va donc faire sois même le boulot. Si vous auto-héberger des choses c'est qu'une machine tourne H24 chez vous. Il est donc possible de transformer votre serveur en routeur pour la partie ipv6. Si la machine tombe, l'ipv6 est HS mais le reste en v4 continue de fonctionner (et c'est important pour le [WAF](https://en.wikipedia.org/wiki/Wife_acceptance_factor)).

Tout d'abord on récupère son IPv6 de lien local  (quelque chose en fe80:: qui est en [EUI-64](https://en.wikipedia.org/wiki/MAC_address) donc lié à votre MAC). Une fois récupéré se rendre dans l'interface de  FreeboxOS, paramètre de la Freebox >> Configuration IPv6 :

{{< figure src="__GHOST_URL__/content/images/2020/05/fbx_ipv6-1.png" caption="Freebox IPv6 setup" >}}

Bien conserver l'ipv6 du lien local de la freebox, car votre serveur passe lui en static.

## Préparation de l'OS

Il faut comme tout routeur indiquer au kernel qu'il va router des paquets. Pour cela ajouter dans sysctl.conf la directive :

```
net.ipv6.conf.all.forwarding=1
```

Comme la doc l'indique cela supprime aussi l'acceptation des advertisements router.‌‌ Ca tombe bien il faut aussi fixer de manière static votre configuration réseau.‌‌ Sous debian par exemple j'ai :

```
iface <mon interface>
  inet6 static
  address 2a01:e0a:<une ip de mon prefix>
  netmask 64
  gateway fe80::<l'ip de ma freebox>
```

Il ne faut surtout pas prendre :1 en IP car celle-ci est utilisé par la freebox.

## Eh bien annoncé maintenant !

La freebox n'annonce donc plus le subnet ipv6, il faut donc le faire. Pour cela installer radvd pour _Router Advertisement Daemon._ de votre OS préféré.

```
interface <votre interface> {
	AdvSendAdvert on;
    AdvDefaultPreference high;
    RDNSS 2001:910:800::12 {};
    prefix <votre prefix>::/64 {
    	AdvOnLink on;
    	AdvAutonomous on;
    };
};
```

Dans cette exemple il faut indiquer l'interface réseau ou annoncer, votre prefix et dans la section RDNSS indiquer un serveur récursif (ici celui de FDN).

Activer radvd au boot puis le daemon et voila ! vous avez reproduis ce que fais la freebox mais c'est votre machine qui route les paquets. La priorité est défini à "high" car il y a un [bug](https://dev.freebox.fr/bugs/task/19192) côté freebox qui continue à annoncer sans prefix.

## Firewall

Tout le traffic passe enfin par votre machine, il est donc facile d'activer du firewalling iptables tout ce qu'il y a de plus classique. Bien utiliser les paquets prévu pour:

```
apt install netfilter-persistent iptables-persistent
```

Tout s'éffectue dans la table **FORWARD**. 

Enjoy it!

