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

0 Membres et 1 Invité sur ce sujet

ubune

  • Abonné Orange Fibre
  • *
  • Messages: 317
Remplacement de la Livebox par un routeur Openwrt
« Réponse #600 le: 12 septembre 2022 à 08:30:14 »
Merci pour ta réponse. Le problème c'est que je suis en ADSL donc pas de VLAN à définir.

Sans compter que le eth0.832 est déjà occupé par la LB pour le téléphone. Ça va d'ailleurs être chaud lors du passage à la fibre, j'ai presque plus de place dans mon meuble pour caser un switch et le media converter.

Ou alors je change de routeur.

Si adsl (sans vlans) tu devrais, du coup, associer ton interface pppoe dans la zone.

PlqnK

  • Abonné RED by SFR fibre FttH
  • *
  • Messages: 12
Remplacement de la Livebox par un routeur Openwrt
« Réponse #601 le: 12 septembre 2022 à 16:02:22 »
Bon la 22.03 est enfin en version stable donc je vais enfin pouvoir mettre à jour mon routeur !

J'ai lu les nouvelles instructions concernant nftables et il y a un truc que je ne comprends pas.

Au niveau de la configuration du device vous mappez la priorité netfilter 1 vers un VLAN PCP de 0 et la priorité netfilter 0 vers un VLAN PCP de 6 :
config device
option name 'eth0.832'
option type '8021q'
option ifname 'eth0'
option vid '832'
list egress_qos_mapping '0:0'
list egress_qos_mapping '2:2'
list egress_qos_mapping '3:3'
list egress_qos_mapping '4:4'
list egress_qos_mapping '5:5'
list egress_qos_mapping '6:6'
list egress_qos_mapping '7:7'
list egress_qos_mapping '1:0'
list egress_qos_mapping '0:6'

Puis dans les règles nftables vous créez une règle qui passe tout le trafic par défaut vers la priorité netfilter 1 :
nft add rule inet fw4 mangle_postrouting oifname "eth0.832" counter meta priority set 0:1

Pour ensuite avoir des règles spécifiques pour les protocoles ICMP, IGMP, DHCP, DHCPv6 et ICMPv6 :
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

Si on prends l'exemple d'une trame standard (qui n'est aucun des protocoles listés précédemment) :
1. Elle arrive sur le routeur, le noyau lui applique une priorité netfilter par défaut : 0
2. Elle fini par passer par la chaîne postrouting de la table mangle qui change cette priorité netfilter : 0->1
3. Elle arrive sur le device, le noyau map la priorité netfilter à une valeur PCP : 1->0

En gros on a changé sa priorité netfilter pour au final retomber sur un PCP de 0, je ne vois pas trop l'intérêt pour le coup. Pire on fait travailler le routeur pour rien, on demande au noyau de changer la priorité de toutes les trames qui passent.

Pourquoi ne pas simplifier la configuration comme ceci :
config device
option name 'eth0.832'
option type '8021q'
option ifname 'eth0'
option vid '832'
list egress_qos_mapping '0:0'
list egress_qos_mapping '6:6'

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

En gros avec ça, on ne touche pas au trafic par défaut. On laisse la priorité netfilter par défaut à 0 pour toutes les trames. Cette priorité est mappée à une valeur PCP de 0, ce qui est le cas par défaut. Ça ne demande aucun temps de calcul supplémentaire au routeur.

Pour le trafic qu'on veut changer (ICMP, IGMP, DHCP, DHCPv6 et ICMPv6) on demande à nftables de changer la priorité netfilter des trames à 6. Cette priorité est mappée à une valeur PCP de 6, ce qu'Orange veut pour récupérer une IPv4 et un préfixe IPv6.

Voilà, je me demandais si j'oubliais quelque chose qui fait que la solution que je propose ne fonctionnerait pas ou pas ! De toute façon je vais sûrement tester ça ce soir et je reviendrais donner des nouvelles. Mais si quelqu'un à une réponse avant ça me permettrait de ne pas perdre de temps ce soir à tester inutilement une solution qui ne fonctionne pas ^^

zoc

  • Abonné Orange Fibre
  • *
  • Messages: 4 293
  • Antibes (06) / Mercury (73)
Remplacement de la Livebox par un routeur Openwrt
« Réponse #602 le: 12 septembre 2022 à 16:14:35 »
Je ne connais pas bien nftables et donc s'il est sujet aux mêmes limitations concernant les sockets RAW, mais en fait avec iptables il est impossible de matcher les paquets DHCP IPv4 du client DHCP (en IPv6 c'est différent, il est possible de faire un client sans utiliser de socket RAW) => Pour DHCPv4, Il est donc obligatoire de mapper la prio noyau 0 vers PCP6 vu qu'aucune règle iptables ne pourra changer la prio noyau. Le reste des règles découle de cette obligation pour remettre le traffic bulk en PCP0, puis les autres protocole qui le nécessitent en prio 6 (entre nous, inutile pour ICMP et IGMP, Orange s'en fout, même dans les zones ou PCP6 est obligatoire pour le DHCP).

Accessoirement, les règles qui tentent de matcher le dport 67 et 547 en fw4 ne servent IMO à rien (toujours pour la même raison).
 

renaud07

  • Abonné Orange adsl
  • *
  • Messages: 3 397
Remplacement de la Livebox par un routeur Openwrt
« Réponse #603 le: 12 septembre 2022 à 16:25:06 »
Si adsl (sans vlans) tu devrais, du coup, associer ton interface pppoe dans la zone.

Ah ok, donc je dois faire un truc comme ça ? (je ne suis plus en pppoe)
option name 'wan6'
option input 'DROP'
option output 'ACCEPT'
option forward 'DROP'
option family 'ipv6'
list network 'WAN6_DHCP'
        list device 'dsl0'

PlqnK

  • Abonné RED by SFR fibre FttH
  • *
  • Messages: 12
Remplacement de la Livebox par un routeur Openwrt
« Réponse #604 le: 12 septembre 2022 à 16:30:06 »
Je ne connais pas bien nftables et donc s'il est sujet aux mêmes limitations concernant les sockets RAW, mais en fait avec iptables il est impossible de matcher les paquets DHCP IPv4 du client DHCP (en IPv6 c'est différent, il est possible de faire un client sans utiliser de socket RAW) => Pour DHCPv4, Il est donc obligatoire de mapper la prio noyau 0 vers PCP6 vu qu'aucune règle iptables ne pourra changer la prio noyau. Le reste des règles découle de cette obligation pour remettre le traffic bulk en PCP0, puis les autres protocole qui le nécessitent en prio 6 (entre nous, inutile pour ICMP et IGMP, Orange s'en fout, même dans les zones ou PCP6 est obligatoire pour le DHCP).

Accessoirement, les règles qui tentent de matcher le dport 67 et 547 en fw4 ne servent IMO à rien (toujours pour la même raison).

OK je me souvenais de la limitation d'iptables concernant les trames DHCP mais vu que les nouvelles instructions essayent de matcher ces trames là je me suis dit que nftables réglait le problème, mais si c'est pas le cas je comprends mieux.

Personnellement ça fait un moment que j'utilise 'tc' pour modifier les priorités netfilter car celui-ci peut matcher les trames DHCP du client DHCPv4 d'OpenWrt et donc éviter de devoir modifier la priorité de toutes les trames.

J'ai jamais posté cette solution par manque de temps. Le problème potentiel de cette solution c'est qu'elle risque d'interférer avec le module SQM d'OpenWrt, mais personnellement je ne l'utilise pas donc ça ne me gène pas !

Je testerais les deux ce soir et je posterais les résultats.

Merci pour ta réponse en tout cas !

ubune

  • Abonné Orange Fibre
  • *
  • Messages: 317
Remplacement de la Livebox par un routeur Openwrt
« Réponse #605 le: 12 septembre 2022 à 16:41:49 »
Accessoirement, les règles qui tentent de matcher le dport 67 et 547 en fw4 ne servent IMO à rien (toujours pour la même raison).

En faite la règle dport67 est necessaire, mais seulement pour le renew ! qui lui passe bien par fw3/fw4.

cf screenshot

renaud07

  • Abonné Orange adsl
  • *
  • Messages: 3 397
Remplacement de la Livebox par un routeur Openwrt
« Réponse #606 le: 12 septembre 2022 à 16:56:06 »
Ah ok, donc je dois faire un truc comme ça ? (je ne suis plus en pppoe)
option name 'wan6'
option input 'DROP'
option output 'ACCEPT'
option forward 'DROP'
option family 'ipv6'
list network 'WAN6_DHCP'
        list device 'dsl0'

Je viens d'essayer, ajouter dsl0 n'a aucun effet. Bref, c'est pas bien grave.

Fuli10

  • Abonné Free fibre
  • *
  • Messages: 1 006
  • Conflans Sainte Honorine (78)
Remplacement de la Livebox par un routeur Openwrt
« Réponse #607 le: 13 septembre 2022 à 13:40:42 »
OK je me souvenais de la limitation d'iptables concernant les trames DHCP mais vu que les nouvelles instructions essayent de matcher ces trames là je me suis dit que nftables réglait le problème, mais si c'est pas le cas je comprends mieux.
...
Je testerais les deux ce soir et je posterais les résultats.

Merci pour ta réponse en tout cas !
Hello
Est-ce que la règle simplifié fonctionne du coup avec nftables ?

PlqnK

  • Abonné RED by SFR fibre FttH
  • *
  • Messages: 12
Remplacement de la Livebox par un routeur Openwrt
« Réponse #608 le: 13 septembre 2022 à 16:39:00 »
Hello !

La règle "simplifiée" n'a rien à voir avec nftables/iptables, tout se passe avec l'outil 'tc' qui configure le packet scheduler de Linux. Je n'ai d'ailleurs rien inventé, j'étais tombé sur l'excellent blog de Vincent Bernat qui a mis en place cette méthode pour son routeur "pur" Linux : https://vincent.bernat.ch/fr/blog/2019-orange-livebox-linux je n'ai fait que l'adapter à OpenWrt.

J'ai fait la MAJ 22.03 hier sur mon TP-Link Archer C7 v2, j'ai appliquée la configuration qui suit et ça fonctionne !

Je précise que je n'ai fait que quelques tests vite fait, j'ai voulu remonter toute ma config à la main cette fois-ci et ça m'a pris du temps donc j'ai pas encore tout testé. Mais mes speedtests préliminaires me permettent bien d'obtenir mes 300/300 en single et multi stream avec le flow offload d'activé. Malheureusement je ne peux pas benchmark plus que ça vu que j'atteint le plafond de mon offre et que j'ai un peu la flemme de tester la version nftables pour comparer.

Tagging du VLAN 832 sur le port physique WAN et l'interface eth0 :

uci set network.@switch_vlan[1].vlan='832'
uci set network.@switch_vlan[1].vid='832'
uci set network.@switch_vlan[1].ports='1t 6t'
uci commit
/etc/init.d/network restart

Configuration des mappings PCP egress sur la sous-interface eth0.832 :

uci add network device
uci set network.@device[1].name='eth0.832'
uci set network.@device[1].type='8021q'
uci set network.@device[1].ifname='eth0'
uci set network.@device[1].vid='832'
uci add_list network.@device[1].egress_qos_mapping='0:0'
uci add_list network.@device[1].egress_qos_mapping='6:6'
uci commit
/etc/init.d/network restart

Configuration DHCP/DHCPv6 sur les interfaces WAN et WAN6 :

uci set network.wan.proto='dhcp'
uci set network.wan.device='eth0.832'
uci set network.wan.broadcast='1'
uci set network.wan.macaddr='XX:XX:XX:XX:XX:XX'
uci set network.wan.hostname='*'
uci set network.wan.clientid='xxxxxxxxxxxx'
uci set network.wan.vendorid='sagem'
uci set network.wan.reqopts='1 3 6 15 28 51 58 59 90'
uci set network.wan.sendopts='77:xxxxxxxxxxxxxxxxxxxxx 90:yyyyyyyyyyyyyyyyyyyyyyyy'
uci set network.wan6.proto='dhcpv6'
uci set network.wan6.device='eth0.832'
uci set network.wan6.macaddr='XX:XX:XX:XX:XX:XX'
uci set network.wan6.reqaddress='none'
uci set network.wan6.reqprefix='auto'
uci set network.wan6.reqopts='11 17 23 24'
uci set network.wan6.sendopts='11:yyyyyyyyyyyyyyyyyyyyyyyy 15:FSVDSL_livebox.Internet.softathome.livebox4 16:0000040e0005736167656d'
uci set network.wan6.noclientfqdn='1'
uci set network.wan6.noacceptreconfig='1'
uci commit

(Je rajoute des configurations de requêtes qui ne sont pas obligatoire, comme le clone de l'adresse MAC de ma Livebox. C'est au cas où ces paramètres soient requis par Orange un jour.)

Script de changement de priorité netfilter :

#!/bin/sh
# Purpose: Change WAN egress ARP, DHCPv4, IGMP, ICMP, DHCPv6 and ICMPv6 traffic
#          netfilter priority to a value of '6' in order to be mapped to a
#          802.1q PCP value of '6' later which is required by the french ISP
#          "Orange" to obtain a public IPv4 address and an IPv6 prefix.
# Usage: This script expects a virtual subinterface name as the first and only
#        argument.
#        It's primarily made to be used on OpenWrt and called from an hotplug
#        event script.
# Author: Victor Bouvier-Deleau (PlqnK)
# Adapted from: Vincent Bernat (MTU Ninja)
#               https://vincent.bernat.ch/fr/blog/2019-orange-livebox-linux
# License: This script is available under the 3-Clause BSD License.

WAN_DATA_DEVICE="${1}"

# Configure a PRIO qdisc on WAN "data" interface.
tc qdisc replace dev "${WAN_DATA_DEVICE}" root handle 1: prio
tc filter del dev "${WAN_DATA_DEVICE}"

# DHCP (raw sockets, do not specify "protocol ip")
tc filter add dev "${WAN_DATA_DEVICE}" parent 1: prio 1 u32 \
  match ip protocol 17 ff \
  match ip dport 67 ffff \
  action skbedit priority 0:6

# ARP
tc filter add dev "${WAN_DATA_DEVICE}" parent 1: prio 2 protocol 0x806 u32 \
  match u32 0 0 \
  action skbedit priority 0:6

# IGMP
tc filter add dev "${WAN_DATA_DEVICE}" parent 1: prio 3 protocol ip u32 \
  match ip protocol 2 ff \
  action skbedit priority 0:6

# ICMP
tc filter add dev "${WAN_DATA_DEVICE}" parent 1: prio 4 protocol ip u32 \
  match ip protocol 1 ff \
  action skbedit priority 0:6

# DHCPv6
tc filter add dev "${WAN_DATA_DEVICE}" parent 1: prio 5 protocol ipv6 u32 \
  match ip6 protocol 17 ff \
  match ip6 dport 547 ffff \
  action skbedit priority 0:6

# ICMPv6
tc filter add dev "${WAN_DATA_DEVICE}" parent 1: prio 6 protocol ipv6 u32 \
  match ip6 protocol 58 ff \
  action skbedit priority 0:6

"Installé" comme ceci :

mkdir /etc/scripts && cd /etc/scripts
vi wan_tc_egress_priorities.sh # Copier/coller le contenu du script
chmod +x wan_tc_egress_priorities.sh

Script hotplug pour appeler le script précédent à chaque changement d'état de l'interface WAN/WAN6 :

WAN_DATA_DEVICE=eth0.832

[ "${ACTION}" = "ifup" -a "${DEVICE}" = "${WAN_DATA_DEVICE}" ] && {
  logger -t hotplug "Configuring WAN tc filters due to ${ACTION} of ${INTERFACE} (${DEVICE})"
  sh /etc/scripts/wan_tc_egress_priorities.sh "${DEVICE}"
}

"Installé" comme ceci :

cd /etc/hotplug.d/iface
vi 10-wan-tc # Copier/coller le contenu du script
chmod +x 10-wan-tc
« Modifié: 15 septembre 2022 à 10:26:37 par PlqnK »

tucs

  • Abonné Free fibre
  • *
  • Messages: 55
  • Paris 11ème (75)
Remplacement de la Livebox par un routeur Openwrt
« Réponse #609 le: 15 septembre 2022 à 09:41:01 »
Configuration du VLAN sur l'interface WAN :

uci set network.@switch_vlan[1].vlan='832'
uci set network.@switch_vlan[1].vid='832'
uci set network.@switch_vlan[1].ports='1t 6t'
uci commit
/etc/init.d/network restart

Configuration des mappings PCP sur l'interface WAN :

uci add network device
uci set network.@device[1].name='eth0.832'
uci set network.@device[1].type='8021q'
uci set network.@device[1].ifname='eth0'
uci set network.@device[1].vid='832'
uci add_list network.@device[1].egress_qos_mapping='0:0'
uci add_list network.@device[1].egress_qos_mapping='6:6'
uci commit
/etc/init.d/network restart


Je m'intéresse à openwrt et je n'y connais pas grand chose. Je regardais la configuration qui fonctionne. Je me demandais la nécessité de tag avec le vlan 832 au niveau du switch "Configuration du VLAN sur l'interface WAN" alors c'est fait déjà fait au niveau du wan "Configuration des mappings PCP sur l'interface WAN"?

PlqnK

  • Abonné RED by SFR fibre FttH
  • *
  • Messages: 12
Remplacement de la Livebox par un routeur Openwrt
« Réponse #610 le: 15 septembre 2022 à 10:20:05 »
Alors, je ne suis pas un pro d'OpenWrt mais de ce que je comprends le routeur dispose de 2 interfaces physiques. Une reliée au port physique WAN (eth0 sur mon routeur) et une reliée au switch physique (eth1 sur mon routeur).

Bien que l'interface eth0 est reliée au port WAN, celui-ci "apparait" comme un port du switch "virtuel" d'OpenWrt. Il est donc nécessaire de configurer le switch pour tagger le port physique et l'interface eth0. C'est ce que fait la première partie.

La deuxième partie créer un device eth0.832 pour pouvoir gérer le VLAN 832 sur l'interface eth0.

Il me semble que c'est spécifique à OpenWrt et son "module" swconfig. Pour les routeurs qui sont passé de swconfig à DSA le fonctionnement ressemble plus à un Linux classique, tu créer simplement une sous-interface eth0.832 et tu tag le VLAN 832 sur le port WAN du bridge br0.

N'hésitez pas à me corriger si je me trompe !

J'ai renommé les étapes de mon post précédent pour que ce soit plus clair.

bebertdk

  • Abonné Orange Fibre
  • *
  • Messages: 3
Remplacement de la Livebox par un routeur Openwrt
« Réponse #611 le: 17 septembre 2022 à 19:16:15 »
Bonjour soucis avec decodeur UHD et non v4.

Routeur utilisé cudy wr1300, version 22.03

J'ai utilisé la configuration de la premiere page pour la configuration et le décodeur est sur le lan (2 ports physique , un pour le wan et un pour le lan)
Les flux HD passe de temps en temps par contre ceux HD+ , n'ont pas l'air de passer, une idée ?
Merci
« Modifié: 18 septembre 2022 à 23:20:05 par bebertdk »