Linux
Utilise le marquage des paquets routés. La marque sera utilisé par tc (traffic control) pour peupler ses files de priorisation
#!/bin/bash
iface=enp0s3
#Re init
tc qdisc del dev $iface root
iptables -t mangle -F
#Initialisation du marquage des paquets
iptables -t mangle -A POSTROUTING -p icmp -o $iface -j MARK --set-mark 10
iptables -t mangle -A POSTROUTING -p udp --dport 53 -o $iface -j MARK --set-mark 20
iptables -t mangle -A POSTROUTING -p udp --dport 123 -o $iface -j MARK --set-mark 20
iptables -t mangle -A POSTROUTING -p udp --dport 161:162 -o $iface -j MARK --set-mark 20
iptables -t mangle -A POSTROUTING -p udp --dport 53 -o $iface -j MARK --set-mark 20
iptables -t mangle -A POSTROUTING -p tcp --dport 22 -o $iface -j MARK --set-mark 30
iptables -t mangle -A POSTROUTING -p tcp --dport 80 -o $iface -j MARK --set-mark 40
iptables -t mangle -A POSTROUTING -p tcp --dport 443 -o $iface -j MARK --set-mark 40
iptables -t mangle -A POSTROUTING -p tcp --dport 20:21 -o $iface -j MARK --set-mark 40
iptables -t mangle -A POSTROUTING -p tcp --dport 143 -o $iface -j MARK --set-mark 40
iptables -t mangle -A POSTROUTING -p tcp --dport 993 -o $iface -j MARK --set-mark 40
#Creation arbre ayant pour racine $iface
tc qdisc add dev $iface root handle 1: htb default 99 #marquage du traffic a 99 par defaut
#creation classe pour marquage, correspondant aux branches de l'arbre
tc class add dev $iface parent 1:0 classid 1:5 htb rate 10mbit mtu 1500
#rate doit etre superieure ou egal a la somme des regles y correspondant
#creation des regles pour l'application de classe correspondant aux feuilles des branches
# on declare les classes pour chacune des marque que l'on veut utliliser:
# on leur donne un ordre de priorite, et une largeur de bande passante
tc class add dev $iface parent 1:5 classid 1:10 htb rate 500kbit ceil 10mbit prio 1
tc class add dev $iface parent 1:5 classid 1:20 htb rate 500kbit ceil 10mbit prio 2
tc class add dev $iface parent 1:5 classid 1:30 htb rate 1mbit ceil 10mbit prio 3
tc class add dev $iface parent 1:5 classid 1:40 htb rate 3mbit ceil 10mbit prio 4
tc class add dev $iface parent 1:5 classid 1:99 htb rate 5mbit ceil 10mbit prio 5
#association des flus aux classes
tc filter add dev $iface parent 1: protocol ip prio 1 handle 10 fw flowid 1:10
tc filter add dev $iface parent 1: protocol ip prio 2 handle 20 fw flowid 1:20
tc filter add dev $iface parent 1: protocol ip prio 3 handle 30 fw flowid 1:30
tc filter add dev $iface parent 1: protocol ip prio 4 handle 40 fw flowid 1:40