Dans ma configuration, le trafic TX multidiffusion a été marqué par iptables, mais le routage de stratégie à l'aide de nouvelles tables de routage n'a jamais fonctionné. Bien que cela ait fonctionné pour les paquets TX unicast (redirigeant les paquets d'origine de eth0 vers eth5). L'utilisation de tc i pourrait obtenir du trafic mcast eth0 vers eth5. L'adresse src mac et src ip sont modifiées par rapport à eth5, donc cela ne créera pas de problèmes d'apprentissage du commutateur. Toute la prise en charge du noyau pour la planification des paquets du noyau CONFIG_NET_SCHED doit être activée
Ci-dessous TRAVAUX pour la redirection du trafic unicast et multicast de eth0 vers eth5
Netfilter peut être utilisé pour interagir directement avec la structure représentant un paquet dans le noyau. Cette structure, le sk_buff, contient un champ appelé «__u32 nfmark» que nous allons modifier. TC lira ensuite cette valeur pour sélectionner la classe de destination d'un paquet.
IP_ADDR_ETH0 = ifconfig eth0 | grep 'inet addr'| cut -d ':' -f 2 | cut -d ' ' -f 1 | tr -d '\n'
iptables -t mangle -A OUTPUT -s $ {IP_ADDR_ETH0} -p udp --match multiport --dports 329,330 -o eth0 -j MARK --set-mark 2
Je vais créer une arborescence qui représente notre politique de planification et qui utilise le qdisc PRIO (planificateur de paquets) (peut en essayer d'autres disponibles). qdiscs attachés à la racine d'un périphérique
tc qdisc add dev eth0 root handle 15: prio
Maintenant, d'un côté, une politique de mise en forme du trafic et de l'autre côté, le marquage des paquets. Pour connecter les deux, nous avons besoin d'un filtre.
refer man tc-mirred (8): L'action mirred permet la mise en miroir de paquets (copie) ou la redirection (vol) du paquet qu'elle reçoit. La mise en miroir est ce que l'on appelle parfois Switch Port Analyzer (SPAN) et qui est couramment utilisée pour analyser et / ou déboguer les flux.
refer man tc-fw (8): fw - filtre de contrôle du trafic fwmark le filtre fw permet de classer les paquets en fonction d'un fwmark préalablement défini par iptables. S'il est identique à la «poignée» du filtre, le filtre correspond. iptables permet de marquer des paquets uniques avec la cible MARK, ou des connexions entières en utilisant CONNMARK.
MAC_ADDR_ETH1 = cat /sys/class/net/eth1/address
IP_ADDR_ETH1 = ifconfig eth1 | grep 'inet addr'| cut -d ':' -f 2 | cut -d ' ' -f 1 | tr -d '\n'
filtre tc ajouter dev eth0 parent 15: 0 protocole ip prio 1 gérer 0x2 fw action pedit ex munge eth src set $ {MAC_ADDR_ETH1} pipe \ action pedit ex munge ip src set $ {IP_ADDR_ETH1} pipe \ action mirred egress redirect dev eth1
afficher les règles définies ci-dessus: tc qdisc afficher dev eth0 filtre tc afficher dev eth0
supprimer / annuler les règles définies ci-dessus: tc qdisc del dev eth0 root