Bonjour,
Ce qui suit n'est rien de plus qu'une compilation d'infos que j'ai récupéré ici et là sur ce forum. Je n'ai rien inventé et ne prétend certainement pas comprendre tous les détails.
Ce qui suit a été mis en place avec succès sur un ER4 avec un ONT, une Livebox 5 et un décodeur UHD. Le firmware utilisé est le 2.0.8 hotfix 1.
Je ne prétends en aucun cas que c'est la meilleure manière de faire. L'idée étant d'aider des personnes à mettre en place une configuration fonctionnelle tout en améliorant celle-ci.
Ceci devrait vous permettre d'avoir :
- l'IPv4 + l'IPv6
- La téléphonie à partir de la Livebox
- Le décodeur derrière le switch
La connectique se fait de la manière suivante :
- ONT sur eth1
- Livebox port 4 sur eth0
- LAN sur eth2
VLAN 832 pour le net et la VoIP
VLAN 840 pour la TV
EDIT : MAJ 30/07/2020- Plus de bridge
- Le décodeur se connecte sur le switch et non plus sur la Livebox
La mise en place se fait en 2 étapes :
I / Mise en place des fichiers sur l'ER :1 / Copier le fichier dhclient3.prio6.edgeos2 ci-joint dans /sbin de l'ER4
- sudo mv dhclient3 dhclient3.ori ; sudo mv dhclient3.prio6.edgeos2 dhclient3
- Changer le owner et groupe à root : sudo chown root:root dhclient3
- Changer les droits : sudo chmod 755 dhclient3
2 /
- sudo vi /etc/systemd/system/dhclient6.service
#/etc/systemd/system/dhclient6.service
[Unit]
Description=dhclient for sending IPv6 DUID
After=network.target
[Service]
Type=forking
ExecStartPre=/config/scripts/generate_dhcpv6_configfile.sh
ExecStart=/sbin/dhclient -6 -P -nw -cf /etc/dhcp3/dhclient6_eth1_832.conf -pf /var/run/dhclient6_eth1_832.pid -lf /var/run/dhclient6_eth1_832.leases eth1.832
NonBlocking=yes
Restart=always
RestartSec=60
[Install]
WantedBy=multi-user.target
- sudo systemctl daemon-reload ; sudo systemctl enable dhclient6
3 /
- sudo vi /config/scripts/generate_dhcpv6_configfile.sh
#!/bin/bash
# Place in /config/scripts/generate_dhcpv6_configfile.sh
target_file="/etc/dhcp3/dhclient6_eth1_832.conf"
interface="eth1"
vif="832"
auth_string=$(/bin/cli-shell-api showCfg interfaces ethernet $interface vif $vif dhcp-options client-option | grep "send rfc3118-auth" | awk '{ print $4 }' | awk -F ";" '{print $1}')
mac_livebox=$(/bin/cli-shell-api showCfg interfaces ethernet $interface vif $vif dhcp-options client-option | grep "dhcp-client-identifier" | awk '{ print $4 }' | awk -F ";" '{print $1}')
read -r -d '' conffile <<EOF
# $target_file\n
option dhcp6.auth code 11 = string;\n
option dhcp6.vendorclass code 16 = string;\n
option dhcp6.userclass code 15 = string;\n
\n
#External interface (VLAN must be 832 for Orange)\n
interface "eth1.832" {\n
\t#Orange France specific options\n
\tsend dhcp6.vendorclass 00:00:04:0e:00:05:73:61:67:65:6d;\n
\tsend dhcp6.userclass 00:2b:46:53:56:44:53:4c:5f:6c:69:76:65:62:6f:78:2e:49:6e:74:65:72:6e:65:74:2e:73:6f:66:74:61:74:68:6f:6d:65:2e:6c:69:76:65:62:6f:78:34;\n
\tsend dhcp6.vendor-opts 00:00:05:58:00:06:00:0e:49:50:56:36:5f:52:45:51:55:45:53:54:45:44;\n
\n
\t#Authentication for Orange France DHCP server (same value as for DHCPv4)\n
\tsend dhcp6.auth $auth_string;\n
\n
\tsend dhcp6.client-id 00:03:00:$mac_livebox;\n
\n
\trequest dhcp6.name-servers, dhcp6.vendorclass, dhcp6.userclass, dhcp6.auth;\n
}\n
EOF
echo -e $conffile > $target_file
- sudo chmod +x /config/scripts/generate_dhcpv6_configfile.sh
4 /
- sudo vi /config/scripts/post-config.d/setDHCPv6COSto6.sh
#!/bin/bash
## Place in /config/scripts/post-config.d/setDHCPv6COSto6.sh
/sbin/ip6tables -t mangle -F
/sbin/ip6tables -t mangle -I POSTROUTING -p udp --sport dhcpv6-client --dport dhcpv6-server -j CLASSIFY --set-class 0:6
exit 0
- sudo chmod +x /config/scripts/post-config.d/setDHCPv6COSto6.sh
5 /
- sudo vi /etc/dhcp3/dhclient-exit-hooks.d/dhclient-ipv6
# Interfaces that should obtain a /64 prefix
IPV6_INTERFACES=(eth2)
INT_ADDRESS="::1"
###
ipv6_prefix_setup() {
# $1 is the ethernet interface
# $2 is the suffix to use
ethiface=$1
suffix=$2
current_ip=$(ip -6 addr show dev $ethiface scope global | awk '/inet6/ {print $2}' | grep -v '^fd' )
current_prefix=$(echo $current_ip | sed -e 's@::.*/64@::/64@')
# To generate new IP, need to take new prefix, add 8 bits
new_ip=$( echo $new_ip6_prefix | sed -e 's/00::\/.*//g' )
new_ip="$new_ip$suffix"
if [ "$new_ip" != "$current_ip" ]
then
if [ "$current_ip" != "" ]
then
/sbin/ip -6 addr delete "$current_ip" dev $ethiface
fi
/sbin/ip -6 addr add "$new_ip" dev $ethiface
fi
}
case "$reason" in
BOUND6|REBIND6)
# We will get called twice here - once for the temp address
# and once for the prefix. We only care about the prefix.
if [ ! -z "$new_ip6_prefix" ] ; then
for interface in "${IPV6_INTERFACES[@]}"
do
suffix=$( echo ${interface} | /usr/bin/md5sum | awk '{ print substr($1,3,2) }' )
suffix="$suffix$INT_ADDRESS/64"
ipv6_prefix_setup ${interface} $suffix
done
/bin/systemctl restart radvd.service >/dev/null 2>&1
fi
;;
esac
- sudo chmod +x /etc/dhcp3/dhclient-exit-hooks.d/dhclient-ipv6
II / Configuration de config.boot :Modifier le fichier suivant :
firewall {
all-ping enable
broadcast-ping disable
ipv6-name WANv6_IN {
default-action drop
description "WANv6 inbound traffic forwarded to LAN"
rule 10 {
action accept
description "Allow established/related"
state {
established enable
related enable
}
}
rule 20 {
action drop
description "Drop invalid state"
state {
invalid enable
}
}
rule 30 {
action accept
description "Allow ICMPv6"
log disable
protocol icmpv6
}
}
ipv6-name WANv6_LOCAL {
default-action drop
description "WANv6 inbound traffic to the router"
rule 10 {
action accept
description "Allow established/related"
state {
established enable
related enable
}
}
rule 20 {
action drop
description "Drop invalid state"
state {
invalid enable
}
}
rule 30 {
action accept
description "Allow ICMPv6"
log disable
protocol icmpv6
}
rule 40 {
action accept
description "Allow DHCPv6"
destination {
port 546
}
protocol udp
source {
port 547
}
}
}
ipv6-name WANv6_OUT {
default-action accept
description "WANv6 outbound traffic"
rule 10 {
action accept
description "Allow established/related"
state {
established enable
related enable
}
}
rule 20 {
action reject
description "Reject invalid state"
state {
invalid enable
}
}
}
ipv6-receive-redirects disable
ipv6-src-route disable
ip-src-route disable
log-martians enable
name WAN_IN {
default-action drop
description "WAN to internal"
enable-default-log
rule 10 {
action accept
description "Allow established/related"
log disable
protocol all
state {
established enable
invalid disable
new disable
related enable
}
}
rule 20 {
action drop
description "Drop invalid state"
log disable
protocol all
state {
established disable
invalid enable
new disable
related disable
}
}
}
name WAN_LOCAL {
default-action drop
description "WAN to router"
rule 1 {
action accept
description "Allow established/related"
state {
established enable
related enable
}
}
rule 2 {
action accept
description "Allow Ping"
destination {
group {
address-group ADDRv4_eth2
}
}
log enable
protocol icmp
}
rule 3 {
action drop
description "Drop invalid state"
log disable
state {
invalid enable
}
}
}
name WAN_OUT {
default-action accept
description "WAN outbound traffic"
rule 10 {
action accept
description "Allow established/related"
state {
established enable
related enable
}
}
rule 20 {
action reject
description "Reject invalid state"
state {
invalid enable
}
}
}
options {
}
receive-redirects disable
send-redirects enable
source-validation disable
syn-cookies enable
}
interfaces {
ethernet eth0 {
description "eth0 - Livebox"
duplex auto
speed auto
vif 832 {
address 192.168.30.1/24
description "eth0.832 - Internet + VoIP"
}
}
ethernet eth1 {
description "eth1 - ONT"
duplex auto
speed auto
vif 832 {
address dhcp
description "eth1.832 - Internet + VoIP"
dhcp-options {
client-option "send vendor-class-identifier "sagem";"
client-option "send user-class "\053FSVDSL_livebox.Internet.softathome.Livebox4";"
client-option "send dhcp-client-identifier 01:YY:YY:YY:YY:YY:YY;"
client-option "request subnet-mask, routers, domain-name-servers, domain-name, broadcast-address, dhcp-lease-time, dhcp-renewal-time, dhcp-rebinding-time, rfc3118-authentication, domain-search, SIP-servers, Vendor-Specific-Information;"
client-option "send rfc3118-authentication XX:XX:XX:XX...;"
default-route update
default-route-distance 210
global-option "option rfc3118-authentication code 90 = string;"
global-option "option SIP-servers code 120 = string;"
global-option "option Vendor-Specific-Information code 125 = string;"
name-server no-update
}
egress-qos "0:0 1:0 2:0 3:0 4:0 5:0 6:6 7:0"
firewall {
in {
ipv6-name WANv6_IN
name WAN_IN
}
local {
ipv6-name WANv6_LOCAL
name WAN_LOCAL
}
out {
ipv6-name WANv6_OUT
name WAN_OUT
}
}
ipv6 {
address {
autoconf
}
dup-addr-detect-transmits 1
}
}
vif 840 {
address 192.168.40.1/24
description "eth1.840 - TV"
egress-qos "0:5 1:5 2:5 3:5 4:5 5:5 6:5 7:5"
}
}
ethernet eth2 {
address 192.168.10.1/24
description "eth2 - LAN"
duplex auto
ipv6 {
dup-addr-detect-transmits 1
router-advert {
cur-hop-limit 64
link-mtu 0
managed-flag false
max-interval 600
other-config-flag false
prefix ::/64 {
autonomous-flag true
on-link-flag true
preferred-lifetime 14400
valid-lifetime 18000
}
reachable-time 0
retrans-timer 0
send-advert true
}
}
speed auto
vif 840 {
address 192.168.20.1/24
description "eth2.840 - TV"
mtu 1500
}
}
ethernet eth3 {
disable
duplex auto
speed auto
}
loopback lo {
}
}
protocols {
igmp-proxy {
interface eth1.840 {
alt-subnet 0.0.0.0/0
role upstream
threshold 1
}
interface eth2.840 {
alt-subnet 0.0.0.0/0
role downstream
threshold 1
}
}
}
service {
dhcp-server {
disabled false
global-parameters "option rfc3118-auth code 90 = string;"
global-parameters "option SIP code 120 = string;"
global-parameters "option Vendor-specific code 125 = string;"
hostfile-update disable
shared-network-name LAN {
authoritative disable
subnet 192.168.10.0/24 {
default-router 192.168.10.1
dns-server 192.168.10.1
domain-name local
lease 86400
start 192.168.10.3 {
stop 192.168.10.254
}
}
}
shared-network-name Livebox {
authoritative enable
subnet 192.168.30.0/24 {
default-router 192.168.30.1
dns-server 80.10.246.134
dns-server 81.253.149.5
domain-name orange.fr
lease 86400
start 192.168.30.30 {
stop 192.168.30.50
}
subnet-parameters "option rfc3118-auth 00:00:00:00:00:00:00:00:00:00:00:64:68:63:70:6c:69:76:65:62:6f:78:66:72:32:35:30;"
subnet-parameters "option SIP 00:06:73:62:63:74:33:67:03:41:55:42:06:61:63:63:65:73:73:11:6f:72:61:6e:67:65:2d:6d:75:6c:74:69:6d:65:64:69:61:03:6e:65:74:00;"
subnet-parameters "option Vendor-specific 00:00:05:58:0c:01:0a:00:00:00:00:00:ff:ff:ff:ff:ff;"
}
}
shared-network-name TV {
authoritative disable
subnet 192.168.20.0/24 {
default-router 192.168.20.1
dns-server 80.10.246.134
dns-server 81.253.149.5
lease 86400
start 192.168.20.30 {
stop 192.168.20.50
}
subnet-parameters "option Vendor-specific 00:00:0d:e9:28:04:06:46:38:30:38:34:46:05:0f:4c:4b:31:39:32:32:36:44:50:39:39:32:37:31:35:06:0d:4c:69:76:65:62:6f:78:20:46:69:62:72:65;"
}
}
static-arp disable
use-dnsmasq disable
}
dns {
forwarding {
cache-size 200
listen-on eth2
name-server 1.1.1.1
name-server 1.0.0.1
name-server 8.8.8.8
name-server 8.8.4.4
}
}
gui {
http-port 80
https-port 443
older-ciphers enable
}
nat {
rule 5010 {
log disable
outbound-interface eth1.832
protocol all
type masquerade
}
}
ssh {
allow-root
port 22
protocol-version v2
}
unms {
disable
}
upnp2 {
listen-on eth0.832
listen-on eth2
nat-pmp enable
secure-mode enable
wan eth1.832
}
}
system {
config-management {
commit-revisions 50
}
domain-name local
host-name EdgeRouter
login {
user ubnt {
authentication {
encrypted-password $1$zKNoUbAo$gomzUbYvgyUMcD436Wo66.
}
level admin
}
}
ntp {
server 0.ubnt.pool.ntp.org {
}
server 1.ubnt.pool.ntp.org {
}
server 2.ubnt.pool.ntp.org {
}
server 3.ubnt.pool.ntp.org {
}
}
offload {
hwnat disable
ipsec enable
ipv4 {
forwarding enable
vlan enable
}
ipv6 {
forwarding enable
vlan enable
}
}
syslog {
global {
facility all {
level notice
}
facility protocols {
level debug
}
}
}
time-zone Europe/Paris
traffic-analysis {
dpi disable
export disable
}
}
/* Warning: Do not remove the following line. */
/* === vyatta-config-version: "config-management@1:conntrack@1:cron@1:dhcp-relay@1:dhcp-server@4:firewall@5:ipsec@5:nat@3:qos@1:quagga@2:suspend@1:system@4:ubnt-pptp@1:ubnt-udapi-server@1:ubnt-unms@1:ubnt-util@1:vrrp@1:vyatta-netflow@1:webgui@1:webproxy@1:zone-policy@1" === */
/* Release version: v2.0.8-hotfix.1.5278088.200305.1641 */
En remplaçant :
- YY:YY:YY:YY:YY:YY : Mac Livebox
- XX:XX:XX:XX:XX:XX.... : La valeur calculée par
https://jsfiddle.net/kgersen/3mnsc6wy/- Ne pas oublier de marquer le port sur votre switch avec le VLAN 840 pour le décodeur et d'activer l'IGMP snooping
Nommer le fichier new.config.boot et le copier sur l'ER dans /tmp puis ;
configure
load /tmp/new.config.boot
commit
save
Pour vous connecter à l'ER: ubnt/ubnt
Voici ce que cela donne:

Merci à tous les contributeurs qui m'ont permis de mettre en place cette configuration :
fttmeh, zoc, kgersen, nanostra et aux autres que j'ai pu oublier.
Merci pour vos retours.