Sélectionner une page

Ayant déménagé il y’a maintenant presque un an, je me retrouve avec un abonnement ASDL à 2Mb/s via une livebox play. Quand on a deux ados à la maison, c’est peu. Trop peu.

Propriétaire d’un routeur Asus RTAC68U, et titulaire d’un abonnement Free 100Go en 4G, j’ai essayé de les paramétrer ensemble. Peine perdue. L’interface de management ne voit pas le routeur Huawei que j’utilise, et en utilisant un téléphone Android (ce qui est censé être compatible), le lien ne monte pas.

J’ai donc monté une usine à gaz à base de Raspberry pi 3, mais ce n’était guère stable et surtout très peu pratique à administrer. Par ailleurs, ce n’était pas très souple : tout passait par l’abonnement 4G, et avec un ado friand de Youtube, ce n’était pas une idée géniale.

J’ai donc cherché une meilleure solution, et suite à une série de toots visible sur Mastodon, j’ai découvert le routeur Turris Omnia.

Le but de cet article n’est pas de faire une présentation dans le détail du routeur, je vous encourage à visiter le blog (excellent) de Stephane Bortzmeyer, qui l’a fait bien mieux que moi.

Je vais juste m’attacher à détailler mon installation, pourquoi et comment j’en suis arrivé là.

Commande passée sur Amazon, j’en profite pour acheter aussi un SSD mSata de 120Go, le routeur permettant de base de gérer des containers LXC. Cela permet d’ajouter des services supplémentaires sur le routeur sans pour autant impacter le système de base, qui continue à faire ce pourquoi il est prévu à la base : router et filtrer le trafic. J’y reviendrai.

Premier point, quand on reçoit le routeur et qu’on veut installer le SSD : le port mSata est déjà occupé par la carte Wifi 2,4 Ghz. Il faut donc retirer la carte et l’installer sur le port libre, et installer le SSD. Cela nécessite de démonter entièrement la carte mère, afin de démonter les entretoises et les remonter correctement.

une fois cela fait, on démarre le routeur et on le paramètre. On est sur du routeur OpenWrt classique, l’interface Luci est accessible sans problèmes. Sinon, le SSH et vi fonctionnent très, très bien 🙂

L’intérêt de ce genre de routeurs, c’est qu’il est possible d’utiliser d’autres modems que celui fourni par l’opérateur. Par contre, on perd une bonne partie du support, et je pense qu’il faut garder le modem/routeur opérateur pour tester en cas de dysfonctionnement. Ainsi, en plus du Turris Omnia, j’ai investi dans un modem DLink DSL-320B, qui, étant un vrai modem, permet de faire gérer l’adresse IP de mon abonnement Orange/sosh directement par le Turris Omnia. L’ado voulant accéder à ses serveurs Minecraft depuis chez sa mère, cela m’évite le cauchemar de la mise en place d’un double NAT, vu que je chaine deux routeurs.

Le paramétrage dans le Turris est simple, du moins quand on sait à peu près comment marche un routeur. Le paramétrage du DLink est très simple, l’assistant de configuration étant facile à suivre. Par contre, on est bien sur un modem … Donc il ne faut SURTOUT PAS oublier de paramétrer les logins et mot de passe de la connexion Orange dans le Turris. Ce n’est PAS comme une freebox ou, même en mode bridge, celle-ci envoi directement l’accès Internet au premier qui fait une requête DHCP sur un des ports réseaux … j’ai perdu 30 minutes dans l’histoire, ça aurait pu être pire.

Routage avancé

Ensuite, on paramètre l’accès 4G Free sur ce routeur. Utilisateur un Huawei E5272 (donc un routeur WIfi 4G avec un port USB), il faut installer aussi un petit module supplémentaire (kmod-usb-net-huawei-cdc-ncm) sur le routeur afin que celui-ci puisse reconnaitre le Huawei.

On envoi la route par défaut sur la 4G Free, ça permet de profiter du débit 4G (une bête case à cocher dans l’interface Luci). MAIS, les ados voulant toujours regarder Youtube, on souhaite pouvoir faire passer ces flux par l’accès ADSL. Cela nécessite un petit script :

#!/bin/bash
set -x
CURRENTROUTE=/tmp/currentroute
FUTUREROUTE=/mnt/log/futureroute
Orange_gateway=$( ifconfig -a pppoe-wan | grep inet | awk '{print $2}' | awk -F ':' '{print $2}')

# Generate the routes from google's DNS

dig @8.8.8.8 TXT _netblocks{,2,3}.google.com | tr ' ' '\n' | grep '^ip4:' | sed 's/ip4://'| sort > ${FUTUREROUTE}

diff ${CURRENTROUTE} ${FUTUREROUTE}

DIFFERENT=$?

if [ ${DIFFERENT} -gt 0 ]; then

# Flush the old routes

for route in $(cat ${CURRENTROUTE}) ; do
 ip route del ${route} via ${Orange_gateway}
 done

# Add the current ones

for route in $(cat ${FUTUREROUTE}) ; do
 ip route add ${route} via ${Orange_gateway}
 done

fi

mv ${FUTUREROUTE} ${CURRENTROUTE}

# Source routing to force a particuliar IP address to use the Orange ISP

ip rule add from 192.168.10.7/255.255.255.255 table 200
ip route add default via ${Orange_gateway} dev pppoe-wan table 200
ip route flush cache

 

Comme vous le notez, ce script est loin d’être parfait. Mais pour l’instant, il suffit à mon utilisation. Il est découpé en deux parties : le routage via Orange de Google (routage par destination) et le routage de certaines IP via Orange (routage par source).

une fois que le script est enregistré dans un chemin où il ne sera pas perdu (je l’ai mis sur le SSD pour ma part), on ajoute son lancement dans le fichier /etc/rc.local, afin de s’assurer qu’il est bien lancé à chaque reboot.

Containers

Déjà, un container, c’est quoi ? C’est un moyen d’isoler une application ou un système. Ce n’est pas réellement de la virtualisation au sens Vmware, Hyper-V, Xen ou que sais-je encore.

Le système « containarisé » tourne à côté de l’OS de son hôte, il est simplement cloisonné. C’est un jail Freebsd quoi.

Afin d’éviter de changer les fichiers de configuration de Turria (j’ai moyennement confiance dans leur processus de mise à jour qui me ferait sauter les changements), j’ai simplement créé un lien symbolique vers /mnt/lxc, qui contiendra tous mes containers.

L’interface de gestion de containers est bien faite, déployer un nouveau container n’est pas très compliqué.

Ensuite, le container s’administre comme un système tout à fait standard. Il faut bien penser à lui donner une adresse IP fixe si on ne veut pas galérer. Si vous avez un serveur DHCP sur votre réseau (Le turris, ou autre), le container prendra une adresse IP variable au démarrage, à vous ensuite de vous y connecter par SSH pour fixer sa configuration réseau.

Conclusion (temporaire)

En conclusion temporaire, le Turris Omnia est un très bon routeur, bien fini et rempli de fonctionnalités. Ceci dit, son firmware ne le met pas à la portée de n’importe qui, il est possible de faire énormément de choses avec mais il faut maitriser SSH et vi (ou nano, je ne suis pas sectaire). Et même pour les admins Unix/Linux chevronnés, il y’a quand même quelques spécificités, le répertoire /etc/config n’étant pas le moyen habituel de configurer une distribution Linux, quel qu’elle soit. L’avantage de l’Omnia est qu’il est basé sur de l’OpenWrt, distribution spécialisée qui dispose d’une énorme quantité de documentation. Il est donc aisé de faire à peu près tout ce qu’on veut sur le routeur.