Auteur Sujet: Bbox remplacée par OPNsense  (Lu 1700 fois)

0 Membres et 1 Invité sur ce sujet

Olivier34

  • Abonné Bbox fibre
  • *
  • Messages: 9
  • Monptellier (34)
Bbox remplacée par OPNsense
« le: 08 mars 2025 à 11:55:13 »
Bonjour,
Après avoir eu quelques difficultés, que j'ai pu résoudre avec le site. Je vous partage ma configuration d'OPNSense.
Quelques remarques :
  • IPv4, IPv6 et la TV fonctionne
  • OPNsense tourne dans une VM qui est sous Proxmox
  • j'ai choisi de renseigner l'adresse MAC de la Bbox.
  • j'ai une offre fibre classique avec ONT externe

Etape optionnelle - Création de la VM sous Proxmox
Lors de la création de la VM, les points d'attentions sont :
  • Fenêtre OS, mettre Other pour le type du Guest OS
  • Fenêtre Network, j'ai mis le type "VirtIO (paravirtualized)" car avec la valeur par défaut (E1000 il me semble) j'avais des débits ridicules.
Une fois la machine créée, il faut rajouter une autre interface Ethernet. J'ai choisi de renseigner la MAC de la Bbox directement ici, sinon c'est aussi possible plus tard sous OPNsense.

Etape 1 - Configuration du VLAN et des interfaces
Dans Interfaces: Devices: VLAN, créer un nouveau VLAN avec les paramètres suivants :
  • Device : vlan01.100 (par exemple)
  • Parent : l'interface réseau cotée WAN, vtnet1 chez moi
  • VLAN tag : 100
  • VLAN priority : Best Effort (0, default)
Dans Interfaces: Assignments, puis assigner l'interface WAN au VLAN créé précédemment.

Etape optionnelle - Modification de l'adresse MAC
Si vous souhaiter utiliser l'adresse MAC de la Bbox et que vous n'avez pas pu le faire précédemment.
Dans Interfaces: Assignments, il faut créer une nouvelle interface et l'assigner à la carte réseau qui sert pour le WAN (c'est le cas de mon interface "NotUsed")
Dans Interfaces: [NotUsed] :
  • Cocher la case pour activer l'interface
  • IPv4 Configuration Type : None
  • IPv6 Configuration Type : None
  • MAC address : l'adresse MAC de la Bbox xx:xx:xx:xx:xx:xx

Etape 2 - Activation IPv6
Dans Interfaces: Settings
  • Cocher la case Allow IPv6
  • DHCP Unique Identifier, mettre 00:03:00:01:xx:xx:xx:xx:xx:xx où xx:xx:xx:xx:xx:xx est l'adresse MAC de la Bbox

Etape 3 - Configuration du WAN
Dans Interfaces: [WAN] :
  • Cocher la case pour activer l'interface
  • Décocher la case Block bogon network (nécessaire pour la TV)
  • IPv4 Configuration Type : DHCP pour avoir l'IPv4 sinon None
  • IPv6 Configuration Type : DHCPv6 pour avoir l'IPv6 sinon None

Etape 3a - Configuration du WAN - IPv4
Dans Interfaces: [WAN] puis DHCP client configuration
  • Configuration Mode : Advanced
  • Use VLAN priority : Internetwtok Control (6)
  • Lease Requirements, Send Options : dhcp-class-identifier "BYGTELIAD",  host-name ""
  • Lease Requirements, Request Options : subnet-mask, broadcast-address, routers, dhcp-lease-time, dhcp-renewal-time, dhcp-rebinding-time, domain-name, host-name, domain-name-servers, ntp-servers, www-server
Pour les Request Options, j'ai choisi de mettre ce que j'avais pu capturer sur les trames envoyées par la Bbox même si ce n'est à priori pas nécessaire.

Etape 3b - Configuration du WAN - IPv6
Dans Interfaces: [WAN] puis DHCPv6 client configuration
  • Use VLAN priority : Internetwtok Control (6)
  • Configuration Mode : Advanced
  • Interface Statement, Send Options: ia-pd 1, raw-option 6 00:1f:00:17
  • Identity Association, cocher la case Prefix Delegation
  • Identity Association, id-assoc pd ID : 1
  • Prefix Interface : 4, je ne me souviens plus si c'est nécessaire ou non
A la place de 1 pour ia-pd, si vous souhaiter faire comme la Bbox, il faut mettre les 4 derniers octets de l'adresse MAC de la Bbox. Par exemple si l'adresse MAC est xx:xx:ab:cd:ef:12, il faut renseigner 2882400018 au niveau des 2 champs ia-pd (dans Interface Statement, Send Options et dans Identity Association, id-assoc pd ID).

Etape 4 - Configuration du LAN
Dans Interfaces: [LAN] :
  • Cocher la case pour activer l'interface
  • IPv4 Configuration Type : Static IPv4
  • IPv6 Configuration Type : Track interface

Normalement, l'IPv4 et l'IPv6 sont fonctionelles.
Note : Mon parefeu OPNsense n'a pas d'IPv6 sur sa patte WAN par contre les équipements qui sont sur le LAN ont bien une ipv6.
« Modifié: 09 mars 2025 à 10:12:00 par Olivier34 »

