Auteur Sujet: [TUTO][FTTH] Remplacement NB6VAC par routeur pfSense + MultiWAN + IPv6 + TV  (Lu 3027 fois)

0 Membres et 1 Invité sur ce sujet

fl0w

  • Professionnel des télécoms
  • Abonné RED by SFR fibre FttH
  • *
  • Messages: 823
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:
  • igc0: LAN
  • igc1: FTTH
  • igc2: FTTLA

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:
  • FTTH: igc1
  • LAN: igc0
  • FTTLA: igc2
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:
  • /usr/local/etc/dhcp4c_wan_custom.conf:
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";
}
  • /usr/local/etc/dhcp6c_wan_custom.conf:
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:
    • Group name: Failover
    • Gateway priority: FTTH_DHCP, Tier 1, Interface address
                                FTTLA_DHCP, Tier 2, Interface address
    • Trigger Level: Member Down
    • Description: Failover group
    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:
    • Command: service lighttpd start
    • Shellcmd Type: shellcmd
    • Description: Lighttpd

    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.
    « Modifié: 23 janvier 2023 à 17:17:50 par fl0w »

    -Richard-

    • Abonné Orange Fibre
    • *
    • Messages: 65
    • Colmar (68)
    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 !

    fl0w

    • Professionnel des télécoms
    • Abonné RED by SFR fibre FttH
    • *
    • Messages: 823
    Tu as bien mis les "Allow IP options" sur les règles de filtrage?

    -Richard-

    • Abonné Orange Fibre
    • *
    • Messages: 65
    • Colmar (68)
    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.

    -Richard-

    • Abonné Orange Fibre
    • *
    • Messages: 65
    • Colmar (68)
    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

    -Richard-

    • Abonné Orange Fibre
    • *
    • Messages: 65
    • Colmar (68)
    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

    -Richard-

    • Abonné Orange Fibre
    • *
    • Messages: 65
    • Colmar (68)
    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.