Bonjour,
Comme le titre l'indique, j'essaye simplement de limiter la bande passante utilisable dans un reseau local. Ca ne marche pas du tout. J'ai une ADSL 3.6 Mbps et pour de raisons indépendantes de ma volonté (je ne suis pas pour mais bon ...) on m'impose de limiter à 512 kbps le down et 128 kbps l'upload. Je me suis donc renseigner sur google et ai trouvé que la commande tc permettait de limiter la bande passante employée (en l'employant sur une passerelle, ce que je fait)
Voici donc mes scripts et morceau de script :
1° /etc/network/tc_limit.sh :
et voici la partie de /etc/network/iptables_config.sh pour marquer les paquets :#!/bin/bash
TC=/sbin/tc
DNLD=512Kbit # Limite de download
DWEIGHT=51Kbit # coefficient de DOWNLOAD (Weight Factor) ~ 1/10 of DOWNLOAD Limit
UPLD=128KBit # Limite d'upload Limit
UWEIGHT=13Kbit # Coefficient d'UPLOAD (Weight Factor)
tc_start() {
$TC qdisc add dev eth1 root handle 11: cbq bandwidth 100Mbit avpkt 1000 mpu 64
$TC class add dev eth1 parent 11:0 classid 11:1 cbq rate $DNLD weight $DWEIGHT allot 1514 prio 1 avpkt 1000 bounded
$TC filter add dev eth1 parent 11:0 protocol ip handle 4 fw flowid 11:1
$TC qdisc add dev eth0 root handle 10: cbq bandwidth 10Mbit avpkt 1000 mpu 64
$TC class add dev eth0 parent 10:0 classid 10:1 cbq rate $UPLD weight $UWEIGHT allot 1514 prio 1 avpkt 1000 bounded
$TC filter add dev eth0 parent 10:0 protocol ip handle 3 fw flowid 10:1
}
tc_stop() {
$TC qdisc del dev eth0 root
$TC qdisc del dev eth1 root
}
case "$1" in
start)
echo -n "Starting bandwidth shaping: "
tc_start
echo "done"
;;
stop)
echo -n "Stopping bandwidth shaping: "
tc_stop
echo "done"
;;
*)
echo "Usage: /etc/init.d/tc.sh {start|stop|restart|show}"
;;
esac
exit 0
Rmq : la carte qui prend la connection internet est sur eth0 et celle qui distribue sur le reseau local est sur eth1.# Marque les packets
# Marquage des packets en upload
iptables -t mangle -A FORWARD -s $LOCAL_NETWORK -j MARK --set-mark 3
# Marquage des packets en download
iptables -t mangle -A FORWARD -s ! $LOCAL_NETWORK -d $LOCAL_NETWORK -j MARK --set-mark 4
# Lancé le script de limitation
/etc/network/tc_limit.sh start
Partager