1
Remplacer la LiveBox par un routeur / Remplacement de la Livebox par un routeur Openwrt
« Dernier message par basilix le Aujourd'hui à 14:10:02 »Salut !
La documentation de OpenWrt est chaotique. Mais finalement, je pense avoir trouvé la bonne façon de lancer le script tc qui va définir la CoS et le DSCP.
Il semblerait que ce soit à l'activation de l'interface qu'il faille le lancer. Donc, Hotplug semble être ce qu'il faut utiliser. Je le verrais bien intégré via le
mécanisme d'extension Hotplug.
Par exemple, on peut reprendre le script de @fatpat en substituant DEVICE par INTERFACE sans ajouter le Shebang #!/bin/sh.
La documentation de OpenWrt est chaotique. Mais finalement, je pense avoir trouvé la bonne façon de lancer le script tc qui va définir la CoS et le DSCP.
Il semblerait que ce soit à l'activation de l'interface qu'il faille le lancer. Donc, Hotplug semble être ce qu'il faut utiliser. Je le verrais bien intégré via le
mécanisme d'extension Hotplug.
- On définit un Hotplug personnalisé.
Code: (/etc/hotplug.d/iface/90-online) [Sélectionner]
if [ "${INTERFACE}" = "loopback" ]
then exit 0
fi
if [ "${ACTION}" != "ifup" ] \
&& [ "${ACTION}" != "ifupdate" ]
then exit 0
fi
if [ "${ACTION}" = "ifupdate" ] \
&& [ -z "${IFUPDATE_ADDRESSES}" ] \
&& [ -z "${IFUPDATE_DATA}" ]
then exit 0
fi
hotplug-call online
- On intègre le script dans le répertoire correspondant.
Code: (/etc/hotplug.d/online/10-wan-tc) [Sélectionner]
. /lib/functions/network.sh
network_flush_cache
network_find_wan6 WAN_IF || network_find_wan WAN_IF
if [ "${WAN_IF}" != "${INTERFACE}" ]
then exit 0
fi
[...]
Par exemple, on peut reprendre le script de @fatpat en substituant DEVICE par INTERFACE sans ajouter le Shebang #!/bin/sh.
merci pour ton retour, en te lisant, ça m'a fait creuser un peu plus et j'ai opté pour l'utilisation de tc à la place de nftables pour set les priorités.
de la sorte, je set en prio6 uniquement ce qu'il faut et dans la conf egress-qa-map de l'interface on a qqc de logique. Ca supprime la règle nftables par defaut en priorité 1 qui est ensuite remappé en COS0. De plus ça permet d'être explicite sur la règle ARP.
mon fichier /etc/config/tc-cos6.shCode: [Sélectionner]#!/bin/sh
DEVICE="${1}"
# Configure a PRIO qdisc on a VLAN interface.
tc qdisc replace dev "${DEVICE}" root handle 1: prio
tc filter del dev "${DEVICE}"
# ARP
tc filter add dev "${DEVICE}" parent 1: prio 1 protocol 0x806 u32 \
match u32 0 0 \
action skbedit priority 0:6
# DHCPv4
tc filter add dev "${DEVICE}" parent 1: prio 2 u32 \
match ip ihl 5 0xf \
match u16 0x0000 0x1fff at 6 \
match ip protocol 17 0xff \
match ip sport 68 0xffff \
match ip dport 67 0xffff \
action skbedit priority 0:6 pipe \
action pedit munge ip tos set 0xc0 retain 0xfc pipe \
action csum ip4h
# DHCPv6
tc filter add dev "${DEVICE}" parent 1: prio 3 protocol ipv6 u32 \
match ip6 dst fe00::/7 \
match ip6 protocol 17 0xff \
match ip6 sport 546 0xffff \
match ip6 dport 547 0xffff \
action skbedit priority 0:6 pipe \
action pedit ex munge ip6 traffic_class set 0xc0 retain 0xfc
# ICMPv6 Router Solicitation (133) to multicast (ff02::/16)
tc filter add dev "${DEVICE}" parent 1: prio 4 protocol ipv6 u32 \
match ip6 dst ff02::/16 \
match ip6 protocol 58 0xff \
match ip6 icmp_type 133 0xff \
action skbedit priority 0:6 pipe \
action pedit ex munge ip6 traffic_class set 0xc0 retain 0xfc
# ICMPv6 Neighbor Solicitation (135) to orange dhcp server (fe80::ba0:bab/128)
tc filter add dev "${DEVICE}" parent 1: prio 5 protocol ipv6 u32 \
match ip6 dst fe80::ba0:bab/128 \
match ip6 protocol 58 0xff \
match ip6 icmp_type 135 0xff \
action skbedit priority 0:6 pipe \
action pedit ex munge ip6 traffic_class set 0xc0 retain 0xfc
# ICMPv6 Neighbor Advertisement (136) to orange dhcp server (fe80::ba0:bab/128)
tc filter add dev "${DEVICE}" parent 1: prio 6 protocol ipv6 u32 \
match ip6 dst fe80::ba0:bab/128 \
match ip6 protocol 58 0xff \
match ip6 icmp_type 136 0xff \
action skbedit priority 0:6 pipe \
action pedit ex munge ip6 traffic_class set 0xc0 retain 0xfc
comme ça plus de règle nftables spécifiques et on simplifie la conf de l'interface:Code: [Sélectionner]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'
option macaddr 'xx:xx:xx:xx:xx:xx'