Remplacement de ma Livebox par un Turris Omnia sous Openwrt

Comment je m’y suis pris pour remplacer ma Livebox par un Turris Omnia – sans la télé, ni le téléphone.

Turris Omnia

Le Turris Omnia est livré préconfiguré avec un port internet requêtant en DHCP auprès du FAI et le reste des ports ainsi que les interfaces wifi en un pont (bridge) LAN. Son fonctionnement est très proche d’une box internet :

  • pas de flux entrant (ou plutôt au strict nécessaire),
  • une seule adresse IPv4, flux sortant en ‘ip masquerading’,
  • un prefix ipV6 avec les flux sortant sans translation,
  • Serveur DHCP ipv4 et ipv6 côté LAN,
  • Resolveur DNS.

La documentation montre le schéma ci-dessous où l’on voit que le port WAN est eth2

Câblage interne du Turris

En sortant le Turris de la boite, je me suis connecté en ethernet sur l’un des ports LAN pour configurer via l’interface web ReForis le mot de passe d’administration et changer le sous-réseau LAN, pour m’éviter un conflit avec celui de la livebox.

Une fois cela fait j’ai connecté le port WAN à un port de la LiveBox et réalisé les mises à jour. Je suis maintenant en 5.3.9. En cliquant sur ‘Advanced Administration’ j’ai configurer le mot de passe root (on en aura besoin pour se connecter en SSH) et atteindre l’interface Luci – celle d’openwrt.

Ressources internet

Les deux tutos que j’ai suivi Lafibe.info pour openwrt et Café αlpha dédié Turris m’ont grandement aidé, je vous invite à les lire avant de continuer. Vous trouverez d’autres ressources sur internet. Mais attention à la date, certains se rapportant à des versions antérieures vont même jusqu’à recompiler un client dhcp ou changer de package. Avec la version 5.3, je n’ai rien eu à faire de tout cela.

L’infrastructure d’Orange, ne semble pas uniforme sur tout le territoire. Suivant son lieu de connexion, elle est plus ou moins tatillonne.

Prise de trace réseau

L’objectif des configurations qui vont suivre consiste à reproduire le comportement de la Livebox vis à vis d’Orange. Par chance (?), j’ai une livebox 3 raccordée à la fibre au travers d’un ONT dont le port WAN est en RJ-45. Je vais pouvoir facilement prendre des traces des échanges avec l’infrastructure d’Orange en les faisant passer au travers du Turris.

Je sors deux ports du pont LAN du turris pour créer un second pont. Après avoir sauvegarder sa version d’origine, dans /etc/config/network, dans la section interface ‘lan’ je mets en commentaire les deux lignes list ifname ‘lan3’ et lan4 et j’ajoute une section ‘monpont’. comme ceci.

config interface 'lan'
    option force_link '1'
    option type 'bridge'
    option proto 'static'
    option netmask '255.255.255.0'
    option ip6assign '60'
    option ipaddr '192.168.2.1'
    list ifname 'lan0'
    list ifname 'lan1'
    list ifname 'lan2'
    #list ifname 'lan3'
    #list ifname 'lan4'

config interface 'monpont'
    option force_link '1'
    option type 'bridge'
    list ifname 'lan3'
    list ifname 'lan4'

Je recharge la conf avec service network restart. Le câblage est le suivant :

Mon PC est branché dans le port LAN0, l’accès vers internet sur le port LAN4 (et non le WAN) et je lance la commande :

tcpdump -i lan3 -w /tmp/livebox5.pcap

Maintenant, je branche la livebox sur le port lan3. Au bout de quelques secondes, j’arrête tcpdump avec un ctrl-c, je récupère avec sftp le fichier de capture sur mon PC et je l’ouvre avec Wireshark.

Cette capture m’a servi de référence pour la suite et je me suis efforcé de m’y rapprocher.

Là on note une particularité d’Orange. Le trafic internet circule sur le VLAN 832 et les échanges avec l’infrastructure sont marqués en priorité 6.

Deux trucs à relever servant d’identification/authentification auprès d’Orange

L’adresse MAC

Il s’agit d’un groupe de 6 Octets dont j’ai flouté les trois derniers ci-dessus. Il commence par a0:1b:29 signifiant Sagem.

L’identifiant Orange

Dans la littérature internet, l’identifiant Orange est fti/xxxxxxx. Je crois que le technicien qui est venu installer la fibre a ajouté un mot de passe, il est beaucoup plus long. Je l’ai récupéré dans la trace en fouillant dans le datagramme DHCP Discover, allongeant l’option 90, puis clic droit sur ‘authentification information’ copier… as HexStream. Il suffit de le mettre au chaud dans un fichier texte.

Configuration

Voici la configuration qui fonctionne chez moi, dans /etc/config/network pour les interface wan et lan (il faut conserver le reste). J’ai mis en gras les parties variables. Les options 90 en IPv4 et 11 en IPv6 sont les authentifiants. L’ adresse MAC apparaît à plusieurs endroits. Ici j’ai mis a0:1b:29:01:02:03. Cela s’est mis à fonctionner après avoir ajouté option reqprefix ’56:29010203‘ dans l’interface wan6 (la longeur du prefix suivi des 4 derniers octets de l’adresse Mac)

config interface 'lan'
        option type 'bridge'
        option proto 'static'
        option ip6assign '64' #60 => 64 
        option bridge_empty '1'
        option _turris_mode 'managed'
        list ipaddr '192.168.1.1/24'
        option ifname 'lan0 lan1 lan2 lan3 lan4'

