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

Re: Controle de Banda Debian Lenny



Em 02-10-2010 09:53, gunix escreveu:
no debian etch, nos tinhamos ainda o CBQ, que faziamos nossos controlinhos de banda, com boa eficiência.
Porem no lenny ele foi descontnuado e com isso so tenho a opção do HTB.
Alguem sabe me dizer se tenho outra alternativa? O Motivo é que com o HTB eu to tendo um problema que nao consegui solucionar, e mesmo com ajuda de universitarios as tentativas foram em vão. Quando uso o HTB, quem usa o SQUID, mesmo com a internet liberada o trafego fica em apenas 8K.
Alguem pode me judar com o HTB ou me dizer se existe outro mais simples.

Olá,

Com HTB é de certa forma simples, mas primeiro precisa desenhar sua topologia, basicamente:

Rede Interna ------ eth1 === Firewall === eth0 ------- Internet


Bom, primeiro precisa-se deixar claro que você somente controla o que sai de cada interface a partir do Firewall, e que você deve criar uma fila de pacotes para cada interface, dividir essa fila em classes e em cada classe criar uma fila, que pode ser dividida em classses, etc...

Então vamos supor que tenha uma rede 10.10.10.0/24, sua internet seja de 1 Mbps nos dois sentidos, quero reservar banda de download e upload de 512 kbps para o computador 10.10.10.10 e usar os 512 kbps restantes para dar garantia de banda de 400 kbps a todo tráfego de ssh e https, ficando o restante livre:

Upload em kbps:

de   10.10.10.10 ---> classe 1:10 - 512 até 1.024 |
para ssh e https ---> classe 1:20 - 400 até 1.024 |---> eth0 até 1.024
outros           ---> classe 1:30 - 112 até 1.024 |


Download em kbps:

classe 2 -  1.024 até   1.024 |
classe 3 - 98.976 até 100.000 | ---> eth1 até 100.000

para 10.10.10.10 ---> classe 1:10 - 512 até 1.024 |
de ssh  e  https ---> classe 1:20 - 400 até 1.024 |---> classe 2 até 1.024
de eth0 - outros ---> classe 1:30 - 112 até 1.024 |



# Pacotes que saem pela eth0, vão para a internet

# Limpar configurações
tc qdisc del dev eth0 root
# Fila da interface de internet, tudo que não tiver regra vai para classe 30
tc qdisc add dev eth0 root handle 1: htb default 30
    # Classe única da fila principal de 1024 kbps - classe 1
tc class add dev eth0 parent 1: classid 1:1 htb rate 1024kbit ceil 1024kbit
        # Fila da classe 1
        tc qdisc add dev eth0 parent 1:1 sfq perturb 10
        # Classe de 512 kbps, pode chegar a 1024 kbps - classe 10
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 512kbit ceil 1024kbit
            # Fila da classe 10
            tc qdisc add dev eth0 parent 1:10 sfq perturb 10
        # Classe de 400 kbps, pode chegar a 1024 kbps - classe 20
tc class add dev eth0 parent 1:1 classid 1:20 htb rate 400kbit ceil 1024kbit
            # Fila da classe 20
            tc qdisc add dev eth0 parent 1:20 sfq perturb 10
        # Classe de 112 kbps, pode chegar a 1024 kbps - classe 30
tc class add dev eth0 parent 1:1 classid 1:30 htb rate 112kbit ceil 1024kbit
            # Fila da classe 30
            tc qdisc add dev eth0 parent 1:30 sfq perturb 10
# Todos os pacotes marcados com 1 vai para a fila da classe 10
tc filter add dev eth0 parent 1: protocol ip handle 1 fw classid 1:10
# Todos os pacotes marcados com 2 vai para a fila da classe 20
tc filter add dev eth0 parent 1: protocol ip handle 2 fw classid 1:20
# Os outros pacotes vão para a fila padrão definida na fila da interface

# Marcando os pacotes
# Pacotes vindos de 10.10.10.10 via eth1 marca-se com 1
iptables -t mangle -A PREROUTING -i eth1 -s 10.10.10.10 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -i eth1 -s 10.10.10.10 -j RETURN
# Pacotes para ssh e https via eth1 marca-se com 2
iptables -t mangle -A PREROUTING -i eth1 -p tcp -m multiport --dports ssh,https -j MARK --set-mark 2 iptables -t mangle -A PREROUTING -i eth1 -p tcp -m multiport --dports ssh,https -j RETURN

# Pacotes que saem pela eth1, vieram da internet

# Limpar configurações
tc qdisc del dev eth1 root
# Fila da interface de internet, tudo que não tiver regra vai para classe 3
tc qdisc add dev eth1 root handle 1: htb default 3
    # Classe única da fila principal de 100 Mbps - classe 1
tc class add dev eth1 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit
        # Fila da classe 1
        tc qdisc add dev eth1 parent 1:1 sfq perturb 10
        # Classe 2 de 1024 kbps - classe 2
tc class add dev eth1 parent 1: classid 1:2 htb rate 1024kbit ceil 1024kbit
            # Fila da classe 1
            tc qdisc add dev eth1 parent 1:2 sfq perturb 10
            # Classe de 512 kbps, pode chegar a 1024 kbps - classe 10
tc class add dev eth1 parent 1:2 classid 1:10 htb rate 512kbit ceil 1024kbit
                # Fila da classe 10
                tc qdisc add dev eth1 parent 1:10 sfq perturb 10
            # Classe de 400 kbps, pode chegar a 1024 kbps - classe 20
tc class add dev eth1 parent 1:2 classid 1:20 htb rate 400kbit ceil 1024kbit
                # Fila da classe 20
                tc qdisc add dev eth1 parent 1:20 sfq perturb 10
            # Classe de 112 kbps, pode chegar a 1024 kbps - classe 30
tc class add dev eth1 parent 1:2 classid 1:30 htb rate 112kbit ceil 1024kbit
                # Fila da classe 30
                tc qdisc add dev eth1 parent 1:30 sfq perturb 10
        # Classe de quase 99 Mbps, pode chegar a 100mbps - classe 3
tc class add dev eth1 parent 1:1 classid 1:3 htb rate 98976kbit ceil 100mbit
            # Fila da classe 3
            tc qdisc add dev eth1 parent 1:3 sfq perturb 10
# Todos os pacotes marcados com 3 vão para a fila da classe 10
tc filter add dev eth1 parent 1: protocol ip handle 3 fw classid 1:10
# Todos os pacotes marcados com 4 vão para a fila da classe 20
tc filter add dev eth1 parent 1: protocol ip handle 4 fw classid 1:20
# Todos os pacotes marcados com 5 vão para a fila da classe 30
tc filter add dev eth1 parent 1: protocol ip handle 5 fw classid 1:30
# Os outros pacotes vão para a fila padrão definida na fila da interface, no caso pacotes do firewall

# Marcando os pacotes
# Pacotes com destino à 10.10.10.10, marca-se com 3
iptables -t mangle -A POSTROUTING -i eth1 -d 10.10.10.10 -j MARK --set-mark 3
iptables -t mangle -A POSTROUTING -i eth1 -d 10.10.10.10 -j RETURN
# Pacotes vindos de requisições ssh e https via eth1 marca-se com 4
iptables -t mangle -A POSTROUTING -i eth1 -p tcp -m multiport --sports ssh,https -j MARK --set-mark 4 iptables -t mangle -A POSTROUTING -i eth1 -p tcp -m multiport --sports ssh,https -j RETURN # Pacotes com destino diferente de 10.10.10.10, ssh e https, os outros, marca-se com 5
iptables -t mangle -A POSTROUTING -i eth1 -j MARK --set-mark 5
iptables -t mangle -A POSTROUTING -i eth1 -j RETURN


[]'s
           Junior Polegato


Reply to: