Je n'aborde pas la partie du marquage du cos à 6, il faut soit utiliser le dhclient modifié de zoc soit utiliser un switch qui marque le cos des trames dhcp à la volée.
Config largement basée, pour la vulgarisation des changements récents, sur le boulot de skelettor dispo ici :
https://gitlab.com/skelettor/orange-isp-erl/tree/masterhttps://lafibre.info/remplacer-livebox/en-cours-remplacer-sa-livebox-par-un-routeur-ubiquiti-edgemax/msg607546/#msg607546(sauf que dans la config il laisse le décodeur tv sur son lan et pas derrière la livebox, dans la config dessous tout [tel et tv] est derrière la livebox)
L'option 90 (rfc3118-auth) est à créer avec son fti Orange.
Ici la quote du post de expliquant la façon dont il est généré :
Salut les loulous.
Il se trouve que j'avais reversé la partie concernée du firmware Livebox 3 qui génère cette option DHCP, je vais donc vous faire part de mes notes.
- Les 11 premiers octets sont mis à 0 : il s'agit d'un emplacement de la taille de l'en-tête de l'option 90 DHCP standard, telle que définie dans la RFC 3118. Ces paramètres n'étant pas utilisés, ils sont mis à 0.
- Ensuite, il s'agit d'une séquence de champs TLV (type-length-value). Autrement dit, il s'agit d'une séquence de paramètres propriétaires définis par Orange qui suivent ce motif : 1 octet de type, 1 octet de taille (comprenant les octets de type, de taille et de valeur), suivi d'un certain nombre d'octets de valeur en fonction de la taille.
- D'abord, il y a cette séquence d'octets définie en dur dans le binaire, je ne sais pas à quoi elle correspond : 1a0900000558010341 (1a est donc le type et 09 la taille)
- Ensuite, un autre champ fixe dont la valeur est "A", peut-être une version de format... : 010341 (01 est le type, 03 est la taille, 41 est la valeur "A" en ASCII)
- Ensuite, un champ dont le type est étrangement aussi 01, et la valeur est l'identifiant PPP Orange (appelons-le USERNAME), je ne vous fais pas de dessin : 010dXXXXXXXXXXXXXXXXXXXXXX
- Ensuite, un champ dont le type est 3c, qui contient 16 octets aléatoires (appelons-les RANDSTRING) est généré par le client DHCP si je me souviens bien : 3c12XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
- Enfin, un champ dont le type est 03, et qui contient 17 octets de valeur :
- 1 octet aléatoire, appelons-le RANDCHAR, immédiatement suivi de
- 16 octets qui sont un hash MD5 généré avec la formule suivante : MD5(RANDCHAR + PASSWORD + RANDSTRING), où PASSWORD est le mot de passe PPP
Voilà pour mes notes les kidz ! Amusez-vous bien
Sinon kgersen a codé un script dispo en ligne pour le générer en entrant directement les infos dans la webpage :
https://jsfiddle.net/kgersen/3mnsc6wy/embedded/result/Le DHCP User Class Option est à adapter selon son modèle de livebox (modem).
Je quote le boulot sur github :
Line 160 : DHCP User Class Option
For Livebox 4 :
client-option "send user-class "\053FSVDSL_livebox.Internet.softathome.Livebox4";"
For Livebox 3 :
client-option "send user-class "+FSVDSL_livebox.Internet.softathome.Livebox3";"
Pour la DHCP Option 120, DHCP Option 125 et DHCP Option domain search, je recommande de faire monter au moins une fois la connexion dhcp de l'erl et de récupérer les info dans le fichier /run/dhclient_eth1_832.leases puis de les coller dans les champs qui vont bien. Pour certaines d'entre elles, il y a de fortes chances qu'elles soient déjà identiques aux valeurs de la config.
Optionnel : dans le DHCP client-identifier option, il faut entrer la mac address de sa livebox (modem).
client-option "send dhcp-client-identifier 1:YY:YY:YY:YY:YY:YY;"
Optionnel : mettre l'adresse mac de la livebox dans le static mapping du dhcp livebox.lan.
static-mapping Livebox {
ip-address 192.168.254.1
mac-address YY:YY:YY:YY:YY:YY
J'ai vérifié un minimum le code pour éviter les erreurs d'indentation mais il n'est pas impossible qu'il en reste que donc que la config ne passe pas où pas entièrement.
firewall {
all-ping enable
broadcast-ping disable
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"
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 3 {
action drop
description "Drop invalid state"
log disable
state {
invalid enable
}
}
}
receive-redirects disable
send-redirects enable
source-validation disable
syn-cookies enable
}
interfaces {
ethernet eth0 {
address 192.168.2.254/24
description home.lan
duplex auto
speed auto
}
ethernet eth1 {
description ISP
duplex auto
speed auto
vif 832 {
address dhcp
description ISP_DATA
dhcp-options {
client-option "send vendor-class-identifier "sagem";"
client-option "request subnet-mask, routers, domain-name-servers, domain-name, broadcast-address, dhcp-lease-time, dhcp-renewal-time, dhcp-rebinding-time, rfc3118-auth, domain-search, SIP, V-I;"
client-option "send rfc3118-auth 00:00:00:00:00:00:00:00:00:00:00:1a:09:00:00:05:58:01:03:41:01:0d:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:3c:12:sa:lt:sa:lt:sa:lt:sa:lt:sa:lt:sa:lt:sa:lt:sa:lt:03:13:zz:ha:sh:ha:sh:ha:sh:ha:sh:ha:sh:ha:sh:ha:sh:ha:sh;"
client-option "send user-class "\053FSVDSL_livebox.Internet.softathome.Livebox4";"
client-option "send dhcp-client-identifier 1:YY:YY:YY:YY:YY:YY;"
default-route update
default-route-distance 210
global-option "option rfc3118-auth code 90 = string;"
name-server update
}
egress-qos "0:0 1:0 2:0 3:0 4:0 5:0 6:6 7:0"
firewall {
in {
name WAN_IN
}
local {
name WAN_LOCAL
}
}
}
vif 840 {
address 192.168.255.254/32
description ISP_TV_STREAM
egress-qos "0:5 1:5 2:5 3:5 4:5 5:5 6:5 7:5"
}
}
ethernet eth2 {
description LIVEBOX
duplex auto
speed auto
vif 832 {
address 192.168.254.254/24
description LIVEBOX_DATA
}
vif 840 {
address 100.64.0.2/30
description LIVEBOX_MULTICAST
}
}
loopback lo {
}
}
port-forward {
auto-firewall enable
hairpin-nat disable
wan-interface eth1.832
}
protocols {
igmp-proxy {
interface eth0 {
role disabled
threshold 1
}
interface eth1 {
role disabled
threshold 1
}
interface eth1.832 {
role disabled
threshold 1
}
interface eth1.840 {
alt-subnet 0.0.0.0/0
role upstream
threshold 1
}
interface eth2 {
role disabled
threshold 1
}
interface eth2.832 {
role disabled
threshold 1
}
interface eth2.840 {
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 home.lan {
authoritative enable
subnet 192.168.2.0/24 {
default-router 192.168.2.254
dns-server 192.168.2.254
lease 86400
start 192.168.2.1 {
stop 192.168.2.99
}
}
}
shared-network-name livebox.lan {
authoritative enable
subnet 192.168.254.0/24 {
default-router 192.168.254.254
dns-server 80.10.246.136
dns-server 81.253.149.6
lease 86400
start 192.168.254.1 {
stop 192.168.254.9
}
static-mapping Livebox {
ip-address 192.168.254.1
mac-address YY:YY:YY:YY:YY:YY
}
subnet-parameters "option SIP 0:6:73:62:63:74:33:67:3:50:55:54:6:61:63:63:65:73:73:11:6f:72:61:6e:67:65:2d:6d:75:6c:74:69:6d:65:64:69:61:3:6e:65:74:0;"
subnet-parameters "option Vendor-specific 00:00:05:58:0c:01:0a:00:00:00:00:00:ff:ff:ff:ff:ff;"
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 domain-search "XXX.access.orange-multimedia.net.";"
subnet-parameters "option domain-name "orange.fr";"
}
}
static-arp disable
use-dnsmasq disable
}
dns {
forwarding {
cache-size 1024
listen-on eth0
listen-on eth2
}
}
gui {
http-port 80
https-port 443
listen-address 192.168.2.254
older-ciphers disable
}
nat {
rule 5001 {
description "MASQ:WAN"
log disable
outbound-interface eth1.832
protocol all
type masquerade
}
}
ssh {
listen-address 192.168.2.254
port 22
protocol-version v2
}
ubnt-discover {
disable
}
unms {
disable
}
}
system {
config-management {
commit-revisions 5
}
host-name erl
name-server 9.9.9.9
name-server 1.1.1.1
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
ipv4 {
forwarding enable
pppoe enable
vlan enable
}
}
package {
repository wheezy {
components "main contrib non-free"
distribution wheezy
password ""
url http://http.us.debian.org/debian
username ""
}
repository wheezy-security {
components main
distribution wheezy/updates
password ""
url http://security.debian.org
username ""
}
}
syslog {
global {
facility all {
level notice
}
facility protocols {
level warning
}
}
}
time-zone Europe/Paris
traffic-analysis {
dpi disable
export enable
}
}