config interface 'wan'
         option proto 'dhcp'
         option broadcast '1'
         option vendorid 'sagem'
         option reqopts '1 15 28 51 58 59 90'
         option sendopts '77:2b46535644534c5f6c697665626f782e496e7465726e65742e736f66746174686f6d652e4c697665626f7833 90:     00000000000000000000001a0900000558010341010d6674692fxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
         option macaddr 'a0:1b:29:01:02:03'
         option clientid '01a01b29010203'
         option ifname 'eth2.832'

config interface 'wan6'
         option proto 'dhcpv6'
         option noserverunicast '1'
         option reqaddress 'none'
         option defaultreqopts '0'
         option sendopts '11:                                                                                                             00000000000000000000001a0900000558010341010d6674692fxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 15:FSVDSL_livebox.Internet.softathome.livebox3 16:0000040e0005736167656d'
         option reqopts '11 17 23 24'
         option noclientfqdn '1'
         option noacceptreconfig '1'
         option macaddr 'a0:1b:29:01:02:03'
         option ifname 'eth2.832'
         option clientid '00030001a01b29010203'
         option reqprefix '56:29010203'

config device 'dev_wan'
        option name 'eth2.832'
        option macaddr 'a0:1b:29:01:02:03'

config device 'dev_wan6'
        option name 'eth2.832'
        option macaddr 'a0:1b:29:01:02:03'

Edit du 4 Mars 2023 : ajout des deux sections fixant l’adresse MAC

Comme indiqué dans les deux tutos, pour régler les priorités j’ai ajouté les règles suivantes à /etc/firewall.user

/usr/sbin/iptables -t mangle -A POSTROUTING -j CLASSIFY --set-class 0000:0001 ## En gros tout le flux sortant passe dans la file 1 qui est en prio 0
/usr/sbin/iptables -t mangle -A POSTROUTING -p icmp -j CLASSIFY --set-class 0000:0006 ##On passe le flux icmp dans la file 6 qui est en prio 6
/usr/sbin/iptables -t mangle -A POSTROUTING -p igmp -j CLASSIFY --set-class 0000:0006 ## On passe le flux igmp (celui qui part vers eth2.832) dans la file 6 qui est en prio 6
/usr/sbin/iptables -t mangle -A POSTROUTING -o eth2.832 -p udp --dport 67 -j CLASSIFY --set-class 0000:0006 ## On passe le flux dhcp dans la file 6 qui est en prio 6, necessaire pour le DHCP Renew

#la même chose en ipv6 (avec cette fois le dhcpv6)
/usr/sbin/ip6tables -t mangle -A POSTROUTING -j CLASSIFY --set-class 0000:0001
/usr/sbin/ip6tables -t mangle -A POSTROUTING -p ipv6-icmp -j CLASSIFY --set-class 0000:0006
/usr/sbin/ip6tables -t mangle -A POSTROUTING -p udp --dport 547 -j CLASSIFY --set-class 0000:0006

J’ai créé un fichier : /etc/hotplug.d/iface/05-vlanprio.sh et l’ai rendu exécutable par un chmod +x 05-vlanprio.sh

#!/bin/sh
set -x
for i in 0 1 2 3 4 5 6 7; do
    /sbin/ip link set eth2.832 type vlan egress $i:$i >/dev/null  ## Chaque file devient en priorité $numdefile
    #/sbin/ip link set eth2.840 type vlan egress $i:5 >/dev/null   ## tout en prio 5 sur le vlan 840

done
    /sbin/ip link set eth2.832 type vlan egress 1:0 >/dev/null    ## La file (1) était donc en prio 1 on la repasse à 0, ça deviendra (via IPTABLES) la nouvelle file par défaut.
    /sbin/ip link set eth2.832 type vlan egress 0:6 >/dev/null    ## Tout le flux devient en prio 6 ! sauf le flux qui passera par IPTABLES (donc juste nos requêtes dhcp)

Je pense ne rien avoir oublié. Après on branche le port WAN du Turris sur l’ONT en lieu et place de la Livebox. Comme cela n’a pas fonctionné du premier coup, j’ai pris des traces réseau.

tcpdump -i eth2 -w /tmp/turris.pcap

Et après avoir récupéré le fichier sur mon PC, j’ai joué au jeu des 7 erreurs avec la trace de la Livebox.

À vous de jouer.

Edit du 3 novembre 2022 : mon turris est maintenant en version 6, il fonctionne toujours avec cette configuration.

Une réponse sur “Remplacement de ma Livebox par un Turris Omnia sous Openwrt”

  1. Merci beaucoup !
    Je viens de virer ma livebox, j’ai la fibre qui arrive directement sur ma turris, et ton tuto m’a été d’une GRANDE aide !

    Deux petites choses en plus:
    – ne pouvant pas faire de man-in-the-middle, j’ai dû utiliser l’identifiant + mot de passe, avec un script pour calculer le paquet DHCP: https://lafibre.info/remplacer-livebox/durcissement-du-controle-de-loption-9011-et-de-la-conformite-protocolaire/
    – et j’ai du bidouiller la configuration de mon ONU: https://lafibre.info/remplacer-livebox/guide-de-connexion-fibre-directement-sur-un-routeur-voire-meme-en-2gbps/msg1037271/?topicseen#msg1037271

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *