<-- Tuto historique, pour version 19.07 et inférieur ! Afin de remplacer votre Livebox par un routeur tournant sous Openwrt 19.07.X -->----------#Edit 22/08/20: Fichiers et explication pour mise en service immédiate dispo sur Github => https://github.com/ubune/openwrt-livebox #----------Edit 27/09/18: Changement au niveau de l'authentification (option 90).Edit 02/12/18: Changement eth0, ipv6 et igmpproxy préparation version 18.06.02.Edit 31/01/19: Openwrt 18.06.2 est désormais disponible => https://downloads.openwrt.org/releases/18.06.2/ Edit 12/02/19: Maj du tuto pour la version 18.06 désormais, avec les fichiers en pièce jointe permettant une installation très rapide.Edit 16/02/20: Tuto compatible avec la version 19.07
Info => https://openwrt.org/releases/19.07/startInformations sur Openwrt =>Dans ce tutoriel j'ai utilisé
Openwrt 18.06.02, il est le fruit de nombreux échange sur le Topic LEDE (ex futur d'openwrt), merci à tous ceux qui ont contribué pour qu'on en arrive là.
Pour récupérer votre version, il faut identifier le soc de votre routeur, exemple sur un ubiquiti edgerouterx =>
https://openwrt.org/toh/hwdata/ubiquiti/ubiquiti_edgerouter_xOn retrouve dans target : ramips et subtarget : mt7621.
Une fois ces éléments identifiés, on peut aller sur
https://downloads.openwrt.org pour récupérer la version correspondante.
Si vous êtes déja sur Lede ou Openwrt, vous pouvez utiliser en cli la commande
sysupgrade pour passer en 19+, il suffit de copier en scp l'archive téléchargée
sysupgradeXXX.tar (dans /tmp par exemple) et de faire la commande
sysupgrade chemindufichier.tar vous pouvez aussi mettre à jour via
LUCI (l'interface web) si vous l'aviez installé.
Présentation rapide de l'architecture Openwrt :Initialement, le routeur possède les interfaces suivantes :
wan (eth1.2)
br-lan (bridge de l'eth0.1 et de vos interfaces wifi).
(attention, certains routeurs n'ont qu'un seul eth, c'est le cas du edgerouterX par exemple, dans ce cas on reste sur eth0 pour le wan ET le lan (eth0.1 => vlan 1 => lan, eth0.2 vlan 2 => wan).
L'interface Wan est en dhcp client et l'interface Lan(ou br-lan si wifi) est configurée en 192.168.1.1/24 avec serveur dhcp actif, il est atteignable en ssh user
root mdp vide.
Sur Openwrt, vos fichiers de configurations se retrouvent dans
/etc/config, par exemple par défaut on retrouve :
/etc/config/network pour la configuration des interfaces réseau, des routes statiques et du Switch (gestion vlan).
/etc/config/Firewall pour la configuration du parefeu, du nat, des zones etc.
/etc/config/dhcp pour la config du serveur dhcp (RA ipv6...).
Si vous installez un nouveau package son fichier de configuration va donc apparaître dans /etc/config, pour luci ça sera /etc/config/uhttpd et pour igmpproxy ça sera le fichier /etc/config/igmpproxy par exemple.
PARTIE 1 : INTERNET V4+V6 =>Préparation du Routeur :Avant de débuter la configuration permettant de faire fonctionner votre routeur à la place de votre livebox, il faut ajouter certains packages :
Obligatoire :iptables-mod-ipopt pour la gestion dscp d'iptables.
igmpproxy pour router le flux multicast (votre routeur agira comme proxy, afin de distribuer le flux multicast à votre livebox TV).
ip-full pour le script plus bas (mapping vlan).
tcpdump (pour tracer les flux si ça ne fonctionne pas).
Vivement Conseillé : Luci => Interface web (luci-ssl si vous voulez être en https).
Nano => éditeur de fichier (que je trouve personnellement + facile que vi).
Utile :xxd => Pour faire la conversion hexa de votre fti.
iperf => Pour faire des tests de débit depuis le Routeur <=> Serveur/MachineX.
iftop => Pour voir la consommation de flux en temps reel des machines (classé par utilisation, on visualise en cli).
luci-app-adblock => blocage des sites (ads, malware...) avec des listes maj par la communauté.
Pour installer ces packages, il faut que votre routeur ait accès à Internet, au départ vous pouvez mettre la patte wan du routeur derrière votre livebox (qui est en dhcp client par défaut), et donc pour les installer :
Votre pc sur l'interface lan du routeur puis :
ssh root@192.168.1.1 (terminal linux/mac os, ou depuis le powershell sur windows 10, sinon putty).
opkg updateopkg install iptables-mod-ipopt igmpproxy ip-full luci-ssl tcpdump xxdINTERNET IPV4 :Pour pouvoir faire fonctionner le wan Orange nous avons besoin :
- De votre identifiant de connexion que l'on va mettre en hexa, dans l'exemple du tuto, on va utiliser (définit au hasard):
fti/qpq8888- De configurer l'interface Wan en utilisant le VLAN 832 en dhcp =>
/etc/config/network- De configurer le "switch" pour taguer le vlan 832, il faut taguer sur l'interface wan ET sur le cpu qui correspond à l'ETH (détail plus bas). =>
/etc/config/network- D'envoyer les bonnes options dhcp permettant l'authentification auprès d'orange =>
/etc/config/network- D'envoyer tout le flux qui ne passe pas par iptables en priorité CS6 (en faite ça sera juste le dhcpV4) =>
/etc/vlanprio.sh - Gérer les files pour éviter les pb de débit (on remet bien le flux normal avec des priorités cohérentes) =>
iptables custom rules dans le fichier /etc/firewall.userIdentifiant de connexion en héxa:Depuis le routeur (package xxd précédemment installé) => vous pouvez exécuter la commande suivante en remplaçant 'fti/qpq8888' par votre identifiant :
Commande : echo -n 'fti/qpq8888' | xxd -p
Résultat :
6674692f71707138383838Ou sinon sur :
https://www.rapidtables.com/convert/number/ascii-to-hex.htmlExemple : fti/qpq8888 = 66 74 69 2f 71 70 71 38 38 38 38 (il faudra supprimer les espace dans le tuto).
Fichier /etc/config/networkSur nos routeurs, nous avons (généralement) 2 interfaces Eth ayant chacune un CPU correspondant, l'un pour le lan (eth0.1 par défaut), l'autre pour le port wan (eth1.2 par défaut).
Ce qu'il faut comprendre, c'est que pour la gestion des vlan, il faut obligatoirement qu'un vlan associé à l'Eth en question soit aussi taggué vers son CPU.
Exemple le VLAN 832 qui est donc sur mon ETH1, doit être en taggué sur l'ETH1 mais AUSSI sur le CPU.
Dans le fichier network on doit retrouver :
La config Switch :config switch_vlan
option device 'switch0'
option vlan '2' # index
option ports '4t 6t' # t pour tag, on tag sur le port 4 (qui est le port wan) et le 6 c'est mon cpu eth1.
option vid '832' # id du vlanLa gestion des VLANs est plus clair sur Luci => :
La config ETH1 :config interface 'wan'
option ifname 'eth1.832' #eth1 vlan 832
option proto 'dhcp' # en dhcp client
option broadcast '1'
option vendorid 'sagem' # on envoi le vendor id sagem
option reqopts '1 15 28 51 58 59 90' # liste des options demandées
option sendopts '77:2b46535644534c5f6c697665626f782e496e7465726e65742e736f66746174686f6d652e4c697665626f7834 90:00000000000000000000001a0900000558010341010d6674692f71707138383838' #
option 77 + 90 (fti)Le script vlanprio.sh (il inclut aussi la partie TV qu'on verra + tard, il doit être exécuté à chaque démarrage du routeur ou changement sur une interface) :
On va le créer dans /etc, et lui ajouter le droit d’exécution.
nano /etc/vlanprio.sh (il faut copier le contenu en bleu qui suit).
chmod a+x /etc/vlanprio.sh
#!/bin/sh
set -x
for i in 0 1 2 3 4 5 6 7; do
ip link set eth1.832 type vlan egress $i:$i >/dev/null ## Chaque file devient en priorité $numdefile
ip link set eth1.840 type vlan egress $i:5 >/dev/null ## tout en prio 5 sur le vlan 840
done
ip link set eth1.832 type vlan egress 1:0 >/dev/null ## La file (1) était donc en prio 1 on la repasse à 0, ça deviendra (via IPTABLES) la nouvelle file par défaut.
ip link set eth1.832 type vlan egress 0:6 >/dev/null ## Tout le flux devient en prio 6 ! sauf le flux qui passera par IPTABLES (donc juste nos requêtes dhcp)Pour qu'il se lance à chaque boot : on modifie
nano /etc/rc.local =>
sleep 10
ifdown wan # J'ai eu besoin de faire ça pour être sûr d'éviter l'ip privée sur le wan, depuis la maj 18.02.
sh /etc/vlanprio.sh
ifup wan
exit 0
Fichier /etc/config/firewallconfig zone
option name 'wan'
option output 'ACCEPT'
option masq '1' #masquerade, on nat le flux ipv4 sortant du wan par l'ip public reçu sur eth1.
option input 'DROP'
option forward 'DROP'
option network 'wan'
option family 'ipv4'
config rule
option name 'Allow-DHCP-Renew'
option src 'wan'
option proto 'udp'
option dest_port '68'
option target 'ACCEPT'
option family 'ipv4'
config include
option path '/etc/firewall.user'
iptables custom rulesPour gérer les files correctement il faut lancer au démarrage :
Chez moi si je laisse tout le flux en CS6, j'ai 14Mbps descendant et 0.8Mbps montant maximum, que ce soit en V4 ET en V6, (945/300 avec les rules).Il faut ajouter ces règle dans le fichier /etc/firewall.user :
iptables -t mangle -A POSTROUTING -j CLASSIFY --set-class 0000:0001 ## En gros tout le flux sortant passe dans la file 1 qui est en prio 0
iptables -t mangle -A POSTROUTING -p icmp -j CLASSIFY --set-class 0000:0006 ##On passe le flux icmp dans la file 6 qui est en prio 6
iptables -t mangle -A POSTROUTING -p igmp -j CLASSIFY --set-class 0000:0006 ## On passe le flux igmp (celui qui part vers eth1.832) dans la file 6 qui est en prio 6
iptables -t mangle -A POSTROUTING -o eth1.832 -p udp --dport 67 -j CLASSIFY --set-class 0000:0006 ## On passe le flux dhcp dans la file 6 qui est en prio 6, necessaire pour le DHCP Renew
#la même chose en ipv6 (avec cette fois le dhcpv6)
ip6tables -t mangle -A POSTROUTING -j CLASSIFY --set-class 0000:0001
ip6tables -t mangle -A POSTROUTING -p ipv6-icmp -j CLASSIFY --set-class 0000:0006
ip6tables -t mangle -A POSTROUTING -p udp --dport 547 -j CLASSIFY --set-class 0000:0006
Une fois tout ceci fait, vous pouvez supprimer votre livebox et connecter directement votre nouveau routeur openwrt sur l'ont orange. Vous devriez recevoir votre ip publique sur l'eth1.832, la route par défaut et les dns Orange, et comme dans la config zone wan nous avions activé le nat, vous devriez avoir accès à internet depuis votre pc qui est raccordé sur le lan.
commande utile pour vérifier tout ça :
ifstatus wan =>
- 1 = Votre ip WAN
- 2 = Votre route par défaut
- 3 = Dns d'orange
INTERNET + Firewall IPV6 :Pour IPV6, après avoir envoyé les bonnes options vous recevez votre prefixe (un /56 donc 256 /64 possibles) et la passerelle par défaut (l'ip link local du prochain routeur Orange). Dhcpv6 sera uniquement utilisé pour recevoir le préfixe (IA_PD).
Pour recevoir le tout nous avons besoin (Merci à Simon Topic LEDE, ainsi que Sywolf pour l'intégration dans le fichier network) :
D'envoyer les options 11, 15 et 16
/etc/config/networkOn demande les options 11,17,23 et 24
/etc/config/network[On désactive l'envoi d'un hostname dans etc/config/network (Openwrt 18.06.02 obligatoire)
[On désactive le support de l'opcode reconfigure dans etc/config/network (Openwrt 18.06.02 obligatoire)
L'option 15 est l'user-class et doit contenir la même valeur que pour DHCPv4 cette fois elle est écrite en ASCII ici et non en hexa comme précédemment.
L'option 16 est le vendor id (sagem).
L'option 11 est notre identifiant (la seule chose que vous devez personnaliser).
Coté Firewall il faut aussi :
Autoriser dhcpv6 pour le wan6 (
ATTENTION, si vous ne personnalisez pas la zone wan en family ipv4 uniquement, il faut l'autoriser sur le
wan et non
wan6.
Pour cela nous allons donc modifier notre fichier
/etc/config/networkPour rappel l'identifiant fti du tuto en hexa (la seule chose que vous devez personnaliser) :
6674692f71707138383838------------------------------------------
Puis votre interface wan6 dans /etc/config/network =>
config interface 'wan6'
option ifname 'eth1.832'
option proto 'dhcpv6'
option reqprefix 'auto'
option reqaddress 'none'
option defaultreqopts '0'
option sendopts '11:00000000000000000000001a0900000558010341010d6674692f71707138383838 15:FSVDSL_livebox.Internet.softathome.livebox4 16:0000040e0005736167656d'
option reqopts '11 17 23 24'
option noclientfqdn '1' # OPENWRT 18.06.02 et plus récent
option noacceptreconfig '1'#OPENWRT 18.06.02 et plus récent
Votre Firewall doit avoir ce paramétrage des zones + ces règles :
config zone
option name 'wan'
option output 'ACCEPT'
option masq '1'
option input 'DROP'
option forward 'DROP'
option network 'wan'
option family 'ipv4'
config zone
option name 'wanipv6'
option network 'wan6'
option output 'ACCEPT'
option forward 'DROP'
option family 'ipv6'
option input 'DROP'
config rule
option name 'Allow-DHCPv6'
option proto 'udp'
option src_ip 'fc00::/6'
option dest_ip 'fc00::/6'
option dest_port '546'
option family 'ipv6'
option target 'ACCEPT'
option src 'wanipv6'
config rule
option name 'Allow-MLD'
option proto 'icmp'
option src_ip 'fe80::/10'
list icmp_type '130/0'
list icmp_type '131/0'
list icmp_type '132/0'
list icmp_type '143/0'
option family 'ipv6'
option target 'ACCEPT'
option src 'wanipv6'
config rule
option name 'Allow-ICMPv6-Input'
option proto 'icmp'
list icmp_type 'echo-request'
list icmp_type 'echo-reply'
list icmp_type 'destination-unreachable'
list icmp_type 'packet-too-big'
list icmp_type 'time-exceeded'
list icmp_type 'bad-header'
list icmp_type 'unknown-header-type'
list icmp_type 'router-solicitation'
list icmp_type 'neighbour-solicitation'
list icmp_type 'router-advertisement'
list icmp_type 'neighbour-advertisement'
option limit '1000/sec'
option family 'ipv6'
option target 'ACCEPT'
option src 'wanipv6'
config rule
option name 'Allow-ICMPv6-Forward'
option dest '*'
option proto 'icmp'
list icmp_type 'echo-request'
list icmp_type 'echo-reply'
list icmp_type 'destination-unreachable'
list icmp_type 'packet-too-big'
list icmp_type 'time-exceeded'
list icmp_type 'bad-header'
list icmp_type 'unknown-header-type'
option limit '1000/sec'
option family 'ipv6'
option target 'ACCEPT'
option src 'wanipv6'Désormais, vous devriez recevoir votre préfixe ipv6 + route par défaut V6 :
La commande pour vérifier si c'est le cas :
ifstatus wan6 =>
1 = Votre préfixe ipv6
2 = Votre route par défaut ipv6.
3 =
Dns d'orange IPV6, ah ba non, Orange n'a toujours pas de dns IPV6
On peut distribuer le premier /64 du /56du préfixe obtenu au lan :
Dans le fichier /etc/config/dhcp :
config dhcp 'lan'
option interface 'lan'
option start '100'
option leasetime '4h'
option ra 'server'
list dhcp_option '6,192.168.1.1'
option limit '30'
Votre interface Lan dans /etc/config/network doit désormais ressembler à ça :
config interface 'lan'
option type 'bridge' #chez moi c'est un bridge car j'ai un SSID wifi + l'eth0
option proto 'static'
option ipaddr '192.168.1.1'
option netmask '255.255.255.0'
option delegate '0'
option mtu '1500'
option ifname 'eth0.1'
option ip6assign '64' # Pour que le routeur s'attribue une adresse du premier /64
Et voila ! Vous devriez être IPV6 Ready un test sur http://ipv6-test.com/ et vous obtiendrez un score de 19/20 (si vous avez laissez le forward icmpv6 et que votre machine accepte l'icmpv6).
Et voila, la partie Internet devrait désormais être pleinement opérationnelle, un petit speedtest =>
Pour les detenteurs de Raspberry, voir le post de bulle21 ici => https://lafibre.info/remplacer-livebox/remplacement-de-la-livebox-par-un-routeur-openwrt-18-dhcp-v4v6-tv/msg779570/#msg779570