Note

Remplacement de la SFR Box 7 Plus

Retour d'expérience sur le remplacement d'une SFR Box 7 Plus par un ONT externe, un PC OpenWrt et un point d'accès Xiaomi.

Cet article décrit le remplacement d’une SFR Box 7 Plus par un ONT7-SFU d’Altice, avec un PC portable x86 derrière et un routeur Xiaomi configuré en « Dump AP » pour le sans-fil.

Pourquoi ?

La box fonctionne bien, alors pourquoi vouloir la remplacer ?

La flexibilité.

Avoir le contrôle total de son réseau local permet de faire quasiment tout ce que l’on veut. Ce serait également pratique si la box pouvait servir de NAS en lui connectant quelques HDD ou SSD, et si l’on pouvait se connecter à son réseau local depuis n’importe où et avec n’importe quel appareil, non ?

C’est précisément mon cas. Je vais détailler le processus de communication avec l’ONT, la mise en place de la « box » de remplacement ainsi que celle de son point d’accès (AP, pour access point).

L’importance d’un ONT externe

Au départ, le réseau était organisé ainsi : SFR → Fibre → Box 7.

Pas d’ONT ? Si, il était intégré à la box.

Le principal problème venait de là : je n’avais aucun PC ni SBC (single-board computer) capable de recevoir directement une fibre.

Je disposais d’un ancien PC portable équipé d’un i3-5005U (2 cœurs / 4 threads) et de 8 Go de RAM, sans écran, récupéré auprès d’un ami, ainsi que d’un Xiaomi Redmi AC2100.

Je me suis renseigné sur les ONT SFR externes, utilisés dans la Box 7 non-Plus, et j’ai découvert l’ONT7-SFU d’Altice. Petit bémol : il est loué par SFR et impossible de convaincre le service client de remplacer ma box par l’ensemble ONT + box.

OwN iT

Et si des gens en vendaient sur eBay ? Eh bien oui, pour seulement 20 euros de plus !

Après réception, je devais trouver un moyen de communiquer avec lui. D’après ce que j’ai pu voir, il prend principalement en charge Telnet et SSH.

Il fallait maintenant trouver l’utilisateur et le mot de passe…

Je savais que la box communiquait avec l’ONT pour récupérer des informations sur l’état de la fibre, la température, etc. (ces informations étant accessibles via l’API de la box), donc la box devait forcément disposer des identifiants.

Après quelques recherches, j’ai trouvé un dump d’un ancien firmware de la Box 7. Les fichiers de la box contenaient bien les identifiants utilisés pour communiquer avec l’ONT via Telnet. Je ne publierai évidemment pas ces identifiants ici.

Pour me connecter en Telnet, je devais brancher directement mon ordinateur à l’arrière de l’ONT et lui attribuer une adresse IP fixe dans le sous-réseau 192.168.4.0/24 (255.255.255.0). J’ai choisi 192.168.4.100, puis lancé arp -a pour voir où se trouvait l’ONT sur le sous-réseau.

Une réponse a attiré mon attention : 192.168.4.254, à la fois en raison de son adresse IP et parce qu’elle était la seule à différer des autres réponses du réseau.

J’ai essayé de me connecter avec les identifiants et bingo, I’m in ! Du premier coup !

Comme c’était la première fois que j’utilisais Telnet, j’ai lancé quelques commandes pour me familiariser avec l’interface.

show gpon slid permet d’afficher le « mot de passe fibre », comme il est appelé dans l’interface web de la Box 7.

Et… c’était vierge, littéralement.

Le SLID s’affiche sous deux formats : hexadécimal et ASCII. En hexadécimal, il affichait 0x20202020202020, soit uniquement des espaces en ASCII. On aurait dit un ONT tombé du camion :)

J’ai donc tenté de le réécrire avec le mien. La commande set gpon slid ascii <mon_slid> permet de le faire et, après un redémarrage, mon SLID s’affichait correctement !

Aucune autre commande set n’existait, alors je me suis dit que je pouvais tester l’ONT sur ma fibre.

J’ai tout branché. Les LED sont passées par toutes les couleurs et deux d’entre elles sont restées orange pendant environ une minute… puis l’ONT s’est éteint.

Je l’ai laissé tranquille un moment, au cas où il reviendrait à la vie. J’ai bien fait : environ une minute plus tard, il s’est rallumé et, cette fois, toutes les LED étaient vertes. Ouf !

Remplacement de la box

J’avais déjà réalisé cette étape chez mes parents, ce qui m’a permis de la mettre rapidement en place.

