Auteur Sujet: [TUTO] utilisation EdgeOS (ER-X) en remplacement de la Bbox  (Lu 1326 fois)

0 Membres et 2 Invités sur ce sujet

SCMouettE

  • Abonné Bbox fibre
  • *
  • Messages: 14
  • Marseille (13)
[TUTO] utilisation EdgeOS (ER-X) en remplacement de la Bbox
« le: 01 octobre 2023 à 00:35:37 »
Bonjour à tous,

Suite aux quelques heures passées à configurer mon ER-X sous EdgeOS avec l'ONT de Bouygues voici un petit tutoriel pour configurer EdgeOS en lieu et place de la bbox avec l'ensemble des fonctionalités (internet/tv/téléphone).

Ce tutoriel va donc couvrir les fonctionalités suivantes :
  • Internet IPv4 pour votre LAN,
  • Internet IPv6 pour votre LAN,
  • Utilisation de la bbox en arrière du routeur pour faire fonctionner le téléphone,
  • Utilisation de la box Miami pour profiter de la TV.
Il est applicable à la version v2.0.9-hotfix.7. Je l'ai testé chez moi avec un ER-X, j'imagine qu'avec d'autres routeurs EdgeMax cela devrait fonctionner aussi sans trop de modifications.
 
J'ai voulu écrire ce tuto car les informations dont j'ai eu besoin pour monter cette configuration complète sont réparties dans plusieurs threads et plus ou moins faciles à trouver. Comme ça tout est regroupé et le chapitrage permet de personaliser (et mettre à jour) plus facilement la configuration selon les besoins.
 
Voici l'architecture cible de la configuration qui sera présentée ici :

                             +---------------------------------+                               
       +-------------+       |                                 |                               
       | ONT         |-------|eth0                       ER-X  |                               
       +-------------+       |                                 |                               
       +-------------+       |                                 |                               
       | bbox        |-------|eth1                             |                               
       +-------------+       |                                 |                               
       +-------------+       |                                 |                               
       | miami (TV)  |-------|eth2                             |                               
       +-------------+       |                                 |                               
       +-------------+       |                                 |                               
       | autres      |-------|eth3 ----+--- switch0            |                               
       | équipements |       |         |                       |                               
       | LAN, wifi,  |       |         |                       |                               
       | etc.        |-------|eth4 ----+                       |                               
       +-------------+       |                                 |                               
                             +---------------------------------+


C'est une base simple qui permet de faire marcher toutes les fonctions et peut ensuite être adaptée selon vos besoins. On sépare la box miami du reste du réseau car le switch interne ne gère pas l'IGMP snooping et le trafic TV vient pourrir tout switch0.

Notez bien que je n'inclus que le strict nécessaire pour les fonctionalités voulues ; On peut évidemment personaliser plein de choses, je vous laisse la main ;-).

Les adresses IPv4 du LAN dans la configuration proposée seront les suivantes :

switch0 (votre LAN) :192.168.1.1/24
eth1 (LAN bbox) :192.168.2.1/24
eth2 (LAN miami) :192.168.3.1/24

Concernant l'IPv6, on va découper le préfixe /60 fourni par Bouygues de la façon suivante en prenant pour exemple et dans le reste du tuto le pool fictif 2001:862:7e13:9c70::/60 :

IDPréfixe  ModeRôleValeur exempleIP locale ER-X
:0   /64SLAACAdresses LAN (switch0)   2001:862:7e13:9c70::/64   2001:862:7e13:9c70::ffff/64
:1   /64SLAACAdresses miami (eth2)   2001:862:7e13:9c71::/64   2001:862:7e13:9c71::ffff/64
:e   /63Prefix-Delegation   Réseau bbox (eth1)   2001:862:7e13:9c7e::/63   fd00:bb0f:bb0f::ffff/64

Il reste donc 12 préfixes /64 à distribuer pour d'autres VLAN ; Il est également important de noter que les préfixes délégués pour la bbox seront en dur dans la configuration ; Si Bouygues décide de changer nos pools d'adresses, il faudra la reprendre (cela ne concerne que la partie bbox/téléphone) ; pas trop le choix malheureusement.

Pour information, l'adresse IPv6 locale de l'ER-X sur le réseau de la bbox est nécessaire au fonctionnement du serveur dhcpv6, j'ai choisi une ip dans le préfixe privé IPv6 mais si elle ne vous plaît pas, vous pouvez prendre ce que vous voulez dans l'espace fd00::/8 avec un préfixe /64.

