La Fibre

Datacenter et équipements réseaux => Routeurs => SFR Remplacer la box SFR par un routeur => Discussion démarrée par: fl0w le 23 janvier 2023 à 12:44:59

Titre: [TUTO][FTTH] Remplacement NB6VAC par routeur pfSense + MultiWAN + IPv6 + TV
Posté par: fl0w le 23 janvier 2023 à 12:44:59
Bonjour à tous,

Voici un tuto de remplacement de la box SFR NB6VAC par pfSense. Ce tuto est insipiré de celui de Darkodo, à la différence que ce tuto permet d'avoir la TV fonctionnelle, n'aborde pas la partie téléphonie, et permet la configuration d'un failover avec 2 interfaces WAN (dans mon cas FTTH + FTTLA).

Petite clarification sur l'attribution des interfaces dans mon cas:

Réalisé sous pfSense 2.6.0

Modification de l'utilitaire dhcp6c:
Il est nécessaire de remplacer le binaire dhcp6c pour prendre en charge l'envoi de "raw-option"
Se connecter en SSH/Console à pfSense et lancer ces commandes:
# mv /usr/local/sbin/dhcp6c /usr/local/sbin/dhcp6c.bak
# curl https://wiki.virtit.fr/lib/exe/fetch.php/kb:linux:pfsense:dhcp6c -o /usr/local/sbin/dhcp6c.new
# chmod +x /usr/local/sbin/dhcp6c.new
# ln -s /usr/local/sbin/dhcp6c /usr/local/sbin/dhcp6c.new

Modification du DHCP6 DUID:
Aller dans System > Advanced > Networking et changer la valeur de DHCP6 DUID à DUID-LL
Compléter aussi DUID-LL avec la valeur de l'adresse MAC de la box (marquée sur la box et sur sa boite) qu'on incrémente de 1 (donc MAC + 1)

