tc

Linux
Publiée le 2026-10-07 05:38:14
Illustration Linux pour la commande tc

tc

# Nettoie toutes les règles de trafic existantes sur l'interface eth0 pour repartir de zéro
sudo tc qdisc del dev eth0 root 2> /dev/null

# Ajoute la discipline racine (root) en utilisant HTB, qui est un bon point de départ
sudo tc qdisc add dev eth0 root handle 1: htb default 10

# Définit une classe principale pour tout le trafic sortant
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 10mbit

# Crée une sous-classe spécifique pour le trafic critique (ex: VoIP)
sudo tc class add dev eth0 parent 1:1 classid 1:2 htb rate 50kbit ceil 50kbit

# Ajoute un filtre qui va diriger tout le trafic TCP vers la classe critique (1:2)
sudo tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip dport 5060 flowid 1:2

# Ajoute un filtre pour le reste du trafic IP qui va dans la classe par défaut (1:1)
sudo tc filter add dev eth0 protocol ip parent 1: prio 2 u32 match ip dst 0.0.0.0/0 flowid 1:1

# Applique une limitation de bande passante sur le trafic critique (ex: pour simuler un goulot d'étranglement)
sudo tc qdisc add dev eth0 parent 1:2 handle 10: netem delay 5ms loss 1%

# Ajoute une discipline de file d'attente par défaut au niveau racine
sudo tc qdisc add dev eth0 root handle 10: sfq perturb 10

# Définit un débit maximal pour le trafic général (par exemple, 90% du total)
sudo tc class change dev eth0 parent 1:1 classid 1:3 htb rate 9mbit ceil 9mbit

# Ajoute une règle de limitation de bande passante plus stricte sur un port spécifique (ex: HTTP)
sudo tc filter add dev eth0 protocol ip parent 1: prio 5 u32 match ip dport 80 flowid 1:3

# Vérifie les règles et classes que tu viens de mettre en place
tc qdisc show dev eth0

# Affiche la structure des filtres actifs sur l'interface
tc filter show dev eth0

# Supprime toutes les règles pour nettoyer complètement le système (attention !)
sudo tc qdisc del dev eth0 root