Olivier34

  • Abonné Bbox fibre
  • *
  • Messages: 9
  • Monptellier (34)
Bbox remplacée par OPNsense
« Réponse #1 le: 08 mars 2025 à 11:55:29 »
Pour la partie TV, je ne refais pas les requis pour l'IGMP qui sont
  • IGMP v2
  • priotity 5

Etape 1 - Création des alias
Dans Firewall: Aliases, créer un 1er alias pour les ports:
  • Name: TV_port (par exemple)
  • Type : Port(s)
  • Content : 8200, 8202

Dans Firewall: Aliases, créer un 2eme alias pour les réseaux
  • Name: TV_network (par exemple)
  • Type : Network(s)
  • Content : 89.86.97.0/24, 89.86.96.0/24, 193.251.97.0/24, 176.165.8.0/24

Etape 2 - Création des régles du parefeu
Dans Firewall: Rules: Floating, ajouter une nouvelle régèle qui va taguer les flux IGMP avec la priorité 5.
  • Interface: WAN et LAN
  • Direction: any
  • TCP/IP Version: IPv4
  • Protocol: IGMP
  • Description: Set priority for IGMP
  • Clicker sur advanced option
  • cocher la case allow options
  • Set priority: Voice (5)

Dans Firewall: Rules: WAN, ajouter une nouvelle régle pour autoriser le flux TV :
  • Interface: WAN
  • Direction: in
  • TCP/IP Version: IPv4
  • Protocol: UDP
  • Source: TV_network qui est l'alias créer précédemment
  • Destination port range: TV_port
  • Description: Flux TV multicast


Etape 3 - Configuration d'IGMP proxy
Dans System: Firmware: Plugins, installer le plugin os-igmp-proxy.
Dans Services: IGMP Proxy, ajouter l'interface WAN, avec les paramètres :
  • Interface: WAN
  • Type: Upstream interface
  • Network(s) : 89.86.97.0/24, 89.86.96.0/24, 193.251.97.0/24, 176.165.8.0/24
Puis ajouter l'interface LAN, avec les paramètres :
  • Interface: LAN
  • Type: Downstream interface

