J’ai récemment décidé de me mettre au vert, vivre à la campagne la belle vie! Je me suis donc installé en novembre 2023 dans une petite maison loin de tout. Première préoccupation: Internet ! Et quel histoire ! Donc en Novembre j’anticipe pour avoir internet dés qu’on arrive, j’ai déjà contacté free pour effectuer le raccordement à la nouvelle adresse. Ils ont le nom de l’ancienne locataire tout à l’air de se présenter au mieux. Le technicien free vient une première fois et la surprise ils ne connaissent pas le nom, donc il faut ouvrir une ligne. Mais il n’y a plus de place sur le répartiteur ou une histoire du genre. Bref ……. Pas d’internet, enfin si… on utilise nos connections 4G, problème c’est une ancienne maison, le réseau ne passe pas très bien. On met donc nos téléphone dans le garage en partage de connections. Pas très pratiques mais ça fonctionne. Par contre pour le télétravail avec les appels en visio ça tombe à l’eau.

OpenMPTCRouter

Il faut trouver une solution, mon colocataire à le droit à 3 jours de télétravail et il fait les allers retours tout les jours… Impensable. Ce dernier en arrive à me parler de ce projet https://www.openmptcprouter.com/about , c’est développé par un Français Yannick Chabanois et c’est notamment utilisé par Apple pour son assistant virtuel SIRI ! Ce logiciel est opensource et peut tourner sur une raspberry-pie, il est basé sur un protocole, le MPTC(MultiPathTCP), ce dernier est d’ailleurs implémenter dans les dernières versions du kernel linux. L’idée derrière MPTC est de permettre de “dé-corréler” l’IP de TCP d’une certaine manière. Si l’on à plusieurs connection, nous avons donc deux IP distincte sur internet. Si l’on veut réaliser une connection TCP au travers de ces deux IP c’est impossible, il faut fermer la socket TCP et la rouvrir sur l’autre interface. Le protocole MPTC propose de palier à ce problème.

Dingue! Bref pour rentrer dans le détail, l’idée derrière c’est de pouvoir agréger plusieurs connections internet afin de par example :

  • améliorer la latence d’une connection grace à une autre
  • améliorer la vitesse en couplant les deux connections

Donc la mon idée c’est d’agréger plusieurs connection 4G et voir ce que ça peut donner ! Donc c’est partie on installe OpenMPTCRouter sur une petite RaspBerryPI qui traînait dans le coin et hop on démarre tout ça. Voici le wiki pour l’installation, il nécessite l’installation de la partie routeur sur la RPI et aussi la mise en place d’une VPS. OpenMPTCRouter Au passage je me rend compte que c’est basé sur un plus gros projet OpenWRT , qui développe un système d’exploitation pour les objets connectés. Très utilisé pour se faire un petit routeur maison rapidement c’est très pratiques.

Si l’on en reviens à nos moutons, je peux essayer d’agréger 3 connections 4g, j’ai ma puce Bouygues, une free et mon colloc à aussi une free. Chacune nous offre entre 30 et 60 méga grand max. On vas pouvoir essayer, connecter les puces a la RPI va devoir s’effectuer via usb avec un dongle usb et sinon nos téléphone connecté en usb en partage de connection. Au final gros bricolage, pas hyper fonctionnels. Et toujours pas de nouvelles de Free pour ètre raccordé en ADSL ça doit déjà faire 1 mois ou 2.

Stop les conneries !! Je décide de prendre les choses en mains, la dernière solutions envisageable le satellite ! Je regarde un peu, c’est cool en plus Orange propose une solution avec NordNet je vais regarder ça ! Avec les aides de l’état en plus le deal aurait pu être intéressant mais nous sommes en locations, notre propriétaire risque d’être frileux vis a vis de l’installation d’une énorme antenne parabole. Tant pis on pars pour Starlink (Disclaimer: Je déteste Elon Musk mais malheureusement le service est ultra canon et fonctionne vraiment super bien…) Je commande et on reçois ça en l’espace de 3 ou 4 jours super rapide, l’installation du starlink se fait en quelques heures. On reçoit presque tout le matériel nécessaire, la parabole pas très grande sur ses pieds c’est du solide en métal bien lourd. Ensuite vient un très grand cable que l’on vas pouvoir faire passer sous la porte du garage, pratique. Ce cable vas jusqu’au routeur Starlink, et le routeur est par défaut un routeur wifi mesh. Après beaucoup de réglage du positionnement de l’antenne, nous avons désormais une connection relativement bonne dans les alentour des 100 mega ! Malgré tout on peut des fois voir des interruptions un peu conséquentes, une latences visible jusque dans le navigateur. Nous avons donc matière à amélioration.

Le réseau local