0. Pré-requis
  • Le pool IPv6 qui vous est attribué par bouygues, sous la forme 2001:*:*:*::/60, récupérable dans les information de la bbox. Dans la suite du tutoriel on utilise le pool fictif 2001:862:7e13:9c70::/60.
  • Un ER-X en configuration usine ;)
À noter que dans ce tutoriel nous ne spooferons pas l'adresse MAC de la bbox (ce n'est pas indispensable et cela va poser des problèmes lorsque la bbox sera connectée à l'ER-X pour faire marcher le téléphone). Afin d'éviter les délais d'expiration des baux DHCP v4 et v6, je vous conseille d'initier un redémarrage de votre bbox avant de brancher l'ER-X sur l'ONT pour déclencher un release DHCPv4 et v6.

1. Internet IPv4 pour le LAN local

C'est la partie la plus simple, un peu de DHCP et de NAT suffit ici. On commence par configurer l'adresse LAN et les ports du switch de l'ER-X :

set interfaces switch switch0 address 192.168.1.1/24
set interfaces switch switch0 description LAN
set interfaces switch switch0 switch-port interface eth3
set interfaces switch switch0 switch-port interface eth4

On ajoute ensuite un serveur DHCP et on configure le dns forwarding pour le LAN :

set service dns forwarding listen-on switch0
set service dhcp-server disabled false
set service dhcp-server shared-network-name lan subnet 192.168.1.0/24 dns-server 192.168.1.1
set service dhcp-server shared-network-name lan subnet 192.168.1.0/24 default-router 192.168.1.1
set service dhcp-server shared-network-name lan subnet 192.168.1.0/24 start 192.168.1.100 stop 192.168.1.254

Ensuite on fait une configuration minimale pour le pare-feu :

set firewall name WAN_IN default-action drop
set firewall name WAN_IN description 'WAN to internal'
set firewall name WAN_IN rule 10 action accept
set firewall name WAN_IN rule 10 description 'Allow established/related'
set firewall name WAN_IN rule 10 state established enable
set firewall name WAN_IN rule 10 state related enable
set firewall name WAN_LOCAL default-action drop
set firewall name WAN_LOCAL description 'WAN to router'
set firewall name WAN_LOCAL rule 10 action accept
set firewall name WAN_LOCAL rule 10 description 'Allow established/related'
set firewall name WAN_LOCAL rule 10 state established enable
set firewall name WAN_LOCAL rule 10 state related enable

