Victor Schubert’s personal page

Remplacer la Freebox fibre par un routeur Mikrotik

Introduction

J’aime avoir le contrôle de mon matériel informatique. C’est pourquoi j’ai décidé de remplacer ma Freebox fibre par un routeur Mikrotik RB2011UiAS-2HnD. Comme je ne regarde pas la télévision ni n’utilise de téléphone fixe, les fonctionnalités dont j’ai besoin sont assez limitées :

J’ai pu atteindre ces deux objectifs et cet article est un résumé de mon parcours et des configurations que j’ai effectué. Je suis certain qu’il est possible d’avoir accès à la télévision et au téléphone VoIP à partir de cette installation. Si je le fais un jour, j’écrirai un autre article.

Installation du matériel

Je dispose de la fibre FTTH, c’est à dire que je dispose dans mon salon du boîtier permettant de connecter ma box à la fibre du bâtiment. Lorsque les techniciens Free sont venus faire leurs installations, ils ont connecté une fibre au boîtier ( fibre avec une gaine verte sur l’image ). L’autre extrémité de cette fibre fut équipée d’un module SPF permettant de faire le lien entre les composantes électroniques de la Freebox et les signaux lumineux de la fibre. Ce module SPF peut être extrait de la Freebox s’il y est déjà branché.

Boîtier FTTH, deux fibres y sont connectées.
Boîtier FTTH. Y sont connectés une fibre allant vers le reste du bâtiment, et une allant vers mon routeur.
Routeur Mikrotik avec fibre connectée via un module SPF.
Routeur Mikrotik. La fibre ( avec une gaîne bleue et noire ) est connectée au module SPF, lui-même inséré dans le routeur.

Si tout est connecté alors nous sommes prêts à configurer le routeur.

Connectivité IPv4

Pour commencer, j’ai tenté d’établir la connectivité IPv4. Simplement brancher le routeur à la fibre ne suffit pas. Je n’ai pas vraiment trouvé de documentation satisfaisante sur Internet concernant la configuration requise, donc j’ai décidé de fournir un peu de travail d’investigation.

Inspection du traffic sur la fibre

RouterOS est équipé d’un sniffeur de paquets, qui permet de filtrer et d’inspecter tous les paquets traités par le routeur. Ce système reste toutefois limité en termes de visualisation, c’est pourquoi j’utiliserai Wireshark pour inspecter tout ce qui passe sur la fibre. Heureusement, nous pouvons utiliser le routeur pour faire suivre les paquets qu’il inspecte à une instance de Wireshark sur un PC en réseau.

Voici la configuration que j’ai utilisé pour intercepter les paquets sur le Mikrotik :

/tool sniffer set \
    only-headers=no \
    streaming-enabled=yes \
    streaming-server=<IP de la machine exécutant Wireshark> \
    filter-interface=sfp1 \
    filter-direction=any \
    filter-operator-between-entries=and

/tool sniffer start RouterOS

À partir de maintenant, le routeur relaie une copie de chaque paquet passant sur la fibre à la machine dont j’ai spécifié l’addresse IP. Il suffit désormais d’y lancer Wireshark, de sélectionner l’interface adéquate et d’écrire dans la barre de filtrage, tzsp, afin de ne voir que ces paquets.

Je vois alors passer du traffic, surtout des requêtes ARP qui viennent donc du routeur auquel je suis directement connecté. Je remarque cependant que tous ces paquets sont sur le VLAN 836. Je vais donc tenter de me mettre sur ce VLAN et d’y faire une requête DHCP.

N’oublions pas d’arrêter le sniffeur lorsque nous n’en avons plus besoin.

/tool sniffer stop RouterOS
Connexion au VLAN 836 et requêtes DHCP

Pour utiliser un VLAN sur RouterOS, on crée une « interface virtuelle » représentant un VLAN sur une interface. Pour créer cette interface virtuelle, j’utilise la commande suivante.

/interface vlan add name=sfp1:836 vlan-id=836 interface=sfp1 RouterOS

Je peux désormais utiliser sfp1:836 tel n’importe quelle autre interface afin de communiquer sur le VLAN 836. Je vais le faire immédiatement en tentant d’obtenir une IP grâce à DHCP.

/ip dhcp-client add \
    interface=sfp1:836 \
    add-default-route=yes
RouterOS

