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 :
ID | Préfixe | Mode | Rôle | Valeur exemple | IP locale ER-X |
:0 | /64 | SLAAC | Adresses LAN (switch0) | 2001:862:7e13:9c70::/64 | 2001:862:7e13:9c70::ffff/64 |
:1 | /64 | SLAAC | Adresses miami (eth2) | 2001:862:7e13:9c71::/64 | 2001:862:7e13:9c71::ffff/64 |
:e | /63 | Prefix-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 localC'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 localLa 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