Yeah success ! Maintenant le problème est de répartir cette connection internet dans toute la maison, un routeur wifi coté garage n’est pas assez puissant pour toute la maison. Par contre la maison est récente et toutes les pièces sont raccordé via une prise internet brassable dans le garage ! Hop un petit switch, on brasse toutes les prises derrière la RPI et le tour est … ah non. Pas de prise ethernet par défaut sur le starlink donc il faut commander un petit dongle en plus. Dongle reçu on connecte tout ça et voila si besoin de wifi dans une pièces donnés on met un répéteur wifi en général une rpi en plus et le tour est joué ! Au passage on a viré la partie OpenMPTCRouter et le routeur starlink fait son travail.

Rebondissement dans l’affaire Free

Plusieurs mois sont passé, et la tout s’enchaîne Free et Orange on finalement trouvé un moyen de nous raccorder, je vous passe les détails ou les techniciens on du passer 4km de ligne adsl pour trouver d’ou venait le problème! (Spoiler un court circuit). On à une ligne adsl !!!! Et pas dégueulasse autour des 15 mega ! Starlink … Adsl … Hmmm vous voyez ou je veux en venir ? :p

Le retour d’OpenMPTCRouter

Et ouais avec deux connections distinctes il vas falloir retenter tout ça, ça pourrait régler nos petites problèmes de latences. Donc je retente tout ça, par contre on se retrouve avec un problème, en effet la RPI n’a qu’un seul port ethernet et moi j’en ai deux en entré, un de la box free et un depuis le routeur stalink. Je peux mettre un dongle usb ethernet mais je lis pas mal que ce n’est pas forcément idéal. Une autre solution aurait été d’acheter un device exprès qui avait déjà plusieurs port ethernet ou une carte réseau. L’achat de nouveaux appareils électroniques est aujourd’hui pour moi quelque chose à faire de manière raisonné. Et voici venu la partie la plus intéressante qui arrive ! Les Vlans !!!! A force de chercher je suis tombé sur une vidéo qui expliquait que grace aux vlans on pouvait divisé un port ethernet en plusieurs virtuellement damn !!!

Les Vlans

Okay je suis développeur à l’origine mais je vois dans les grandes lignes ce qu’est un vlan, on va le réaliser sur un switch manageable afin de créer différents réseaux entre différents appareils. Afin de séparer ces derniers les uns des autres.

Imaginons Caro de la compta ne doit pas être dans le meme réseau que Jean du service commercial pour des raisons de sécurité ou de séparation de l’information. Au lieu de tirer des cables de tout les cotés car par malchance les différents services ne sont pas séparé dans des pièces différentes, on vas connecter tout les postes sur des switch manageable et réalisé la ségrégation de manière virtuel. Ainsi lorsque caro envoie une requête au switch ce dernier sait que caro ne peut discuter qu’avec des gens de la compta et surtout pas avec les commerciaux.

Vlan simple example Dans cet example, nous avons crée deux réseaux bien séparés. Le VLAN vert est pour les commerciaux. Le PC de Jean ici ne sera autorisé par le Switch à envoyé des paquets uniquement à son collègue commercial. Pareil pour le VLAN bleu, Caro ne peut discuter que avec ses collègues de la compta.

Trunk Vlans

Okay les VLAN c’est sympa mais en entreprise, ici on est deux collocs ça devrait aller si l’on est sur le meme réseau. Par contre il y a un type de VLAN qui par hasard vas me sauver la vie ! Le fameux trunk VLAN, comme je l’expliquais plus haut, j’ai désormais deux WAN (Starlink,Freebox), et un réseau LAN. Wlan Lan Home Par contre la RPI n’a qu’un port ethernet… L’idée du trunk vlan va être de couper en deux un port ethernet (plus exactement en 3). Comment ça coupé un port ethernet en deux ? On veut que des réseaux différents soit connectés au meme port ethernet sans crée le bordel, overlapping réseaux etc.

Donc ce que l’on va réellement vouloir faire c’est ça :

Trunk Vlan Okay donc on va utiliser notre switch manageable de la sorte, nous aurons 3 Vlans, le Vlan entre le port 1 et le port 3, celui entre le port 2 et 3 et enfin celui pour le Lan avec tout les ports restant sur le switch et le port 3. Vous remarquerez que le port 3 est un peu surchargé ! Mais vraiment pas grand chose hein !! 3 réseau sur un seul port … comment ça peut fonctionner ? Parlons Tag sur les Vlan, on peut voir que le port à une interface bien connu, eth0 c’est l’interface physique. Nous avons pareil sur la RPI.

Configuration OpenMPTCRouter

Nous allons donc dans un premier temps créer deux nouvelles interfaces sur le Routeur :

#Par défaultle CIDR OpenMPTCRouteur est 192.168.100.1/24
#On se connect en ssh
ssh root@192.168.100.1

