Autore Topic: Limitazione banda con TC e IPTABLES  (Letto 4513 volte)

Offline anglisi

  • Newbie
  • *
  • Post: 1
    • Mostra profilo
    • E-mail
Limitazione banda con TC e IPTABLES
« il: 21 Maggio 2015, 09:48:21 »
Salve, mi chiamo Angelo e da poco ho iniziato ad utilizzare SERIAMENTE questo fantastico sistema operativo al posto di... vabbè... :)

Vi sottopongo una questione che mi sta tenendo sulle spine da qualche giorno...
Ho 20 client che aprono dei tunnel SSH REVERSE sul server in un range di porte da 20000 a 20100 e devo poter settare dei limiti di banda ad ogni client (per sicurezza devo impostare le limitazioni lato server).
Googlando ho appreso un pò di concetti sull'uso combinato di TC + IPTABLES e ho implementato uno script (semi-copiato dai...) affinchè venga applicata una limitazione a 100kb per ogni client.
Sembra funzionare correttamente, ho fatto un test con 3 macchine remote collegate (provato con un flusso video con 100k vedo un frame ogni 30sec circa), solo che non riesco a capire se la limitazione avviene correttamente. La mia domanda è: con il seguente script, i 100kb di banda sono ad ogni macchina remota oppure i 100kb sono il totale da dividere alle macchine collegate nel range di porte 20000:20100 ?

#!/bin/bash

‪#‎network‬ interface on which to limit traffic
IF="eth0"
‪#‎limit‬ of the network interface in question
LINKCEIL="1Gbit"
#limit outbound protocol traffic to this rate
LIMIT="100kbit"

‪#‎delete‬ existing rules
tc qdisc del dev ${IF} root

‪#‎add‬ root class
tc qdisc add dev ${IF} root handle 1: htb default 10

#add parent class
tc class add dev ${IF} parent 1: classid 1:1 htb rate ${LINKCEIL} ceil ${LINKCEIL}

#add our two classes. one unlimited, another limited
tc class add dev ${IF} parent 1:1 classid 1:10 htb rate ${LINKCEIL} ceil ${LINKCEIL} prio 0
tc class add dev ${IF} parent 1:1 classid 1:11 htb rate ${LIMIT} ceil ${LIMIT} prio 1

#add handles to our classes so packets marked with <x> go into the class with "... handle <x> fw ..."
tc filter add dev ${IF} parent 1: protocol ip prio 1 handle 1 fw classid 1:10
tc filter add dev ${IF} parent 1: protocol ip prio 2 handle 2 fw classid 1:11

iptables -t mangle -A OUTPUT -p tcp --sport 1:19999 -j MARK --set-mark 1
iptables -t mangle -A OUTPUT -p tcp --sport 20000:20100 -j MARK --set-mark 2
iptables -t mangle -A OUTPUT -p tcp --sport 20101:65535 -j MARK --set-mark 1

exit 0