O diagrama abaixo ajuda o entendimento deste limitador de banda:
<<lim.upload<< <<dl.livre<<
192.168.10.0/24===eth0~~Linux Gateway~~eth1=== internet
>>dl.livre>> NAT >>lim.upload>>
Consideramos que um download feito a partir de uma máquina na rede interna (192.168.10.0/24) é a mesma coisa que um upload da interface eth0 para para rede interna. Portanto, para limitarmos os downloads feitos pela eth1 da internet basta limitarmos os uploads feitos a partir de eth0 para a rede interna.
Resumo
- Limitamos o upload da interface eth1 para a internet e deixamos o download livre;
- Limitamos o upload da interface eth0 para a rede interna e deixamos o download livre.
Os arquivos de configuração do
CBQ ficariam da seguinte forma:
Controla o upload da interface eth0 para a rede interna: /etc/sysconfig/cbq/cbq-0002.eth0:
DEVICE=eth0,100Mbit,10Mbit
RATE=200Kbit
WEIGHT=20Kbit
PRIO=5
RULE=192.168.10.0/24,
BOUNDED=yes
ISOLATED=no
Controla o upload da interface eth1 para a internet: /etc/sysconfig/cbq/cbq-0002.eth1:
DEVICE=eth1,100Mbit,10Mbit
RATE=200Kbit
WEIGHT=20Kbit
PRIO=5
RULE=192.168.10.0/24,
BOUNDED=yes
ISOLATED=no
MARK=5
Atente para a vírgula após o endereço, que significa que o CBQ atuará somente sobre o upload da interface de rede em questão. Outra coisa importante é a marcação dos pacotes oriundos da rede 192.168.10.0/24, que marcamos igual a 5. A regra de iptables para isso segue abaixo.
O modelo em questão tem uma deficiência. No caso de você utilizar um proxy Squid, os usuários não se aperceberão de sua eficiência pelo fato de haver um limite de upload a partir de eth0 para a rede interna, mas com certeza você conseguirá estabelecer uma banda garantida e economizará e muito o uso de seu link, com limites de download e upload efetivamente estabelecidos. Há outras formas de se contornar isso, mas esse não é o objetivo desta dica.
modprobe ipt_mark
modprobe ipt_MARK
iptables - A PREROUTING -t mangle -s 192.168.10.0/24 -j
MARK -set-mark 5
Carlos Eduardo A. Henriques: