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
--
To UNSUBSCRIBE, email to debian-user-portuguese-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/4cb06bcf.9070...@juniorpolegato.com.br