#On va modifier le fichier contenant les définitions d'interfaces
vim /etc/config/network

Voici un example simple de définition de l’interface LAN lié à l’interface eth0

config interface 'lan'
        option proto 'static'
        option ipaddr '192.168.100.1'
        option netmask '255.255.255.0'
        option device 'eth0'
        option ifname 'eth0'
        option ip4table 'lan'

Nous définissons une IP statique. Et voici la définitions des deux devices :

config device 'freewan_dev'
        option name 'eth0.10'

config device 'starwan_dev'
        option name 'eth0.100'

Nous allons donc ajouté un tag sur chaque device, pour le WAN Freebox, nous lui rajoutons le tag “100” et pour celui du Starlink ce sera le tag “10”. (Pas sur que j’ai fait ça dans l’état de l’art des réseauteurs et réseauteuses, donc criée pas au scandale wesh) Ce que ça veut dire c’est que dés qu’un paquet réseaux sortira par l’une ou l’autre de ces interfaces, une encapsulation de ce paquet sera ajouté, une couche supplémentaire contenant le tag soit “10” soit “100”. Trame Vlan

Ensuite il ne nous reste plus qu’a définir les deux interfaces correspondantes :

config interface 'freewan'
        option proto 'dhcp'
        option metric '9'
        option multipath 'on'
        option device 'eth0.10'

config interface 'starwan'
        option proto 'dhcp'
        option metric '10'
        option multipath 'master'
        option device 'eth0.100'

Chacune des interfaces aura besoin d’un client DHCP pour récupérer une IP, en effet aucun fournisseurs n’est foutu capable de donner assez de droits sur leurs matériels pour désactiver leur DHCP server. La freebox mème en mode bridge à un serveur DHCP, pareil pour le starlink que ce soit en mode bypass ou normal… Totalement inutile mais bon…

Configuration coté Switch

Voici la magnifique interface offerte par mon switch Dlink : Vlan Setup Ici on peut voir que j’ai déja configuré les différents vlan. Pour refaire les étapes dans l’ordre je doit d’abord créer un VID (VlanID). Vlan Setup 2 Je vais donc définir chaque VID, le premier pour free j’indique le tag dans notre cas “100”, je lui donne un petit nom “freewan”. Et je vais séléctionner les ports qui participe au “freewan”. Le port 1 et 3. Sur le port 1, nous voulons que le switch supprime le tag lorsqu’un paquet sort par ce port. Car la freebox ne saurait pas quoi faire de ce types de paquet. Donc le port eth1 du switch doit ètre untagged, et à l’inverse le port eth3 doit ètre tagger afin que le Router OpenMPTC sache quoi faire du paquet correspondant soit redirigé sur la bonne interface sur ce dernier. Donc ici sur l’interface eth0.10.

Il faut ensuite faire à peu près la même chose coté VLAN pour le Starlink, le port 3 est toujours tagger et le port 2 doit être untagged.

Puis je met tout les autres port non membre sur le VLAN par défaut “1”. Enfin pour terminer je doit spécifier le PVID pour chaque port de la sorte : Vlan Setup 3 Donc “10” pour eth1, “100” pour eth2 et le reste sur le VID 1 !

Et voila ! On branche tout et ça devrait fonctionner !

Le chemin d’une trame

Essayons de schématisé ce qu’il se passe :

Chemin d’une trame avec Vlan

  1. Je suis sur un PC dans le réseau LAN, j’effectue une requête sur internet. La trame entre sur le switch sur le port4.
  2. Nous somme dans le VLAN par défaut le “1”, donc le paquet est envoyé sur le port3 qui appartient aussi au LAN.
  3. En sortant du switch la trame n’est pas tagué, elle doit arrivé sur l’interface eth0 qui correspond au LAN du OpenMPTCRouteur.
  4. Lui fait son routage, et vas désormais savoir qu’il doit envoyé cette trame sur non plus l’interface eth0 simple mais celle du Freewan donc “eth0.10”. Ce qui ajoutera le tag correspondant à cette dernière.
  5. J’arrive tagger en “10” sur le switch lui sait qu’il doit réémettre cette trame sur le port eth1 du switch en n’oubliant pas d’enlever le tag avant de sortir.
  6. Le paquet arrive non tagger sur le routeur Freebox, ce dernier l’envoie sur internet.
  7. La réponse de la requête, revient sur le port eth1.
  8. Le port eth1 appartenant au vlan 10, il vas réémettre en taggant la trame sur le port3.
  9. Le paquet arrive sur le Routeur sur l’interface “eth0.10”.
  10. Charge au routeur d’enlever le tag qui ne servira à rien dans le LAN
  11. Le PC reçoit sa réponse !