Je me suis naturellement tourné vers OpenWrt, car je le connais très bien et parce que c’est l’un des meilleurs systèmes pour ce genre d’usage. De plus, mon point d’accès fonctionnerait lui aussi sous ce système, ce qui constituait une raison supplémentaire de l’utiliser.

Après avoir flashé le système d’exploitation sur une clé USB (une clé USB 2.0 suffit, puisque le système est entièrement chargé en RAM au démarrage), j’ai également installé deux SSD SATA de 1 To afin de les utiliser en RAID 1 avec mdadm, puis de mettre en place des partages SMB et DLNA/UPnP.

Le PC portable ne disposait naturellement que d’un seul port RJ45. Un adaptateur USB 3.0 vers RJ45 permet donc d’en ajouter un autre pour le LAN.

Voici ma configuration réseau (/etc/config/network) :

config interface 'loopback'
        option device 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fd1b:8136:589b::/48'
        option packet_steering '1'

config device
        option name 'br-lan'
        option type 'bridge'
        list ports 'eth0'

config interface 'lan'
        option device 'br-lan'
        option proto 'static'
        option ipaddr '192.168.1.1'
        option netmask '255.255.255.0'
        option ip6assign '60'
        list dns '1.1.1.1'
        list dns '1.0.0.1'

config interface 'wan'
        option device 'eth1'
        option proto 'dhcp'
        option vendorid 'neufbox_NB6V-XXXXXXXXXXXXX'
        option peerdns '0'
        list dns '1.1.1.1'
        list dns '1.0.0.1'

Tout d’abord, on active packet_steering afin de répartir la charge logicielle sur plusieurs cœurs, car en pleine charge un seul cœur n’est pas assez rapide pour le trafic WAN-LAN.

Ensuite, on affecte les ports RJ45 aux interfaces, ce qui permet de se connecter facilement en SSH à la machine. Jusqu’à présent, je virtualisais le système d’exploitation avec QEMU en utilisant la clé USB comme disque (merci QEMU de rendre cela possible !) : les modifications étaient donc directement appliquées à la clé. Cela m’a notamment permis de configurer le système et d’installer plusieurs paquets.

Enfin, le point le plus important, à mon avis : vendorid. Cette option permet de falsifier le vendor ID afin de faire passer la nouvelle box pour une box SFR auprès de l’ONT. D’après mes tests, la présence de neufbox dans le nom suffit pour qu’il accepte la box, mais j’ai préféré respecter le même modèle que celui utilisé par l’ancienne box.

Je démarre le PC portable et, après une minute, il obtient une adresse IP sur le WAN ! Super : j’ai officiellement accès à Internet et je peux envoyer des ping avec succès.

Dump AP

Que serait un réseau domestique sans Wi-Fi ? Cette partie était assez simple : j’avais déjà flashé mon Xiaomi avec OpenWrt grâce à l’exploit web. J’ai dû réinitialiser le routeur pour repartir d’une base propre, puis désactiver le DHCP puisque cette fonction est désormais déléguée au PC portable.

Mais pourquoi « Dump AP » ?

Tout simplement parce que le routeur se contente de récupérer le trafic sans fil et de le transmettre au PC. Il ne fait rien au niveau réseau : pas de pare-feu, pas de WAN-LAN, pas de transfert vers un autre sous-réseau, rien.

Son seul objectif est de diffuser un point d’accès en 5 GHz et en 2,4 GHz ; le reste du travail est délégué à la box. C’est très pratique, car en WAN-LAN le Xiaomi plafonne à environ 300 Mbit/s, tandis qu’avec cette configuration je peux saturer la connexion sans problème.

Conclusion

Très amusant. J’ai beaucoup appris sur le fonctionnement d’un ONT — davantage que sur celui d’une box, grâce à ce que j’avais déjà fait avec ce système — mais cela n’en reste pas moins excitant de voir les LED vertes s’allumer et un ping parvenir à passer !

Je tiens à remercier les forums de lafibre.info, qui m’ont beaucoup aidé à trouver ce que je cherchais, même si nombre d’informations essentielles y étaient « cachées ».

J’ai choisi de ne pas détailler la configuration SMB/DLNA, car je trouve cela hors sujet : elle ne diffère pas vraiment d’une configuration traditionnelle. L’environnement change, mais le fonctionnement reste globalement le même. Même chose pour Docker.

Il ne me reste plus qu’à appeler SFR pour leur demander de me passer en IPv4 Full Stack plutôt que de rester en CGNAT (en raison de la pénurie d’adresses IPv4), car je pense que c’est pour cette raison que mes ports ne sont pas joignables depuis l’extérieur.

Merci d’avoir pris le temps de lire mon aventure.