Etape 4a - Forcer IGMPv2 - Pimd
Pour forcer la version 2 d'IGMP, il y a plusieurs façon. L'une est d'utiliser pimd qui va envoyer des trames IGMPv2 et faire passer l'interface en v2. (voir le tuto pfsense avec la proposition de modification suivante pour voir qu'on est en igmpv3).
if ifmcstat -i vlan01.100 -f inet | grep -q "igmpv3"; then
    # Mettre le code pour arreter igmp proxy
    echo "Stopping IGMPproxy"

    sleep 3
    # Puis lancer pimd

    sleep 7
    # puis le tuer
    killall pimd
    sleep 1
    # Puis relancer igmp-proxy
    echo "Starting again IGMPproxy"

fi

Etape 4b - Forcer IGMPv2 - Compilation du noyau
Pour ma part, j'ai choisi de recompiler le kernel pour modifier la version IGMP directement dans OPNsense. Le gros point noir de cette technique est qu'il est nécessaire de recompiler le noyau à chaque fois qu'une nouvelle version sort.
Dans System: Settings: Tunables, ajouter une nouvelle entrée:
  • Tunable: net.inet.igmp.default_version
  • Value: 2

Pour la compilation du noyau, il faut monter une machine FreeBSD https://github.com/opnsense/tools, puis réaliser les commandes suivantes pour cloner le repository
pkg install git
cd /usr
git clone https://github.com/opnsense/tools

Update du 31/05/2025 : Le dépot de freebsd contient 2 commits qui ne sont pas sous OPNsense et qui permettent de rester en IGMPv2. On ajoute alors les dépots de freebsd en tant qu'upstream.
cd /usr/src
git remote add upstream https://github.com/freebsd/freebsd-src.git
git fetch upstream


Mettre à jour les dépots OPNsense en local, avec le dernier tag correspondant à la version ici 25.1. En cas de nouvelle version d'OPNsense, il est nécessaire de refaire toutes les étapes à partir d'ici avec la bonne version, par exemple 25.1.2 au lieu de 25.1
cd /usr/tools/
make update VERSION=25.1

Update du 31/05/2025: Il n'est plus nécessaire d'appliquer les modifications à la main comme ci-dessous mais on peut appliquer 2 commits directement depuis le dépot de freebsd
Avant de compiler le kernel et une fois que le dépots sont à jour, il faut modifier le fichier igmp.c qui est dans le dossier /usr/src/sys/netinet/, pour lui appliquer la correction https://github.com/freebsd/freebsd-src/commit/b94ec00ba73ef4769f62555bfcb840919143e198 et forcer l'utilisation de la v2 en modfiant la ligne
// Ce n'est plus nécessaire de faire la modification à la main. Voir commande plus bas pour le cherry-pick
VNET_DEFINE_STATIC(int, igmp_default_version) = IGMP_VERSION_3;
// Par cette nouvelle ligne pour forcer la v2
VNET_DEFINE_STATIC(int, igmp_default_version) = IGMP_VERSION_2;
La nouvelle commande est
cd /usr/src
git cherry-pick b94ec00ba73ef4769f62555bfcb840919143e198 d2c2d6d6b09e8a059dffd6b6c7513d0925a8753d

La commande suivante permet de compiler le kernel
make kernel
Le kernel est récupérable dans le dossier /usr/local/opnsense/build/25.1/amd64/sets. Il faut ensuite le copier sous ONsense, dans le dossier /home/ par exemple puis faire la mise à jour du kernel sous OPNsense avec la commande suivante : opnsense-update -fikr 25.1 -l /home/
« Modifié: 31 mai 2025 à 10:09:22 par Olivier34 »

benoitm974

  • Abonné Bbox fibre
  • *
  • Messages: 342
  • chatillon 92
Bbox remplacée par OPNsense
« Réponse #2 le: 08 mars 2025 à 14:10:51 »
Merci beaucoup pour le tutoriel très propre, surtout pour moi le fait que tu aies pris du temps pour analyser les trames afin de confirmer les valeurs actuelles utilisées par la Bbox. Cela permet de rendre le tout un peu plus propre pour nous tous, c'est chouette. J'apprécie particulièrement les détails tels que celui de bien faire les requêtes DHCP en priorité 6, même si ce n'est pas obligatoire mais effectivement identique à ce que fait Bouygues, merci et bravo.

Le fait que tu arrives à avoir la télévision avec un ONT Bouygues renforce une idée que, je crois, @mirtouf avait soulevé à propos du fait que certains ONT (type Ubiquiti, ou Glassfiber, ...) pourraient poser problème dans la façon dont ils "gèrent" les flux multicast entrants. De mémoire, ces flux chez Bouygues arrivent depuis l'IP source 0.0.0.0, ce qui peut être mal interprété ou filtré par l'ONT... Du coup, cela expliquerait que certains du forum, malgré le COS 5 correcte et le setup d'un IGMP proxy en V2, voient bien les enregistrements multicast passer au niveau du proxy et des trames IGMP mais ne voient pas de flux multicast retour.

Cela serait intéressant qu'une personne avec un ONT Nokia XGS-PON confirme ou trace ces flux. Cela permettrait de concentrer l'effort sur comment configurer un ONT tiers (en tout cas ceux qui ont des firmware plus flexibles type WAS110 ou Huawei MA5671A ou SFP, qui présentent un intérêt de part leur format par rapport à garder une ONT fourni par Bouygues) pour qu'ils "laissent" passer les flux multicast...

B.

mirtouf

  • Abonné Bbox fibre
  • *
  • Messages: 1 364
  • Chelles (77)
    • L'antre de la bête
Bbox remplacée par OPNsense
« Réponse #3 le: 08 mars 2025 à 14:40:34 »
Je suis ravi de voir que mon vieux truc q&d a encore eu un certain succès. ;D
Pour la TV, avec pas mal d'ONT, on n'a rien et au pire, on a un crash de l'ONT ! (le LEOX par exemple). C'est en effet assez rageant de ne pas comprendre pourquoi un tel comportement mais en lisant les forums UI, un dev (il me semble) avait indiqué que le support multicast entre un couple OLT/ONT de marques différentes était compliqué à implémenter et peu fiable/performant.

nwks

  • Abonné Bbox fibre
  • *
  • Messages: 76
  • Grenoble (38)
Bbox remplacée par OPNsense
« Réponse #4 le: 18 mars 2025 à 16:26:51 »
Hello et merci pour le sujet et tuto !

J'ai une offre Pure Fibre (sans TV) et je m'étais attaqué au remplacement de la BBox par un OPNsense virtualisé et un ONT "custom" (WAS-110) il y a quelques semaines, mais j'avais été confronté à des problèmes de débit et de fiabilité de la connexion, et j'avais mis le sujet en suspend faute de temps pour creuser.
J'ai fini par m'apercevoir que j'avais aussi ces problèmes en configuration "normale" (derrière la BBox), et qu'ils étaient en fait causés par les options "hardware offload" que j'avais bidouillé un jour et oublié de remettre à "disabled"... ::)

Bref, ton sujet m'a motivé pour refaire le test en virant la BBox et effectivement ça fonctionne pour le moment.

Juste une question : est-ce que le monitoring de la gateway IPv4 fonctionne chez toi ?
Celle qui remonte par le DHCP chez moi (176.191.96.1) ne semble pas répondre aux pings...  ???
Pas de problème sur IPv6 avec fe80::1 ...

mirtouf

  • Abonné Bbox fibre
  • *
  • Messages: 1 364
  • Chelles (77)
    • L'antre de la bête
Bbox remplacée par OPNsense
« Réponse #5 le: 18 mars 2025 à 17:29:47 »
Encore heureux qu'une adresse link local réponde au ping. ;D
Pour la passerelle IPv4 elle peut répondre ou non en ping, il vaut mieux trouver d'autres cibles pour surveiller sa connexion.