MAGIE ! Un serveur DHCP a répondu aux requêtes de mon routeur et ce dernier s’est vu assigner une addresse IPv4. Quelques tests rapides indiquent que cette addresse me permet en effet de contacter le reste d’Internet ! Je ne détaillerai pas ici la mise en place d’un réseau local filaire et sans-fil, d’un serveur DHCP et de NAT permettant à des machines d’opérer sur un réseau privé IPv4, il existe déjà de nombreuses ressources à cet effet accessibles à l’aide d’un moteur de recherche.

Je n’ai pas trouvé de documentation indiquant que cette IP est fixe et je ne sais pas si c’est influencé par l’option accessible sur la Freebox. Je n’ai jamais connecté ma Freebox et cette addresse est restée fixe depuis que j’ai fait ces installations. Je pense donc que c’est effectivement une IP fixe par défaut.

Connectivité IPv6

Actuellement, Free ne supporte pas nativement l’IPv6. Afin de fournir ce service, ils utilisent des tunnels 6to4 encapsulant le traffic IPv6 dans des paquets IPv4 et l’acheminant jusqu’à des gateways connectées au réseau IPv6. Afin de pouvoir déterminer la destination du traffic IPv6 entrant, le préfixe IPv6 de chaque client Free est généré à partir de leur IPv4 en suivant un procédé simple.

Convertir une IPv4 Free en un préfixe IPv6

Insérez l’IPv4 globale que Free vous a assigné dans le champ de texte qui suit pour obtenir votre préfixe IPv6. Celui-ci est obtenu en insérant votre IPv4 dans le préfixe 2a01:e3X:XXXX:XXX0::/64, en remplaçant les X par l’IPv4 hexadécimale. ( La conversion se fait en local. À aucun moment l’IP que vous écrivez ici ne quitte votre navigateur. )


IPv6 : 2a01:e35:2535:4550::/64
Mise en place du tunnel 6to4

Si depuis une machine supportant l’IPv6 je ping une addresse dans mon préfixe, si j’analyse les paquets qui arrivent sur le routeur, je vois d’ores et déjà arriver le 6to4 sur le VLAN 836. Mon routeur, n’étant pas encore configuré pour les utiliser, les ignore. En inspectant leur source, je détermine l’addresse de la gateway 6to4.

Comme pour le VLAN, le 6to4 est configuré en créant une interface virtuelle. Ceci se fait à l’aide de la commande suivante.

/interface 6to4 add \
    name=ip6-tunnel \
    remote-address=<IP de la gateway 6to4> \
    local-address=<Mon IPv4 publique>
RouterOS

Le routeur est désormais capable de recevoir et d’envoyer des paquets IPv6. Il ne reste plus qu’à lui donner une addresse IPv6 dans son préfixe et à configurer le routage.

Routage IPv6

D’abord, donnons au routeur une addresse qu’il pourra annoncer sur le réseau local. Connaissant notre préfixe, j’utilise la commande suivante.

/ipv6 address add \
    address=2a01:e3X:XXXX:XXX0::1/64 \
    interface=<Interface du réseau local> \
    advertise=yes
RouterOS

Comme nous avons activé l’annonce de l’addresse, toutes les machines sur le réseau local s’auto-assigneront une addresse sur le préfixe ! Ne reste plus que le routage vers Internet.

/ipv6 route add \
    dst-address=2000::/3 \
    gateway=ip6-tunnel RouterOS

Et voila ! Le réseau est désormais connecté à la fois en IPv4 et en IPv6, et toutes nos IPv6 sont joignables de l’extérieur, sans avoir besoin de DHCPv6 ou autre non-sens. Avec juste cette configuration, aucune de nos machines connectées en IPv6 ne bénéficient de protection de la part du routeur. Je choisis personellement de bloquer le traffic IPv6 entrant par défaut, en ouvrant au besoin lorsque je décide qu’une machine devrait être joignable. Je donne ci-après la base de mes règles de pare-feu. Adaptez-les à vos besoins !

/ipv6 firewall filter add chain=forward action=accept protocol=icmpv6
/ipv6 firewall filter add chain=forward action=accept in-interface=in out-interface-list=out
/ipv6 firewall filter add chain=forward action=accept connection-state=established,related out-interface=in in-interface-list=out
/ipv6 firewall filter add chain=forward action=reject reject-with=icmp-no-route
/ipv6 firewall filter add chain=input action=accept protocol=icmpv6
/ipv6 firewall filter add chain=input protocol=tcp in-interface=in dst-port=22
/ipv6 firewall filter add chain=input action=reject reject-with=icmp-no-route
RouterOS