Remplacer sa box SFR par un routeur pfSense
Document toujours en cours d’écriture, un peu de patience!
Ce document à pour but d’expliquer la procédure permettant le remplacement d’une box SFR NVB6AC (fibre FTTH) par un routeur pfSense. Ce document est à but éducatif uniquement et ne vous incite aucunement à rendre votre matériel à SFR.
Si vous effectuez ces manipulations sur l’installation de votre domicile, le service client SFR sera certainement dans l’impossibilité de vous dépanner. Je décline l’entière responsabilité des possibles dommages causés à votre ligne, installation, et matériel. À vos risques et périls !
Préambule
Il est nécessaire de posséder au moins deux interfaces réseau sur la machine où sera installée le pfSense. Il est à noter qu’il est aussi possible d’utiliser d’autres OS que pfSense, si vous êtes à l’aise, n’hésitez pas à porter la config. N’hésitez pas à me contacter par email pour l’intégrer à ce tutoriel.
Si la TV ne vous intéresse pas (pas de support IGMP Proxy ni de Multicast Routing sur le kernel), un tutoriel est disponible pour l’Ubiquiti UniFi Dream Machine Pro (UDM-PRO).
Tout au long de ce tutoriel, il sera fait référence à plusieurs variables (modifiez ces variables pour refléter votre réseau, sans cela, rien ne fonctionnera). J’utiliserai donc:
192.168.1.0/24
comme subnet côté LAN pfSense (avec 192.168.1.1 comme gateway)igb0
sera l’interface WAN (adaptateur fibre) côté pfSenseigb1
sera l’interface LAN (réseau local) côté pfSense
Attention : Pour accéder aux services TV, il est nécessaire de récupérer des fichiers de configuration sur la box (voir TV - Étape 1 ci-dessous). Il est nécessaire de compléter cette opération avant de continuer.
Internet (IP, DHCP)
C’est plutôt simple, vous verrez.
Étape 1 : On débranche, et on rebranche!
- Déconnectez la box SFR, débranchez l’ONT éléctriquement.
- Branchez le port ethernet de l’ONT (vérifiez aussi que la fibre y est bien branchée…) sur le port WAN de votre pfSense.
- Reconnectez l’alimentation éléctrique de l’ONT
Étape 2 : Configurer le DHCP côté pfSense
Pour obtenir une adresse IP, il est nécessaire de spécifier l’Option 60 (vendor-class-identifier) lors du DHCPREQUEST
.
Pour cela, dirigez-vous vers l’interface de configuration de pfSense, puis allez dans “Interfaces > WAN“. Renseignez ensuite le paramètre Send options
avec la valeur suivante :
1 | dhcp-class-identifier "neufbox6" |
C’est tout. Sauvegardez et appliquez la conf.
Téléphone (VoIP, SIP, Asterisk)
C’est là que tout se corse. Au boulot!
Étape 1 : Récupérer vos identifiants VoIP
Après avoir connecté internet (avec la box SFR ça ne fonctionnera pas), suivez l’excellent guide de Florent Daignière (merci à lui d’avoir développé ce magnifique petit outil) : https://florent.daigniere.com/posts/2019/04/extracting-voip-credentials-from-my-broadband-router/
Étape 2 : Configurer un serveur VoIP Asterisk
Je pars du principe que vous avez trouvé un moyen de compiler et démarrer un serveur Asterisk (version 16.6.0, problèmes de compatibilité avec des versions antérieures, mauvais support de chan_sip dans des versions plus récents). Il peut tourner sur une Raspberry (~40€) sur votre LAN.
Voici les fichiers de configuration à utiliser (copiez-collez, modifiez les variables) :
Configuration générale, enregistrement trunk SFR : sip.conf
1 | test |
Configuration de vos téléphones physiques : users.conf
1 | test |
Configuration des routes : extensions.conf
1 | test |
Redémarrez Asterisk :
1 | sudo systemctl restart asterisk |
Étape 3 : Configurez votre téléphone physique
Plusieurs choix s’offrent à vous, la configuration suit les mêmes principes peu importe l’option choisie.
- Si vous voulez gardez votre combiné filaire/sans fil, vous pouvez acheter un Cisco SPA112, il fera le lien entre votre téléphone et le serveur Asterisk.
- Acheter un téléphone VoIP (de bonnes occasions peu chères (20€ ~) sont disponibles sur eBay).
Pour l’exemple, j’utilise un téléphone VoIP Cisco SPA525G. L’interface de configuration est quasi-identique à celle du SPA112.
TV (IPTV, Multicast, IGMP)
Pour les puristes qui veulent profiter du décodeur TV et des rares chaines du câble disponibles chez SFR, il y a un peu plus de travail.
Attention : Si vous souhaitez brancher plusieurs appareils sur votre réseau, il faudra un switch manageable capable d’IGMP Snooping, sinon dites aurevoir à votre débit. Si vous avez plusieurs interfaces réseau disponibles, vous pouvez créer un bridge entre deux interfaces et utiliser la fonction d’IGMP Snooping de pfSense. Vous pourrez ensuite brancher un dumb switch sur l’une des deux interfaces.
Étape 1 : Récupérer les fichiers de configuration de la box
Pour que le décodeur TV fonctionne correctement, il est nécessaire de récupérer des fichiers de configuration sur votre box.
1 | http://ip-neufbox/api/1.0/?method=system.getInfo |
Note : Remplacez
ip-neufbox
par l’adresse IP locale de votre box SFR. Le plus souvent, ce sera 192.168.1.1 ou 192.168.0.1, sauf si vous l’avez changé volontairement (en modifiant l’HTML de la page avant la validation du formulaire, c’est possible sur certains modèles).Le décodeur TV ira chercher ces fichiers de configuration sur l’IP de la passerelle réseau, si vous souhaitez utiliser une plage d’IP différente, veillez à ce qu’un serveur HTTP répondant à ces requêtes (ou un reverse proxy) soit configuré sur cette adresse IP.
Pour référence, vous trouverez des fichiers de configuration d’exemple ci-dessous (remplacez vos adresses MAC et plages d’IP à votre convenance):
system.getInfo, wan.getInfo, ftth.getInfo, tv.getInfo, usb.getInfo, lan.getHostsList, lan.getInfo
Étape 2 : Servir les fichiers de configuration
Étape 2.1 : Servir les requêtes
Utilisez la même Raspberry Pi que vous avez utilisé pour faire tourner Asterisk. Installez le serveur web Nginx.
Éditez /etc/nginx/sites-available/default
, pour refléter cette conf :
1 | server { |
Redémarrez Nginx et activez son démarrage au boot :
1 | sudo systemctl enable nginx && sudo systemctl restart nginx |
Étape 2.2 : Rediriger les requêtes
Comme dit précédemment, le décodeur TV ira chercher les fichiers de configuration sur l’IP de la gateway sur le LAN. Il faut donc configurer pfSense pour qu’il redirige ces requêtes vers la Raspberry Pi.
Étape 2.2.1 : Changement de port HTTP par défaut
pfSense écoute le port 80 par défaut, il faut changer son port d’écoute par défaut dans “System > Advanced“, cocher HTTP, puis spécifier un autre port (8088 par exemple). Appliquer la conf, puis connectez vous sur l’interface avec ce nouveau port.
Étape 2.2.1 : Configuration de HAProxy
Dans “System > Packages > Available“, cherchez HAProxy
et installez-le.
Étape 3 : Activer le proxy IGMP (IGMPProxy)
Pour que les trames Multicast soient correctement forwardées entre le WAN et le décodeur TV, il est nécessaire de configurer un proxy IGMP sur le pfSense. Sans cela, pas de flux vidéo.
Etape 3.1 : Configurer le service IGMPProxy
Dans l’interface de configuration pfSense, aller dans Diagnostics > Edit file. Puis éditez /etc/inc/services.inc
.
Dans la fonction services_igmpproxy_configure
, cherchez la ligne spécifiant le chemin du fichier de configuration chargé au démarrage d’IGMP Proxy dans mon cas, lignes 1838 et 1840.
Modifiez la ligne 1838 contenant:
1 | mwexec_bg("/usr/local/sbin/igmpproxy -v {$g['varetc_path']}/igmpproxy.conf"); |
Par :
1 | mwexec_bg("/usr/local/sbin/igmpproxy -v /etc/igmpproxy.conf"); |
Modifiez la ligne 1840 contenant :
1 | mwexec_bg("/usr/local/sbin/igmpproxy {$g['varetc_path']}/igmpproxy.conf"); |
Par :
1 | mwexec_bg("/usr/local/sbin/igmpproxy /etc/igmpproxy.conf"); |
Cela va nous permettre de charger un fichier de configuration personnalisé. Il est nécessaire de charger un fichier généré manuellement, car la génération via l’interface ne détecte pas les bonnes interfaces (dans mon cas).
Etape 3.2 : Configurer IGMPProxy
Toujours dans l’interface de configuration pfSense, aller dans Diagnostics > Edit file. Puis éditez /etc/igmpproxy.conf
. Copiez-collez le code suivant, puis sauvegardez.
1 | # |
Étape 3.3 : Activer IGMPProxy
Toujours dans l’interface de configuration pfSense, aller dans Services > IGMP Proxy, cochez Enabled
puis sauvegardez.
Étape 4 : Configurer le firewall pour accepter le Multicast
Jessy SOBREIRO <jessy.sobreiro@epitech.eu) aka. jess-sys
10 août 2020