On configure le VLAN 100 avec un client DHCP (À ce moment on fait un premier commit pour créer l'interface du VLAN.) :

set interfaces ethernet eth0 vif 100 address dhcp
set interfaces ethernet eth0 vif 100 dhcp-options name-server update
set interfaces ethernet eth0 vif 100 description Internet
set interfaces ethernet eth0 vif 100 firewall in name WAN_IN
set interfaces ethernet eth0 vif 100 firewall local name WAN_LOCAL
commit

On ajoute enfin les règles de NAT + l'offload puis on valide et on enregistre le tout :

set service nat rule 5010 description 'masquerade for WAN'
set service nat rule 5010 log disable
set service nat rule 5010 outbound-interface eth0.100
set service nat rule 5010 protocol all
set service nat rule 5010 type masquerade
set system offload hwnat enable
commit
save

Et voilà normalement vous avez accès Internet IPv4 basique sur les ports 3 et 4 de l'ER-X.

2. Internet IPv6 pour le LAN local

La version actuelle d'EdgeOS a un bug au niveau de la gestion du DUID IPv6 qui nécessite la modification d'un script du système. Le problème est que cette modification est perdue lors de la mise à jour de l'OS. Du coup on met en place un script de démarrage qui vérifie si le patch est appliqué et nécessaire ; Le cas échéant il l'applique. Ce script étant dans la configuration, il est conservé lors des mises à jour. Pour le mettre en place, passer root avec sudo -i et créer le fichier /config/scripts/post-config.d/dhcpv6-duid avec le contenu suivant :

#!/bin/bash

src="/opt/vyatta/sbin/dhcpv6-pd-duid.pl"
 
[ -e "${src}.orig" ] && exit 0

if [ "`sed -E -e '44!d' -e 's/^\s+//' $src`" != 'my $buf = pack("n", $len);' ] ; then
    logger "Unable to apply dhcpv6-duid patch, source not expected"
    exit 0
fi

logger "Applying dhcpv6-duid patch"

cp $src $src.orig

ed $src << 'EOF'   
44c
    my $buf;
    my $endian = $Config{byteorder};
    if ($endian == 1234 or $endian == 12345678) {
        $buf = pack("v", $len);
    } else {
        $buf = pack("n", $len);
    }
.
w
EOF

N'oubliez pas de rendre le fichier exécutable avec un petit chmod a+x /config/scripts/post-config.d/dhcpv6-duid. Vous pouvez ensuite soit rebooter le routeur, soit lancer manuellement le script pour appliquer le patch avant de continuer.

Pour faire fonctionner l'IPv6 sur votre réseau, il faut ensuite configurer le client dhcpv6 en délégation de préfixe sur le VLAN 100 d'eth0 ; tout d'abord, on prépare des règles simples de pare-feu pour protéger le LAN :

set firewall ipv6-name WANv6_IN default-action drop
set firewall ipv6-name WANv6_IN description 'WANv6 to internal'
set firewall ipv6-name WANv6_IN rule 10 action accept
set firewall ipv6-name WANv6_IN rule 10 description 'Allow established/related sessions'
set firewall ipv6-name WANv6_IN rule 10 state established enable
set firewall ipv6-name WANv6_IN rule 10 state related enable
set firewall ipv6-name WANv6_LOCAL default-action drop
set firewall ipv6-name WANv6_LOCAL description 'WAN inbound traffic to the router'
set firewall ipv6-name WANv6_LOCAL rule 10 action accept
set firewall ipv6-name WANv6_LOCAL rule 10 description 'Allow established/related sessions'
set firewall ipv6-name WANv6_LOCAL rule 10 state established enable
set firewall ipv6-name WANv6_LOCAL rule 10 state related enable
set firewall ipv6-name WANv6_LOCAL rule 20 action drop
set firewall ipv6-name WANv6_LOCAL rule 20 description 'Drop invalid state'
set firewall ipv6-name WANv6_LOCAL rule 20 state invalid enable
set firewall ipv6-name WANv6_LOCAL rule 30 action accept
set firewall ipv6-name WANv6_LOCAL rule 30 description 'Allow IPv6 icmp'
set firewall ipv6-name WANv6_LOCAL rule 30 protocol ipv6-icmp
set firewall ipv6-name WANv6_LOCAL rule 40 action accept
set firewall ipv6-name WANv6_LOCAL rule 40 description 'Allow dhcpv6'
set firewall ipv6-name WANv6_LOCAL rule 40 destination port 546
set firewall ipv6-name WANv6_LOCAL rule 40 protocol udp
set firewall ipv6-name WANv6_LOCAL rule 40 source port 547

On configure ensuite le client dhcpv6-pd sur le port de l'ONT avec la distribution des adresses sur le LAN avec le préfixe :0/64 sur l'interface switch0 :

set interfaces ethernet eth0 vif 100 dhcpv6-pd prefix-only
set interfaces ethernet eth0 vif 100 dhcpv6-pd rapid-commit disable
set interfaces ethernet eth0 vif 100 dhcpv6-pd pd 0 interface switch0 host-address '::ffff'
set interfaces ethernet eth0 vif 100 dhcpv6-pd pd 0 interface switch0 prefix-id ':0'
set interfaces ethernet eth0 vif 100 dhcpv6-pd pd 0 interface switch0 service slaac
set interfaces ethernet eth0 vif 100 dhcpv6-pd pd 0 prefix-length /60
set interfaces ethernet eth0 vif 100 firewall in ipv6-name WANv6_IN
set interfaces ethernet eth0 vif 100 firewall local ipv6-name WANv6_LOCAL
commit
save

Et voilà, on a de l'IPv6 fonctionnel sur le LAN. Bravo, mais le plus dur reste à faire ;D
« Modifié: 04 octobre 2023 à 13:59:13 par SCMouettE »

SCMouettE

  • Abonné Bbox fibre
  • *
  • Messages: 14
  • Marseille (13)
Tuto utilisation EdgeOS (ER-X) en remplacement de la Bbox
« Réponse #1 le: 01 octobre 2023 à 00:37:29 »
3. Bbox + téléphone

Pour faire fonctionner le téléphone il faut distribuer des IP v4 et v6 à la bbox à l'arrière de notre ER-X. Attention IPv6 est nécessaire sinon le téléphone ne fonctionne pas. Dans la suite de ce tutoriel vous devez connaître votre pool IPv6 attribué, récupérable sur la bbox quand elle est directement branchée sur l'ONT. On utilisera le pool fictif 2001:862:7e13:9c70::/60 pour la configuration présentée.

Pour cela, on commence par configurer le VLAN 100 sur eth1 avec des ip fixes v4 et v6 :

set interfaces ethernet eth1 vif 100 address 192.168.2.1/24
set interfaces ethernet eth1 vif 100 description bbox
set interfaces ethernet eth1 vif 100 ipv6 address eui64 'fd00:bb0f:bb0f::ffff/64'
commit

On créé ensuite un service DHCP pour IPv4 sans oublier d'y ajouter les DNS et NTP Bouygues sinon ça ne marche pas surtout si vous choisissez d'utiliser d'autres serveurs DNS pour votre LAN :

set service dhcp-server shared-network-name bbox subnet 192.168.2.0/24 dns-server 194.158.122.10
set service dhcp-server shared-network-name bbox subnet 192.168.2.0/24 dns-server 194.158.122.15
set service dhcp-server shared-network-name bbox subnet 192.168.2.0/24 ntp-server 194.158.119.97
set service dhcp-server shared-network-name bbox subnet 192.168.2.0/24 default-router 192.168.2.1
set service dhcp-server shared-network-name bbox subnet 192.168.2.0/24 start 192.168.2.100 stop 192.168.2.150

On ajoute ensuite le service DHCPv6 pour la délégation de préfixe sans oublier là aussi les DNS Bouygues (n'oubliez pas de changer les adresses IPv6 avec celles de votre pool) :

set service dhcpv6-server shared-network-name bbox name-server '2001:860:b0ff:1::1'
set service dhcpv6-server shared-network-name bbox name-server '2001:860:b0ff:1::2'
set service dhcpv6-server shared-network-name bbox subnet 'fd00:bb0f:bb0f::/64' prefix-delegation start '2001:862:7e13:9c7e::' stop '2001:862:7e13:9c7e::' prefix-length 63

Finalement on ajoute les paramètres de routage IPv6 (là encore changer les adresses IPv6 avec celles de votre pool) :

set interfaces ethernet eth1 vif 100 ipv6 router-advert send-advert true
set protocols static interface-route6 '2001:862:7e13:9c7e::/63' next-hop-interface eth1.100 description bbox
commit
save

Et voilà, vous pouvez allumer la Bbox elle devrait normalement se connecter correctement et le téléphone devrait lui aussi fonctionner normalement.

4. Miami (TV)

Dernière étape, l'ajout de la box Miami. À noter que je ne suis pas un gros utilisateur de la TV, je n'ai testé que la réception des chaînes et le replay. Si certaines fonctionalités posent problème dites-le moi et j'essaierai de mettre à jour.

Tout d'abord, par défaut dans cette version d'EdgeOS les paquets IGMP sont envoyés en version 3. Il faut forcer la version 2 mais ce n'est pas faisable via la configuration, on doit passer par un script pour cela. Pour cela, on passe root avec sudo -i, puis on crée le script /config/scripts/post-config.d/igmpv2 avec le contenu suivant :

#!/bin/sh

sysctl -w net.ipv4.conf.default.force_igmp_version=2
sysctl -w net.ipv4.conf.all.force_igmp_version=2

N'oubliez pas de rendre le script exécutable avec un chmod a+x /config/scripts/post-config.d/igmpv2. Vous pouvez ensuite soit rebooter le routeur, soit lancer manuellement le script avant de continuer.

Tout d'abord on configure le port eth2 en IPv4 et en IPv6 :

set interfaces ethernet eth2 address 192.168.3.1/24
set interfaces ethernet eth2 description miami
set interfaces ethernet eth0 vif 100 dhcpv6-pd pd 0 interface eth2 host-address '::ffff'
set interfaces ethernet eth0 vif 100 dhcpv6-pd pd 0 interface eth2 prefix-id ':1'
set interfaces ethernet eth0 vif 100 dhcpv6-pd pd 0 interface eth2 service slaac

Ensuite on paramètre un serveur DHCP avec les paramètres qui vont bien :

set service dhcp-server shared-network-name miami subnet 192.168.3.0/24 dns-server 194.158.122.10
set service dhcp-server shared-network-name miami subnet 192.168.3.0/24 dns-server 194.158.122.15
set service dhcp-server shared-network-name miami subnet 192.168.3.0/24 ntp-server 194.158.119.97
set service dhcp-server shared-network-name miami subnet 192.168.3.0/24 default-router 192.168.3.1
set service dhcp-server shared-network-name miami subnet 192.168.3.0/24 start 192.168.3.100 stop 192.168.3.150

Note : je n'ajoute pas l'option 125 (visvi) ici car cela fonctionne sans chez moi. Si d'aventure vous en avez besoin, il faudra faire une capture réseau entre la box Miami et la bbox (sans l'ER-X) du coup et récupérer la valeur. Vous pouvez ensuite la rajouter avec la commande suivante (compléter/remplacer la séquence hexa avec la valeur récupérée sur votre dump réseau :

set service dhcp-server shared-network-name miami subnet 192.168.3.0/24 subnet-parameters 'option vivsi &quot;\x00\x00.......\x42\x46&quot;;'
Ensuite on ajoute les règles de pare-feu suivantes pour permettre les flux TV multicast :

set firewall group address-group IPTV-multicast address 224.0.0.0/4
set firewall group address-group IPTV-multicast description Multicast
set firewall name WAN_IN rule 20 action drop
set firewall name WAN_IN rule 20 description 'Drop invalid state'
set firewall name WAN_IN rule 20 state invalid enable
set firewall name WAN_IN rule 30 action accept
set firewall name WAN_IN rule 30 description 'Allow multicast'
set firewall name WAN_IN rule 30 destination group address-group IPTV-multicast
set firewall name WAN_IN rule 30 log disable
set firewall name WAN_IN rule 30 protocol all
set firewall name WAN_IN rule 30 source group
set firewall name WAN_IN rule 30 state established enable
set firewall name WAN_IN rule 30 state new enable
set firewall name WAN_IN rule 30 state related enable
set firewall name WAN_LOCAL rule 20 action drop
set firewall name WAN_LOCAL rule 20 description 'Drop invalid state'
set firewall name WAN_LOCAL rule 20 state invalid enable
set firewall name WAN_LOCAL rule 30 action accept
set firewall name WAN_LOCAL rule 30 description 'Allow Multicast'
set firewall name WAN_LOCAL rule 30 destination group address-group IPTV-multicast
set firewall name WAN_LOCAL rule 30 log disable
set firewall name WAN_LOCAL rule 30 protocol all
set firewall name WAN_LOCAL rule 30 source group
set firewall name WAN_LOCAL rule 30 state established enable
set firewall name WAN_LOCAL rule 30 state new enable
set firewall name WAN_LOCAL rule 30 state related enable

On configure maintenant le proxy IGMP de l'OS :

set protocols igmp-proxy interface eth0.100 alt-subnet 0.0.0.0/0
set protocols igmp-proxy interface eth0.100 role upstream
set protocols igmp-proxy interface eth0.100 threshold 1
set protocols igmp-proxy interface eth2 alt-subnet 0.0.0.0/0
set protocols igmp-proxy interface eth2 role downstream
set protocols igmp-proxy interface eth2 threshold 1

On active le service upnp pour les replays :

set service upnp2 listen-on eth2
set service upnp2 wan eth0.100

Et enfin on active le marquage COS 5 des paquets IGMP. Le fonctionnement de cette commande seule est pour moi un mystère mais force est de constater que sans elle les paquets ne sont pas marqués (et ça ne marche pas) et qu'avec ils le sont (et ça marche) :

set interfaces ethernet eth0 vif 100 egress-qos '7:5'
commit
save

Et voilà normalement tout doit fonctionner nominalement.

J'espère que ce tuto pourra vous servir, n'hésitez pas si vous avez des questions et/ou suggestions ! J'essaierai de le mettre à jour s'il y a des changements nécessaire, tant que je serai chez Bouygues avec mon ER-X en tout cas :)

SCMouettE

  • Abonné Bbox fibre
  • *
  • Messages: 14
  • Marseille (13)
Tuto utilisation EdgeOS (ER-X) en remplacement de la Bbox
« Réponse #2 le: 01 octobre 2023 à 00:37:44 »
[Réservé]