Dúvida em relação controle de tráfego [RESOLVIDO]

1. Dúvida em relação controle de tráfego [RESOLVIDO]

Fabrizio
brizao

(usa Debian)

Enviado em 19/04/2011 - 22:39h

Olá,

Estou com uma dúvida em relação à controle de tráfego no Linux, quero não somente bloquear mas restringir banda de certa faixa de IP.

Vi que com o comando TC e HTB consigo fazer isso, mas não consegui realmente, depois de ver vários tutoriais e tal. Aliás não entendi mto bem tb...

O servidor no qual quero implementar é um ubuntu 10.04, possui 2 interfaces de rede, eth0 (internet) e eth2 (rede local) e tb possui samba rodando... até consegui fazer funcionar na eth2 (rede local) mas eu mato as conexões do samba.

Minha lógia seria que deve ser feito na eth0 (internet) mas na mesma configuração que mato o samba, não funciona na eth0, não sei pq, somente funciona na interface da rede local.

A configuração de TC que estou utilizando é a seguinte:



tc qdisc del dev eth0 root

tc qdisc add dev eth0 root handle 1: htb default 20

tc class add dev eth0 parent 1: classid 1:1 htb rate 5mbit

tc class add dev eth0 parent 1: classid 1:10 htb rate 2mbit ceil 5mbit prio 0
tc class add dev eth0 parent 1: classid 1:20 htb rate 500kbit ceil 1mbit prio 1

tc filter add dev eth0 parent 1:1 protocol ip u32 match ip dport 80 0xffff flowid 1:10



No caso quero restringir a porta 80 (http) de 2mb até 5 (ceil) e todo o resto para 500kb (no caso entraria qualquer programa p2p, e etc.)

Sei que da pra restringir pelo squid, mas nesse caso como é um teste, queria fazer funcionar sem o squid.

funciona se eu deixar na interface eth2, na eth0 (internet) não. E tb não consigo restringir por faixa de IP.



Alguém poderia me ajudar?
Valeu


  


2. Re: Dúvida em relação controle de tráfego [RESOLVIDO]

Fabrizio
brizao

(usa Debian)

Enviado em 25/04/2011 - 12:58h

Olá, apesar de não ter nenhuma resposta, consegui resolver, li trocentos tópicos pra lá e pra cá e consegui através destes links:

http://www.eriberto.pro.br/wiki/index.php?title=Controle_de_tr%C3%A1fego_com_TC%2C_HTB_e_Iptables
http://blog.edseek.com/~jasonb/articles/traffic_shaping/classflows.html
http://blog.edseek.com/~jasonb/articles/traffic_shaping/classes.html

o que deve ser feito é o seguinte:

tc qdisc del dev eth2 root

tc qdisc add dev eth2 root handle 1:0 htb default 20
tc class add dev eth2 parent 1:0 classid 1:1 htb rate 1000mbit

tc class add dev eth2 parent 1:1 classid 1:10 htb rate 1000mbit prio 0
tc class add dev eth2 parent 1:1 classid 1:20 htb rate 200kbit prio 1
tc class add dev eth2 parent 1:1 classid 1:30 htb rate 10kbit prio 2


iptables -t mangle -A POSTROUTING -o eth2 -p tcp -m multiport --sport 80,445,137,138,139,22 -j CLASSIFY --set-class 1:10
iptables -t mangle -A POSTROUTING -o eth2 -d 192.168.1.150 -j CLASSIFY --set-class 1:20


a melhor forma de especificar a qual classe um determinado endereço/porta usará, é através do iptables -t mangle -A POSTROUTING ao invés de FORWARD e ao invés de "tc filter u32...." (assim como está no site acima).

na primeira linha do iptables, especifiquei as portas (inclusive as do samba) de toda da rede para serem limitadas na classe 1:10 (utilizando todo o tráfego);
na segunda linha, especifiquei um IP que será limitado através da classe 1:20 (somente a 200k);
e todo o resto de portas e IPs, utilizará a classe 1:30 (10k), no caso, p2p e outras portas que não forem especificados na primeira linha.


Obs.: Se usar na interface da rede local, o controle é feito pelo download, se utilizar na interface de internet, o que controlamos é o upload.
Obs2.: Parece óbvio, mas quebrei a cabeça de cara, se não colocar as portas do samba, ele fica lento, pois cairá na classe default (a que não tem nada especificado).

é isso aí,
Valeu...






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts