Auteur Sujet: Remplacement de la Livebox par un routeur Openwrt  (Lu 235492 fois)

0 Membres et 1 Invité sur ce sujet

ubune

  • Abonné Orange Fibre
  • *
  • Messages: 315
Remplacement de la Livebox par un routeur Openwrt
« le: 03 juillet 2018 à 09:17:47 »
<-- Tutoriel vous permettant de remplacer votre Livebox par un routeur avec système d'exploitation Linux Openwrt. -->

   

Edit 11/11/2022 : Fichiers et explication pour mise en service immédiate dispo sur Github => https://github.com/ubune/openwrt-livebox ;)
Edit 12/02/2023 : Astuce, comment utiliser imagebuilder pour générer votre .img qui contient tous vos packages et votre /etc fonctionnel ! => ici
Edit 18/05/2023 : Attention, revérifiez votre fichier network, il y a eu beaucoup de changement sur les options envoyées (ipv4 ET ipv6) suite au nouveau durcissement de l'authentification auprès d'Orange.
Edit 20/10/2023 : Compatible avec la version 23.05 ;)
Info => https://openwrt.org/

Prerequis :

Avoir un ONT Orange ou un ONT perso bien connecté/auth avec l'OLT (voir section ont du forum), personnellement, j'ai celui-ci => Leox LXT-010H-D
Avoir récupéré ses identifiants FTI.
Un routeur compatible openwrt et avec assez de perf pour gérer les 2Gbps (sauf si abonnement sosh ^^').

Informations sur Openwrt =>

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_x
On 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.

Présentation rapide de l'architecture Openwrt :

Sur Openwrt, vos fichiers de configurations se trouvent dans /etc/config, par exemple par défaut on retrouve :
/etc/config/network pour la configuration des interfaces réseau, des routes statiques...
/etc/config/Firewall pour la configuration du parefeu, du nat, des zones etc.
/etc/config/dhcp pour la config des serveurs dhcp/dhcpv6 et les annonces RA ipv6...).

Nativement, l'interface Wan est en dhcp (client) et l'interface Lan (ou br-lan) est configurée en 192.168.1.1/24 en dhcp (serveur) et avec annonce d'un préfixe ULA, le routeur est joignable en ssh/https
user root mdp vide.


PARTIE 1 : INTERNET

Récupérez votre login/pass FTI, et direction https://jsfiddle.net/kgersen/3mnsc6wy/ (Merci !) pour générer votre option 90.
Dans ce tuto, nous simulons le login suivant :
fti/qpq8888
12345622
Qui donne :
00000000000000000000001a090000055801034101116674692F6674692F717071383838383c1231323334353637383930313233343536031341302f6f2d83fc857d7829d65ddea775d7
Pour remplacer la livebox par votre propre routeur nous avons besoin :

- De votre option 90 générée grâce au script de kgersen.
- De configurer l'interface Wan en utilisant le VLAN 832 en dhcp => /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 nftables en priorité L2 (802.1p) CS6 => /etc/config/network (egress mapping) 
- Gérer les files pour éviter les pbs de débit (on remet bien notre traffic internet avec des priorités cohérentes) => nft rules
- De l'adresse mac de votre livebox (ou d'une adresse mac fixe, qui sera associé à l'interface vlan 832 et aux options "client ID" envoyées.


nano /etc/config/network

Dans le fichier network on doit retrouver :
Config Lan :

config interface 'lan'
        option proto 'static'
        option ipaddr '192.168.1.1'
        option netmask '255.255.255.0'
        option ip6assign '64'
        option ip6ifaceid '::bad'
        option device 'br-lan'

Config eth0.832 avec mapping :

Attention, n'hésitez pas à creer la sous interface wan "vlan832" depuis l'interface web (luci) et ensuite d'aller voir votre fichier network, car en fonction du modèle de routeur ce n'est pas exactement le même nom d'interface (intf physique).
Dans notre cas, le wan du routeur est "eth0", mais chez certains, il se nomme "wan" ou "eth1".

config device
option name 'eth0.832'
option type '8021q'
option ifname 'eth0'
option vid '832'
        list egress_qos_mapping '1:0'
        list egress_qos_mapping '0:6'
        list egress_qos_mapping '6:6'
        option macaddr 'A2:34:56:78:19:26' # Si vous voulez garder la même ip publique et préfixe que votre livebox lors du changement, remplacez A23456781926 par l'adresse mac de votre livebox, ne pas oublier le client id plus bas qui doit avoir la meme valeur que l'adresse mac de votre interface wan !


Config Wan ipv4 :

config interface 'wan4'
option proto 'dhcp'
option device 'eth0.832'
option hostname '*'
option broadcast '1'
        option norelease '1' #si vous ne voulez pas changer d'ip publique à chaque reboot ;)
option vendorid 'sagem'
option reqopts '1 3 6 15 28 51 58 59 90 119 125'
option sendopts '77:2b46535644534c5f6c697665626f782e496e7465726e65742e736f66746174686f6d652e4c697665626f7836 90:00000000000000000000001a090000055801034101116674692F6674692F717071383838383c1231323334353637383930313233343536031341302f6f2d83fc857d7829d65ddea775d7'
        option clientid '01A23456781926' # Doit correspondre à 01 + l'adresse mac sans les : de votre interface vlan 832 !

Config Wan ipv6
config interface 'wan6'
option proto 'dhcpv6'
option device 'eth0.832'
option reqprefix 'auto'
option reqaddress 'none'
option defaultreqopts '0'
        option sendopts '11:00000000000000000000001a090000055801034101116674692F6674692F717071383838383c1231323334353637383930313233343536031341302f6f2d83fc857d7829d65ddea775d7 15:FSVDSL_livebox.Internet.softathome.Livebox6 16:0000040e0005736167656d 17:000005580006000e495056365f524551554553544544'
option reqopts '11 17 23 24'
option noclientfqdn '1'
option noacceptreconfig '1'
        option clientid '00030001A23456781926' # Doit correspondre à 00030001 + l'adresse mac sans les : de votre interface vlan 832 !

NFT rules, on créé un fichier contenant nos règles (pour le remapping l2 des flux), qui sera lancé en même temps que le firewall
nano /etc/nftables.d/nft-prio6-rules.include

oifname "eth0.832" counter meta priority set 0:1
oifname "eth0.832" ip protocol icmp counter meta priority set 0:6
oifname "eth0.832" ip protocol igmp counter meta priority set 0:6
oifname "eth0.832" udp dport 67 counter meta priority set 0:6
oifname "eth0.832" udp dport 547 counter meta priority set 0:6
oifname "eth0.832" ip protocol icmpv6 counter meta priority set 0:6

nano /etc/config/firewall

config include 'orange_rules'
option enabled '1'
option type 'nftables'
option path '/etc/nftables.d/nft-prio6-rules.include'
option position 'chain-append'
option chain 'mangle_postrouting'

Zone Wan
config zone
option name 'wan'
option output 'ACCEPT'
option family 'ipv4' ## Zone ipv4 only pour ne pas mélanger les règles sur les deux mondes
list network 'wan4'
option forward 'DROP'
option masq '1' ## On remplace l'ip source "privée" des flux sortant sur internet par l'ip publique reçu sur le wan4.
option input 'DROP'
Zone Wan6
config zone
option name 'wan6'
option input 'DROP'
option output 'ACCEPT'
option forward 'DROP'
option family 'ipv6' ## Zone ipv6 only pour ne pas mélanger les règles sur les deux mondes
list network 'wan6'
list device 'eth0.832'
Config des Rules :

config rule
option name 'Allow-DHCP-Renew'
option src 'wan'
option proto 'udp'
option dest_port '68'
option target 'ACCEPT'
option family 'ipv4'

config rule
option name 'Allow-Ping'
option src 'wan'
option proto 'icmp'
option icmp_type 'echo-request'
option family 'ipv4'
option target 'ACCEPT'

config rule
option name 'Allow-IGMP'
option src 'wan'
option proto 'igmp'
option family 'ipv4'
option target 'ACCEPT'

config rule
option name 'Allow-DHCPv6'
option proto 'udp'
option dest_port '546'
option family 'ipv6'
option target 'ACCEPT'
option src 'wan6'
list src_ip 'fc00::/6'
list dest_ip 'fc00::/6'

config rule
option name 'Allow-MLD'
option proto 'icmp'
option family 'ipv6'
option target 'ACCEPT'
option src 'wan6'
list src_ip 'fe80::/10'

config rule
option name 'Allow-ICMPv6-Input'
option proto 'icmp'
option limit '1000/sec'
option family 'ipv6'
option target 'ACCEPT'
list icmp_type 'bad-header'
list icmp_type 'destination-unreachable'
list icmp_type 'echo-reply'
list icmp_type 'echo-request'
list icmp_type 'neighbour-advertisement'
list icmp_type 'neighbour-solicitation'
list icmp_type 'packet-too-big'
list icmp_type 'router-advertisement'
list icmp_type 'router-solicitation'
list icmp_type 'time-exceeded'
list icmp_type 'unknown-header-type'
option src 'wan6'

config rule
option name 'Allow-ICMPv6-Forward'
option dest '*'
option proto 'icmp'
option limit '1000/sec'
option family 'ipv6'
option target 'ACCEPT'
list icmp_type 'bad-header'
list icmp_type 'destination-unreachable'
list icmp_type 'echo-reply'
list icmp_type 'echo-request'
list icmp_type 'packet-too-big'
list icmp_type 'time-exceeded'
        list icmp_type 'parameter-problem'
list icmp_type 'unknown-header-type'
option src 'wan6'

Config Forwarding :
config forwarding
option src 'lan'
option dest 'wan'

config forwarding
option src 'lan'
option dest 'wan6'

config forwarding #Attention, ici c'est en mode freebox, on autorise le flux wan6 to lan
option src 'wan6'
option dest 'lan'

DHCPv4 + RA (ipv6, Router Advertisement), pour le LAN
nano /etc/config/dhcp

Ici on ne fait pas de dhcpv6, uniquement du RA, on annonce le premier /64 du /56 au lan (pour l'autoconfiguration des machines) + serveur dhcpv4.
config dhcp 'lan'
option interface 'lan'
option start '100'
option limit '59'
option leasetime '12h'
option dhcpv4 'server'
option ra 'server'
list ra_flags 'none'

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 ainsi que votre /56 sur l'eth0.832.

Commandes utiles pour vérifier tout ça  :
ifstatus wan4
ifstatus wan6

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 la rule forward icmpv6 et que votre machine accepte l'icmpv6).

PARTIE 2 : TV VLAN 840
Installation d'igmp proxy :

opkg update && opkg install igmpproxy
On modifie le fichier /etc/config/igmpproxy

config igmpproxy
option quickleave 1
# option verbose [0-3](none, minimal[default], more, maximum)

config phyint
    option network tvorange
    option zone wanTV # 18.06.02
    option direction upstream
        list altnet "0.0.0.0/0"

config phyint lan
    option network lan
    option zone lan # 18.06.02
    option direction downstream

On modifie le fichier /etc/config/network pour créer l'interface vlan 840, et ajouter l'igmp snooping sur le lan.
config device
        option name 'eth0.840'
        option type '8021q'
        option ifname 'eth0'
        option vid '840'
        list egress_qos_mapping '0:5'
        list egress_qos_mapping '1:5'
        list egress_qos_mapping '2:5'
        list egress_qos_mapping '3:5'
        list egress_qos_mapping '4:5'
        list egress_qos_mapping '5:5'
        list egress_qos_mapping '6:5'
        list egress_qos_mapping '7:5'

config interface 'tvorange'
        option device 'eth0.840'
        option proto 'static'
        option ipaddr '192.168.255.254'
        option netmask '255.255.255.255'
        option delegate '0'

Toujours dans /etc/config/network
On ajoute à la conf lan la ligne suivante :
   option igmp_snooping '1'

On modifie le fichier /etc/config/dhcp pour envoyer les dns d'orange, et l'option 125 :

Pour les "XX", convertissez votre numéro de serie de la livebox tv (ascii vers hex)
Exemple : IA2022323438110 devient 494132303232333233343338313130

Pour les "YY", on prend les 3 premiers octects de la mac, à convertir en Hex également.
Exemple : 08:87:C6:B2:D1:90 soit 0887C6 devient 303838374336
Cet exemple, donnerait : '125,00:00:0d:e9:24:04:06:30:38:38:37:43:36:05:0f:49:41:32:30:32:32:33:32:33:34:33:38:31:31:30:06:09:4c:69:76:65:62:6f:78:20:34'

config dhcp 'lan'
option interface 'lan'
option start '101'
option limit '150'
option leasetime '12h'
option dhcpv4 'server'
option ra 'server'
list ra_flags 'none'
        list dhcp_option '6,81.253.149.10,80.10.246.3'
        list dhcp_option '15,orange.fr'
        list dhcp_option '125,00:00:0d:e9:24:04:06:YY:YY:YY:YY:YY:YY:05:0f:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:06:09:4c:69:76:65:62:6f:78:20:34'

Et pour finir, on modifie le fichier /etc/config/firewall pour créer la zone WanTV et les règles associées :

config zone
option name 'wanTV'
option output 'ACCEPT'
option masq '1'
option network 'tvorange'
option input 'DROP'
option forward 'DROP'
option family 'ipv4'
list device 'eth0.840'

config forwarding
option src 'lan'
option dest 'wanTV'

config rule
option target 'ACCEPT'
option name 'igmp'
option family 'ipv4'
option proto 'igmp'
option src 'wanTV'

config rule
option target 'ACCEPT'
option name 'multicast'
option family 'ipv4'
option proto 'udp'
option src 'wanTV'
option dest 'lan'
option dest_ip '224.0.0.0/4'

Bonus : Script check internet

J'utilise le script suivant, qui me permet de vérifier chaque heure que la connexion internet est ok, sinon mon routeur redemarre automatiquement :

nano /etc/checkinternet.sh
#!/bin/sh
ping -c5 1.1.1.1
if [ $? -eq 0 ]; then
    echo "Internet ok le $(date)" > /root/checkinternet.txt
else
    reboot
fi

Ensuite, on le rend executable et un petit crontab pour l'executer chaque heure :
chmod a+x /etc/checkinternet.sh
crontab -e00 * * * * /etc/checkinternet.sh
Bonus 2 : Script qui check si les rules sont bien chargées

nano /etc/checknftrules.sh
#!/bin/sh
var=$(nft list ruleset | grep "set 0:" | wc -l);
if [ $var -ne 0 ]; then
    echo "nft rules ok le $(date)" > /root/checkrules.txt
else
echo "nft rules corrige par le script le $(date)" >> /root/error-rules.txt
nft add rule inet fw4 mangle_postrouting oifname "eth0.832" counter meta priority set 0:1
nft add rule inet fw4 mangle_postrouting oifname "eth0.832" ip protocol icmp counter meta priority set 0:6
nft add rule inet fw4 mangle_postrouting oifname "eth0.832" ip protocol igmp counter meta priority set 0:6
nft add rule inet fw4 mangle_postrouting oifname "eth0.832" udp dport 67 counter meta priority set 0:6
nft add rule inet fw4 mangle_postrouting oifname "eth0.832" udp dport 547 counter meta priority set 0:6
nft add rule inet fw4 mangle_postrouting oifname "eth0.832" ip protocol icmpv6 counter meta priority set 0:6
fi

chmod a+x /etc/checknftrules.sh
crontab -e
*/5 * * * * /etc/checknftrules.sh
Mon Setup :
- Routeur X86 N5105 4x2.5Gbps
- ONT Leox LXT-010H-D
« Modifié: 25 février 2024 à 16:55:18 par ubune »

ubune

  • Abonné Orange Fibre
  • *
  • Messages: 315
Remplacement de la Livebox par un routeur Openwrt
« Réponse #1 le: 03 juillet 2018 à 09:17:54 »

<-- 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/start


Informations 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_x
On 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 update
opkg install iptables-mod-ipopt igmpproxy ip-full luci-ssl tcpdump xxd


INTERNET 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.user

Identifiant 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 : 6674692f71707138383838

Ou sinon sur : https://www.rapidtables.com/convert/number/ascii-to-hex.html
Exemple : fti/qpq8888 = 66 74 69 2f 71 70 71 38 38 38 38 (il faudra supprimer les espace dans le tuto).

Fichier /etc/config/network

Sur 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 vlan


La 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/firewall

config 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 rules
Pour 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/network
On 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/network
Pour 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
« Modifié: 28 mai 2022 à 14:47:07 par ubune »

ubune

  • Abonné Orange Fibre
  • *
  • Messages: 315
Remplacement de la Livebox par un routeur Openwrt
« Réponse #2 le: 03 juillet 2018 à 17:38:30 »
Partie 2 : TV + REPLAY

Pour être sûr du fonctionnement de la suite, si vous commencez cette partie c'est que vous avez déjà configuré et rendu fonctionnel la partie 1, surtout vérifiez bien que vous avez l'interface eth1.840 dans le script vlanprio.sh

Pour faire simple, avec cette config vous devez brancher le décodeur TV sur le lan port 3 (en pvid vlan 19) et le lan port 4 sera utilisé pour envoyer les 2 vlan sur un autre Switch, dans ce cas on aura pas besoin de s’embêter avec l'igmp snooping.

Pour que cela fonctionne nous allons :

- Configurer une nouvelle interface coté (v)LAN avec serveur dhcp, qui enverra les dns d'orange et qui accueillera votre/vos décodeur TV, dans ma config c'est donc le vlan 19 ( vlantv ).
- Configurer l'interface eth1.840 sur laquelle arrivera le flux igmp, et qui sera routé vers l'interface vlantv (package igmpproxy).
- Configurer le firewall pour gerer (autoriser) ces flux, on va créer une zone wanTV qui contiendra l'eth1.840 et la zone lanTV qui contiendra uniquement l'interface eth0.19 vlanTV.
- Configurer le switch pour les vlan, on va tagguer le vlan 840 sur l'eth1 et le cpu eth1, on tag le vlan 19 sur eth0, et met ce vlan en untagged sur le port 3 pour brancher la box, la config du port 4 c'est pour un cas éventuel liaison vers un switch qui aura une box TV derrière aussi.

Les différents flux de votre box TV :
- Dialogue au travers de l'eth1.840 pour le flux igmp (qui sera routé entres ces interfaces grâce à votre routeur qui agira comme proxy).
- Dialogue au travers de l'eth1.832 pour divers flux (replay, ntp par exemple).


Configuration des nouvelles interfaces :

nano /etc/config/network =>

config interface 'vlantv'
        option proto 'static'
        option ipaddr '192.168.19.254' ## Adressage arbitraire mais j'aime bien la corrélation n°vlan/réseau.
        option netmask '255.255.255.0'
        option ifname 'eth0.19'

config interface 'tvorange'
        option ifname 'eth1.840'
        option proto 'static'
        option ipaddr '192.168.255.254' #Adressage arbitraire
        option netmask '255.255.255.255'
        option delegate '0'


Configuration du serveur DHCP pour l'interface vlantv :

nano /etc/config/dhcp =>

config dhcp 'vlantv'
        option leasetime '12h'
        option interface 'vlantv'
        option start '10'
        option limit '10'
        list dhcp_option '6,81.253.149.10,80.10.246.3'
        list dhcp_option '15,orange.fr'
        list dhcp_option '125,00:00:0d:e9:24:04:06:YY:YY:YY:YY:YY:YY:05:0f:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:06:09:4c:69:76:65:62:6f:78:20:34'


Nouveauté pour le nouveau décodeur TV5, l'option 125 est obligatoire, les Y en Orange c'est les 6 octets correspondant à l'adresse mac de votre livebox routeur, et il faut remplacer les XX:XX par votre numéro de série de livebox routeur, après l'avoir converti en Hexa.



Configuration du Firewall :

nano /etc/config/firewall =>

config zone
        option name 'tv'
        option output 'ACCEPT'
        option network 'vlantv'
        option input 'ACCEPT'
        option forward 'ACCEPT'
        option family 'ipv4'

config zone
        option name 'wanTV'
        option output 'ACCEPT'
        option masq '1'
        option network 'tvorange'
        option input 'DROP'
        option forward 'DROP'
        option family 'ipv4'

config forwarding
        option dest 'wanTV' #On autorise la box tv à sortir sur le wanTV.
        option src 'tv'

config forwarding
        option dest 'wan' #On autorise la box tv à atteindre le flux wan classique (Replay/ntp par exemple).
        option src 'tv'

config rule
        option target 'ACCEPT'
        option name 'igmp' #On autorise le flux IGMP provenant du vlan 840 à destination du routeur.
        option family 'ipv4'
        option proto 'igmp'
        option src 'wanTV'

config rule
        option target 'ACCEPT'
        option name 'multicast' #On autorise le flux multicast provenant du vlan 840 à destination de la zone tv (le vlan TV ou se trouvera le décodeur).
        option family 'ipv4'
        option proto 'udp'
        option src 'wanTV'
        option dest 'tv'
        option dest_ip '224.0.0.0/4'




IGMPPROXY :
Pour installer et lancer automatiquement igmpproxy au démarrage =>

opkg update
opkg install igmpproxy
/etc/ini.d/igmpproxy enable

On va éditer le fichier de configuration d'igmpproxy, attention à bien respecter le nommages des interfaces (sensible à la casse) créés précédemment :

nano /etc/config/igmpproxy=>

config igmpproxy
    option quickleave 1

config phyint
    option network tvorange
    option zone wanTV # 18.06.02
    option direction upstream
        list altnet "0.0.0.0/0"

config phyint lan
    option network vlantv
    option zone tv # 18.06.02
    option direction downstream


Maintenant on le relance : /etc/init.d/igmpproxy restart

Désormais si on fait un more /etc/igmpproxy.conf on va retrouver :

quickleave

phyint eth1.840 upstream ratelimit 0 threshold 1
        altnet 0.0.0.0/0

phyint eth0.19 downstream ratelimit 0 threshold 1


Et voilà, tout devrait fonctionner ;).

Alternatives  :

(TV)

Si vous vouliez avoir la TV sur le LAN :

Changement Firewall :

config rule
        option src      wanTV
        option proto    igmp
        option target   ACCEPT
config rule
        option src      wanTV
        option proto    udp
        option dest     lan
        option dest_ip  224.0.0.0/4
        option target   ACCEPT
        option family   ipv4

config forwarding
        option dest 'lan'
        option src 'wanTV'

Changement igmpproxy :

config igmpproxy
    option quickleave 1

config phyint
    option network tvorange
    option direction upstream
    option zone wanTV
        list altnet "0.0.0.0/0"

config phyint lan
    option network lan
    option zone lan
    option direction downstream

Changement network :

config interface 'lan'
      option igmp_snooping 1

Changement Dns :

Il faut envoyer les dns d'orange sur le lan (ou que votre routeur relaye vers Orange).

Attention, si vous utilisez cette configuration et que votre décodeur est raccordé sur un switch derrière le routeur, il faudra gérer l'igmp snooping dessus (si vous ne voulez pas que le flux TV soit broadcasté).


(Telephone)

Livebox derrière le routeur (pour avoir le téléphone fonctionnel)
Voir les échanges et surtout le post récap de Rhon ici : https://lafibre.info/remplacer-livebox/remplacement-de-la-livebox-par-un-routeur-openwrt-18-dhcp-v4v6-tv/msg589599/#msg589599

Attention, pour les cas ou vous avez un seul eth, ou si vos deux eth ne sont pas isolés, on doit utiliser un switch pour sortir l'interface tel en untagged sur un vlan (exemple 199) et l'associer au vlan 832 sur lequel notre livebox routeur tag (grâce au switch administrable).
Voir mon post récap ici => https://lafibre.info/remplacer-livebox/remplacement-de-la-livebox-par-un-routeur-openwrt-18-dhcp-v4v6-tv/msg639732/#msg639732

« Modifié: 28 mai 2022 à 14:22:51 par ubune »

Sywolf

  • Abonné Orange Fibre
  • *
  • Messages: 17
Remplacement de la Livebox par un routeur Openwrt 18+ (DHCP V4/V6 + TV).
« Réponse #3 le: 30 juillet 2018 à 01:56:39 »
Testé sur wrt3200acm / openwrt 18.06.0-rc2, ça fonctionne merveilleusement bien, et j'ai meme gagné en débit ! :)

Un grand merci pour ce tuto, je galerais avec les vlan / authentification, et la, ça s'est fait en 5 minutes chrono avec ce tuto !!
« Modifié: 30 juillet 2018 à 16:06:56 par Sywolf »

ubune

  • Abonné Orange Fibre
  • *
  • Messages: 315
Remplacement de la Livebox par un routeur Openwrt 18+ (DHCP V4/V6 + TV).
« Réponse #4 le: 30 juillet 2018 à 09:23:01 »
Testé sur wtr3200acm / openwrt 18.06.0-rc2, ça fonctionne merveilleusement bien, et j'ai meme gagné en débit ! :)

Un grand merci pour ce tuto, je galerais avec les vlan / authentification, et la, ça s'est fait en 5 minutes chrono avec ce tuto !!

Merci pour le retour et content que tout fonctionne :).

Dès que j'ai un peu de temps je compléterai la partie TV.

A+

lmn69

  • Abonné Orange Fibre
  • *
  • Messages: 13
  • Lyon 3 (69)
Remplacement de la Livebox par un routeur Openwrt 18+ (DHCP V4/V6 + TV).
« Réponse #5 le: 31 juillet 2018 à 15:03:21 »
    Bonjour,

Êtes-vous sûr que les options DHCP v4 demandées (option reqopts) sont en hexa : 0x01 0x15 0x28 ... ?
Ça fait 1 (Subnet Mask) OK, 21 (Policy Filter), 40 (NIS Domain), 81 (Client FQDN), 88 (BCMCS Controller Domain Name list), 89 (BCMCS Controller IPv4 address option), 144 (GeoLoc) selon le registre de l'IANA
https://www.iana.org/assignments/bootp-dhcp-parameters/bootp-dhcp-parameters.xhtml

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 078
  • Paris (75)
Remplacement de la Livebox par un routeur Openwrt 18+ (DHCP V4/V6 + TV).
« Réponse #6 le: 31 juillet 2018 à 16:25:52 »
merci pour le tuto. je l'ai mis dans l'index global (sujet épinglé).
« Modifié: 31 juillet 2018 à 18:54:04 par kgersen »

Sywolf

  • Abonné Orange Fibre
  • *
  • Messages: 17
Remplacement de la Livebox par un routeur Openwrt 18+ (DHCP V4/V6 + TV).
« Réponse #7 le: 31 juillet 2018 à 21:49:29 »
Bien vu pour les options dhcp ipv4, ça mérite refléxion (mais à priori c'est issue du sniffage de ce que demande la livebox... c'est pas impossible qu'elle demande n'importe quoi)

Sinon j'avais commencé à regarder du coté dhcpv6 et du binaire odhcp6c sous jacent, et il semblerait qu'on puisse lui filer les options plus proprement qu'en modifiant une lib (c'est quand meme un peu crado de modifier une lib, sauf si c'est pour contribuer directement à openwrt ;) )
-x 15 gérable via odhcp6c via "userclass"
-x 16 gérable via odhcp6c via "vendorclass"
-x 11 => OPTION_AUTH => odhcp6c semble pouvoir le gérer via "sendopts:list(string)" (ainsi que les autres options -x, mais si on peut faire propre ;) )
-r sont gérables via "reqopts:list(uinteger)"
-Nnone gérable via "reqaddress"
-P0 gérable via "reqprefix"
-R gérable via "defaultreqopts"
-f non géré
-a non géré

Je n'ai pas encore trouvé comment bien les setter dans la config du network, mais ça va finir par se faire :D

Sywolf

  • Abonné Orange Fibre
  • *
  • Messages: 17
Remplacement de la Livebox par un routeur Openwrt 18+ (DHCP V4/V6 + TV).
« Réponse #8 le: 01 août 2018 à 02:45:50 »
Du coup, pour l'ipv6, tu peux simplifier un peu le tuto :)

Dans la config network, plutot que de la laisser vide, et tout modifier dans la lib :

config interface 'wan6'
        option ifname 'eth1.832'
        option proto 'dhcpv6'
        option defaultreqopts '0'
        option sendopts '11:00000000000000000000006674692f3XXXXXXXXXXXX 15:FSVDSL_livebox.Internet.softathome.livebox3 16:0000040e0005736167656d'
        option reqopts '11 17 23 24'
        option reqaddress 'none'
        option reqprefix '0'

et dans /lib/netifd/proto/dhcpv6.sh, laisser le code d'origine et juste ajouter les options -f et -a.

        proto_export "INTERFACE=$config"                                                                                                                               
        proto_run_command "$config" odhcp6c \                                                                                                                           
                -s /lib/netifd/dhcpv6.script \                                                                                                                         
                $opts -f -a $iface

Apres avoir un peu lu le code de odhcp6c, on peut dire avec certitude que le -f correspond à DHCPV6_CLIENT_FQDN et -a à DHCPV6_ACCEPT_RECONFIGURE, et helas, ce ne sont pas des options (peut etre le client fqdn via l'option 39).  On est donc pour le moment obligé de modifier la lib :/

repo de odhcp6c : https://github.com/openwrt/odhcp6c/blob/master/src/odhcp6c.c
rfc diverse et variée de dhcpv6 : https://www.iana.org/assignments/dhcpv6-parameters/dhcpv6-parameters.xhtml

A voir maintenant, si il existe des petites options qui seraient actives chez orange (je me suis fais ban temporerement à plusieurs reprises en faisant des essais :o)
Et peut etre en supprimer certaines pour l'ipv4.

djgreg13

  • Abonné Orange Fibre
  • *
  • Messages: 43
  • Strasbourg (67)
Remplacement de la Livebox par un routeur Openwrt 18+ (DHCP V4/V6 + TV).
« Réponse #9 le: 01 août 2018 à 10:03:45 »
Hello,

Si j'ai bien suivi le tuto, ça a l'air assez compliqué de remettre la box derrière le routeur, est ce exact ?

Flo_77

  • Abonné Free fibre
  • *
  • Messages: 273
  • MEA77
Remplacement de la Livebox par un routeur Openwrt 18+ (DHCP V4/V6 + TV).
« Réponse #10 le: 01 août 2018 à 11:02:27 »
je me suis fais ban temporerement à plusieurs reprises en faisant des essais :o
Orange bloque la connexion quand on tente de bypasser leur box?  :o

ubune

  • Abonné Orange Fibre
  • *
  • Messages: 315
Remplacement de la Livebox par un routeur Openwrt 18+ (DHCP V4/V6 + TV).
« Réponse #11 le: 01 août 2018 à 11:15:59 »
Merci pour le retour Sywolf, je fais un test ce soir et j'éditerai le tuto en conséquence, openwrt 18.06.0 est disponible :).