[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Controle de Banda Debian Lenny



Em 08-10-2010 18:43, gunix escreveu:
Eu tenho a TOPOLOGIA
eth0 : REDE
eth1 : Internet
Fiz exatamento como passou, apenas nos ultimos comando iptables que tive que tirar o -i INTERFACE , pois o POSTROUTING não funciona com o paramentro -i
Ficou assim o comando: Mesmo assim não funcionou as regras de download.
Meu link é 2 Mb. Apos o script coninuou consumindo a mesma banda que antes. 154 k
Ao limpar as regras o download continua na mesma velocidade.

Olá,

        Vamos por parte então...

Quanto ao "-i" do POSTROUTING, realmente está errado, coisa do copia, colar e adaptar, deveria ser "-o".

Bom, se a eth0 está conectada na sua rede, então tudo que é enviado para ela é o download da rede, então vamos controlar o que é enviado (sai) via eth0.

Primeiramente, vamos limpar o controle de tráfego (tc) e criar a classe principal 1:1 e duas classes abaixo, uma classe 1:11 que vai passar tudo o vem da eth1 (internet), marcado com 1, e outra classe 1:12 para o resto (firewall):

# Limpar controle de tráfego e definir htb com fluxo para 1:12
tc qdisc del dev eth0 root
tc qdisc add dev eth0 root handle 1: htb default 12

# Classe principal 1:1
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit
tc qdisc add dev eth0 parent 1:1 sfq perturb 10

# Subclasses 1:11 e 1:12
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 2mbit ceil 2mbit
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 98mbit ceil 100mbit
tc qdisc add dev eth0 parent 1:11 sfq perturb 10
tc qdisc add dev eth0 parent 1:12 sfq perturb 10

        Agora podemos monitorar a velocidade com:

watch -n 1 tc -s class show dev eth0

Deixando o watch acima rodando e fazendo download de dentro rede, como ficam os valores de rate mostrados de segundo a segundo em cada classe? Aqui teoricamente todo o tráfego está passando por 1:12 e então por 1:1.

Ainda com o watch rodando, vamos passar o tráfego da rede local por 1:11:

# Marcar o tráfego que entra pela  eth1, download, com 1
iptables -t mangle -A PREROUTING -i eth1 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -i eth1 -j RETURN

# Direcionar todo o tráfego marcado com 1, download, para a classe 1:11
tc filter add dev eth0 parent 1: protocol ip handle 1 fw classid 1:11

        E agora, como estão os valores de rate no watch para cada classe?

Agora vamos diminuir o a banda de download para 50 kbps, conexão discada, rsrsrs:

tc class change dev eth0 parent 1:1 classid 1:11 htb rate 50kbit ceil 50kbit

E agora, como estão os valores de rate no watch para cada classe? Espera-se que em menos de 10 segundos a banda caia para o valor estipulado, mas no watch vai cair gradativamente devido à janela grande para estatística.

Legal, agora vamos criar duas sub classes sob a classe reduzida acima, a 1:111 para a máquina (192.168.0.111 no caso) que está sendo fazendo download e outra para o resto da rede, lembrando que temos que marcar o tráfego e refazer o filtro:

tc class add dev eth0 parent 1:11 classid 1:111 htb rate 40kbit ceil 50kbit
tc class add dev eth0 parent 1:11 classid 1:112 htb rate 10kbit ceil 50kbit
tc qdisc add dev eth0 parent 1:111 sfq perturb 10
tc qdisc add dev eth0 parent 1:112 sfq perturb 10

# Download já é marcado com 1 e vai para a classe 1:112
tc filter add dev eth0 parent 1: protocol ip handle 1 fw classid 1:112

# Download para 192.168.0.111 marcado com 2 e vai para a classe 1:111
# O destino local é atribuído depois do roteamento, então usa-se "POSTROUTING"
# A marção de ser antes da outra geral, então usa-se "-I" em vez de "-A"
iptables -t mangle -I POSTROUTING 1 -o eth0 -d 192.168.0.111 -j MARK --set-mark 2
iptables -t mangle -I POSTROUTING 2 -o eth0 -d 192.168.0.111 -j RETURN
tc filter add dev eth0 parent 1: protocol ip handle 2 fw classid 1:111

E agora, como estão os valores de rate no watch para cada classe? A classe 1:11 deve estar com 50 kbps no talo, a classe 1:111 deve estar com 40 kbps ou mais, sendo esse "mais" o que está ocioso na classe 1:112 para chegar nos 10 kbps. Se colocar outra máquina para fazer download, vai então ter a 1:11 com 50 kbps, 1:111 com 40 kbps e 1:112 com 10 kbps. Se matar o dowload da máquina com 40 kbps, a classe 1:112 vai chegar nos 50 kbps.

Creio que tenha pego o espírito do coisa. Basta agora seguir a mesma lógica

        Bom isso é o máximo que posso contribuir, boa sorte!


[]'s
           Junior Polegato



Reply to: