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 ^^