Configuration des interfaces:
Aller dans Interfaces > Assignements et assigner les interfaces comme suit:
Aller ensuite dans Interfaces > FTTH et configurer comme suit:
Citer
General Configuration
- Enable: yes
- Description: FTTH
- IPv4 Configuration Type: DHCP
- IPv6 Configuration Type: DHCP6
- MAC Address: La MAC de la box
- MTU: vide
- MSS: vide
- Speed and Duplex: Default
DHCP Client Configuration
- Options: cocher uniquement "Configuration Override"
- Configuration File Override: /usr/local/etc/dhcp4c_wan_custom.conf
DHCP6 Client Configuration
- Options: d'abord ne cocher que "Advanced Configuration" et paramétrer comme suit:
- Use IPv4 connectivity as parent interface: no
- Request only an IPv6 prefix: no
- DHCPv6 Prefix Delegation size: 64
- Send IPv6 prefix hint: no
- Debug: no
- Do not wait for a RA: yes
- Do not allow PD/Address release: no
Advanced DHCP6 Client Configuration
- Information only: no
- Send options: ia-pd 1, raw-option 16 00:00:a0:0c:00:40:6e:65:75:66:62:6f:78:5f:4e:42:36:56:41:43:2d:46:58:43 (c'est une valeur générique mais fonctionnelle)
- Request Options: domain-name-servers, domain-name
- Scripts: vide
- Identity Association Statement Non-Temporary Address Allocation: no
- Identity Association Statement Prefix Delegation: yes, id-assoc pd ID = 1, IPv6 prefix = ::/0
- Prefix interface statement sla-len = 8
- Prefix Interface: FTTH
Reserved Networks
- Block private networks and loopback addresses: yes
- Block bogon networks: yes
Remonter ensuite à DHCP6 Client Configuration et cocher Configuration Override, compléter Configuration File Override avec la valeur "/usr/local/etc/dhcp6c_wan_custom.conf".
Ne pas sauvegarder tout de suite et créer les fichiers suivants en SSH/Console:
interface "igc1" {
        supersede interface-mtu 0;
        send host-name "";
        send dhcp-class-identifier "neufbox_NB6VAC-FXC";
        request subnet-mask, routers, domain-name-servers, host-name, merit-dump, domain-name, root-path, broadcast-address, nis-domain, ntp-servers;
        require subnet-mask, routers, merit-dump, nis-domain, domain-name-servers;
        script "/usr/local/sbin/pfSense-dhclient-script";
}
interface igc1 {
        send raw-option 16 00:00:a0:0c:00:40:6e:65:75:66:62:6f:78:5f:4e:42:36:56:41:43:2d:46:58:43;
        send ia-pd 1;
        request domain-name-servers;
        script "/var/etc/dhcp6c_wan_dhcp6withoutra_script.sh";
};
id-assoc pd 1{
        prefix ::/00 0 0;
        prefix-interface igc0{
                sla-id 10;
                sla-len 8;
        };
};

Maintenant on peut sauvegarder la configuration de l'interface. On passe ensuite à FTTLA:
Citer
General Configuration
- Enable: yes
- Description: FTTLA
- IPv4 Configuration Type: DHCP
- IPv6 Configuration Type: None
- MAC Address: vide
- MTU: vide
- MSS: vide
- Speed and Duplex: Default
DHCP Client Configuration
- Tout laisser par défaut
Reserved Networks
- Block private networks and loopback addresses: yes
- Block bogon networks: yes

Configuration du firewall et NAT
Aller dans Firewall > NAT > Outbound et choisir le Outbound NAT Mode en Hybrid Outbound NAT rule generation.
Aller dans Firewall > Rules > FTTH et créer les règles suivantes:
ProtocolSourcePortDestinationPortGatewayQueueDescriptionOptions
IPv6 UDP***546-547*noneAllow DHCPv6 RequestsNone
IPv4 IGMP**224.0.0.0/4**noneAllow IGMP Multicast TrafficAllow IP options
IPv4 PIM**224.0.0.0/4**noneAllow PIM Multicast TrafficAllow IP options
IPv4 UDP**224.0.0.0/4**noneAllow UDPMulticast TrafficAllow IP options
IPv4 TCP****1287-1290noneAllow additional ports for STBAllow IP options
Aller dans Firewall > Rules > LAN et éditer la règle "Default allow LAN to any rule", aller dans Advanced Options et cocher "Allow IP options"

Configuration du proxy IGMP
Aller dans Services > IGMP Proxy et créer 2 IGMP proxies:
InterfaceDescriptionTypeThresholdNetworks
FTTHFTTH_UPUpstream Interface10.0.0.0/0
LANFTTH_DOWNDownstream Interface10.0.0.0/0

Configuration du MultiWAN
Pour cela, on doit déjà configurer un serveur DNS par interface, on va utiliser le DNS SFR pour le FTTH et le DNS Numericable pour le FTTLA. Aller dans System > General Setup et n'avoir que les DNS suivants dans DNS Server Settings:
89.2.0.1 rattaché à FTTLA_DHCP
109.0.66.10 rattaché à FTTH_DHCP
Configurons le multiWAN en allant dans System > Routing > Gateways:
Editer FTTH_DHCP et s'assurer que Gateway Monitoring et Gateway Action sont décochés, et que Monitor IP est paramétré à 109.0.66.10
Editer FTTLA_DHCP et s'assurer que Gateway Monitoring et Gateway Action sont décochés, et que Monitor IP est paramétré à 89.2.0.1
Aller dans l'onglet Gateway Groups et cliquer sur Add:
On valide et le multiWAN en mode failover (priorité sur le FTTH) devrait être fonctionnel.

Configuration du serveur web pour héberger les pages nécessaires aux décodeurs
Aller dans System > Advanced et dans webConfigurator cocher Protocol "HTTPS", TCP port "443" et cocher "Disable webConfigurator redirect rule" pour WebGUI redirect, puis sauvegarder.
En SSH/Console, lancer la commande suivante:
pkg install lighttpdOn va ensuite configurer le service:
cd /usr/local/etc/lighttpd/On vérifie qu'il y a bien un fichier lighttpd.conf.sample dans le dossier, au cas où. Puis on édite lighttpd.conf pour avoir uniquement le contenu suivant:
Citer
server.modules = (
        "mod_access",
        "mod_alias",
        "mod_redirect",
        "mod_rewrite"
)
server.document-root    = "/var/www"
server.upload-dirs      = ( "/tmp" )
server.errorlog         = "/var/log/lighttpd/error.log"
server.pid-file         = "/var/run/lighttpd.pid"
server.username         = "www"
server.groupname        = "www"
server.tag              = "lighttpd"
index-file.names        = ( "index.php" )
url.access-deny         = ( "~", ".inc" )
static-file.exclude-extensions = ( ".php" )
server.dir-listing      = "disable"
include "conf.d/mime.conf"
server.port = 80
$HTTP["scheme"] == "http" {
        $HTTP["url"] =~ "^(/api/1.0/.*)" {
                url.rewrite-once = ( "/?method=(.*)$" => "/api/1.0/$1.xml")
        }
}
On s'assure que le dossier /var/www existe, et on crée l'arborescence:
mkdir -p /var/www/api/1.0/
cd /var/www/api/1.0/
On doit retrouver les fichiers suivants, à récupérer depuis la box SFR avec les URL associées:
FichierURL
system.getInfo.xmlhttp://192.168.1.1/api/1.0/?method=system.getInfo
ftth.getInfo.xmlhttp://192.168.1.1/api/1.0/?method=ftth.getInfo
wan.getInfo.xmlhttp://192.168.1.1/api/1.0/?method=wan.getInfo
lan.getHostsList.xmlhttp://192.168.1.1/api/1.0/?method=lan.getHostsList
tv.getInfo.xmlhttp://192.168.1.1/api/1.0/?method=tv.getInfo
usb.getInfo.xmlhttp://192.168.1.1/api/1.0/?method=usb.getInfo
A noter que pour ma part j'ai édité le fichier lan.getHostsList.xml pour avoir le contenu suivant:
<rsp stat="ok" version="1.0">
<host type="stb" name="STB7" ip="<IP LAN du décodeur>" mac="<MAC du décodeur>" iface="lan1" probe="60" alive="2843" status="online"/>
</rsp>
Et j'ai créé une réservation d'IP dans Services > DHCP Server > LAN > DHCP Static Mappings for this Interface
Enfin créer le fichier index.php qui contient ceci:
<?php
header
(&#39;Content-Type: application/xml; charset=utf-8&#39;);
if (isset($_GET[&#39;method&#39;])){
        
$method $_GET[&#39;method&#39;];
        
switch ($method) {
                case 
"system.getInfo":
                        echo 
file_get_contents(&#39;system.getInfo.xml&#39;);
                        
break;
                case &
#39;lan.getHostsList&#39;:
                        
echo file_get_contents(&#39;lan.getHostsList.xml&#39;);
                        
break;
                case &
#39;wan.getInfo&#39;:
                        
echo file_get_contents(&#39;wan.getInfo.xml&#39;);
                        
break;
                case &
#39;ftth.getInfo&#39;:
                        
echo file_get_contents(&#39;ftth.getInfo.xml&#39;);
                        
break;
                case &
#39;usb.getInfo&#39;:
                        
echo file_get_contents(&#39;usb.getInfo.xml&#39;);
                        
break;
                case &
#39;tv.getInfo&#39;:
                        
echo file_get_contents(&#39;tv.getInfo.xml&#39;);
                        
break;
        }
        return;
}
?>
On teste que tout fonctionne en lançant la commande:
/usr/local/sbin/lighttpd -Df /usr/local/etc/lighttpd/lighttpd.confEt on tente d'accéder aux pages avec les URLs citées plus haut. Si tout fonctionne, on ajoute le service lighttpd au démarrage, pour cela System > Package Manager > Available Packages et rechercher "Shellcmd", l'installer.
Aller ensuite dans Services > Shellcmd et cliquer sur Add:

Pour terminer on peut redémarrer la box, pour s'assurer que tout marche.

Par la suite j'ajouterai aussi du MultiWAN avec triple connexion (FTTH, FTTB et LTE) en utilisant un modem M.2 Fibocom L850-GL (chipset Intel XMM 7360 LTE), j'attends de recevoir une partie du matériel manquant.
Titre: [TUTO][FTTH] Remplacement NB6VAC par routeur pfSense + MultiWAN + IPv6 + TV
Posté par: -Richard- le 10 juin 2023 à 09:13:21
Bonjour fl0w, merci pour ce tuto très bien détaillé !

Bon point : j'ai déjà réussi à avoir internet sur un client PC branché sur le port LAN du routeur pfSense. Par contre 2 problèmes pour le moment :

- mon routeur ORBI configuré en mode point d'accès n'arrive pas à obtenir une connexion internet
- écran noir sur le décodeur TV

Les différentes étapes ont été suivies à la lettre, à part la partie Multiwan. Seule différence notable : j'ai un réseau en 10.0.0.x, mais j'ai bien accès aux pages du serveur lighttpd.

Je pense être sur la bonne voie, mais dur dur de faire des tests lorsque sa femme a besoin d'internet sur sa tablette ou son PC et que les enfants veulent voir la TV...

Je vous tiens au courant !
Titre: [TUTO][FTTH] Remplacement NB6VAC par routeur pfSense + MultiWAN + IPv6 + TV
Posté par: fl0w le 12 juin 2023 à 08:39:47
Tu as bien mis les "Allow IP options" sur les règles de filtrage?
Titre: [TUTO][FTTH] Remplacement NB6VAC par routeur pfSense + MultiWAN + IPv6 + TV
Posté par: -Richard- le 14 juin 2023 à 22:33:22
Oui oui ça c'est fait.

J'ai sauté la partie multiwan, mais je m'aperçois que tu as configuré des DNS propres a SFR, ce que je n'ai pas fait.

Je vais revoir tout ça demain.
Titre: [TUTO][FTTH] Remplacement NB6VAC par routeur pfSense + MultiWAN + IPv6 + TV
Posté par: -Richard- le 15 juin 2023 à 09:28:59
Alors mon serveur DHCP ne fonctionne pas correctement.

Sur un PC connecté au LAN de pfsense, impossible d'avoir internet ou même accès aux autres machines. Si par contre je configure la connexion en manuel :

IP 10.0.0.5
Masque de sous réseau : 255.255.255.0
passerelle : 10.0.0.1

DNS : 1.1.1.1

J'ai bien accès au réseau et à internet
Titre: [TUTO][FTTH] Remplacement NB6VAC par routeur pfSense + MultiWAN + IPv6 + TV
Posté par: -Richard- le 15 juin 2023 à 11:47:18
J'ai du reconfigurer ma VM et j'ai maintenant un message d'erreur en voulant lancer lighttpd :

2023-06-15 11:43:49: (network.c.419) can't bind to socket: 0.0.0.0:80: Address already in use
Titre: [TUTO][FTTH] Remplacement NB6VAC par routeur pfSense + MultiWAN + IPv6 + TV
Posté par: -Richard- le 15 juin 2023 à 12:52:36
J'avance doucement...

J'ai proxmox et 2 VM : Windows + pfsense.

Ma VM Windows obtient bien une config DHCP, c'est sur le port LAN physique que je dois entrer les infos manuellement.

Mon problème est plutôt lié à Proxmox.