Limitar descargas de Ares y Limewire por Squid

Forums: 

Saludos. Hace un tiempo configuré mi servidor para proxy transparente y tambièn le configuré delay pools para limitar las descargas. Ahora bien, el problema. Si bien el limitador de banda actua de maravilla cuando las descargas son via http en puerto 80 tengo el gran problema de que no funciona el limitador de banda cuando el download es por medio de algun programa p2p sea LimeWire, Ares, Kazaa o alguno de esta clase y necesito que el squid limite la tasa de transferencia de estos programas pues cuando un usuario descarga algo por estos p2p toda la linea se la consume y no hay mucho ancho de banda por lo que hay que limitarlo. La configuración de squid para proxy transparente es la que habitualmente encontramos en cualquier manual de proxy transparente. Adicionalmente esta es mi configuración de iptables(dentro del archivo /etc/sysconfig/iptables):

-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A POSTROUTING -o eth1 -j MASQUERADE

de modo que sea enmascarado todo lo que viene de la LAN hacia el internet pormedio de squid. Adicionalmente, he editado en /etc/sysctl.conf la opciòn ipv4_forward = 1 de modo que exista el reenvio de paquetes.

Hasta aqui todo funciona bien; hasta que caemos a los p2p. He probado enrutar por ejemplo el limewire hacia squid de esta forma: -A PREROUTING -i eth0 -p tcp -m tcp --dport 6346 -j REDIRECT --to-ports 3128 pero limewire sigue saliendo con todo el ancho de banda incluso configurandole el puerto de proxy en conexiones. Y de esta forma pasa con los otros 2 programas p2p mecionados.

He querido hacer que msn messenger y yahoo msn salgan por medio de squid de forma transparente usando el proxy pero enrutandolos hacia el puerto squid pero luego no conectan asi:

(para msn)-A PREROUTING -i eth0 -p tcp -m tcp --dport 1863 -j REDIRECT --to-ports 3128

en fin, todo sale por proxy si es pagineo en http pero los demàs tipos de conexiones por puerto se salen con la suya saliendo directo y no pasando por squid; y se necesita que exista proxy transparente+nat+limitaciòn de banda tanto download http como downloads p2p.

No se si me faltan reglas de iptables o algo, y si alguien puede darme una mano con esto le estaré muy agradecido (o mi cabeza rodará).

Gracias de antemano por la ayuda,
Luiyi.

Bien he leito el lartc y he

Imagen de luiyirockero

Bien he leito el lartc y he decidido implementar htb; siguiendo la sección 15 del lartc he tenido exito en el marcado de paquetes con mayor prioridad para http y dejado todo lo que es p2p (o sea todo lo que no es http) en ultima prioridad tomando como ejemplo el lartc.

Me gustaria saber que prioridad debo darle a DNS, https, smtp, pop3 y ftp para afinar bien el script. Al tenerlo con estas ultimas instrucciones en iptables para estos protocolos anteriores postearé el script final que usé para que quede en el foro.

Gracias de antemano por la ayuda.

Aqui el script que utilicé

Imagen de luiyirockero

Aqui el script que utilicé para la solución con htb. Bajo un CentOS 4.3 (clon redhat) con htb 3.3 incluido he utilizado este script:

CEIL=140
tc qdisc add dev eth0 root handle 1: htb default 15
tc class add dev eth0 parent 1: classid 1:1 htb rate ${CEIL}kbit ceil ${CEIL}kbit
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 80kbit ceil ${CEIL}kbit prio 0
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 20kbit ceil ${CEIL}kbit prio 1
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 20kbit ceil ${CEIL}kbit prio 2
tc class add dev eth0 parent 1:1 classid 1:13 htb rate 20kbit ceil ${CEIL}kbit prio 2
tc class add dev eth0 parent 1:1 classid 1:14 htb rate 20kbit ceil ${CEIL}kbit prio 3
tc class add dev eth0 parent 1:1 classid 1:15 htb rate 20kbit ceil 20kbit prio 3
tc qdisc add dev eth0 parent 1:12 handle 120: sfq perturb 10
tc qdisc add dev eth0 parent 1:13 handle 130: sfq perturb 10
tc qdisc add dev eth0 parent 1:14 handle 140: sfq perturb 10
tc qdisc add dev eth0 parent 1:15 handle 150: sfq perturb 10

tc filter add dev eth0 parent 1:0 protocol ip prio 1 handle 1 fw classid 1:10
tc filter add dev eth0 parent 1:0 protocol ip prio 2 handle 2 fw classid 1:11
tc filter add dev eth0 parent 1:0 protocol ip prio 3 handle 3 fw classid 1:12
tc filter add dev eth0 parent 1:0 protocol ip prio 4 handle 4 fw classid 1:13
tc filter add dev eth0 parent 1:0 protocol ip prio 5 handle 5 fw classid 1:14
tc filter add dev eth0 parent 1:0 protocol ip prio 6 handle 6 fw classid 1:15

y he almacenado como un ejecutable con chmod +x en /etc/bwtc (ese nombre le puse yo, bwtc) donde CEIL es la tasa maxima de transferencia que tengo con la linea de 1Mbps. He usado 6 disciplinas de modo que el pagineo toma la primera de mayor prioridad la 1:10 con 80Kbit/s con tope en 140Kbit; he dejado el smtp y el pop3 con prioridad 3 en 1:12 y todo lo que no es importantisimo digamos p2p :D esta en la regla 1:15 con un maximo de tasa en 20Kbit.

Junto con esto he utilizado reglas de iptables en /etc/iptables en la opción mangle asi:

-A PREROUTING -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j RETURN
-A PREROUTING -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j MARK --set-mark 0x1
-A PREROUTING -p tcp -m tcp --sport 3128 -j MARK --set-mark 0x1
-A PREROUTING -p tcp -m tcp --sport 3128 -j RETURN
-A PREROUTING -p tcp -m tcp --sport 80 -j MARK --set-mark 0x1
-A PREROUTING -p tcp -m tcp --sport 80 -j RETURN
-A PREROUTING -p tcp -m tcp --sport 25 -j MARK --set-mark 0x3
-A PREROUTING -p tcp -m tcp --sport 25 -j RETURN
-A PREROUTING -p tcp -m tcp --sport 110 -j MARK --set-mark 0x3
-A PREROUTING -p tcp -m tcp --sport 110 -j RETURN
-A PREROUTING -p icmp -j MARK --set-mark 0x1
-A PREROUTING -p icmp -j RETURN
-A PREROUTING -m tos --tos Minimize-Delay -j MARK --set-mark 0x1
-A PREROUTING -m tos --tos Minimize-Delay -j RETURN
-A PREROUTING -m tos --tos Minimize-Cost -j MARK --set-mark 0x5
-A PREROUTING -m tos --tos Minimize-Cost -j RETURN
-A OUTPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j MARK --set-mark 0x1
-A OUTPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j RETURN
-A OUTPUT -p tcp -m tcp --sport 3128 -j MARK --set-mark 0x1
-A OUTPUT -p tcp -m tcp --sport 3128 -j RETURN
-A OUTPUT -p tcp -m tcp --sport 80 -j MARK --set-mark 0x1
-A OUTPUT -p tcp -m tcp --sport 80 -j RETURN
-A OUTPUT -p tcp -m tcp --sport 25 -j MARK --set-mark 0x1
-A OUTPUT -p tcp -m tcp --sport 25 -j RETURN
-A OUTPUT -p tcp -m tcp --sport 110 -j MARK --set-mark 0x1
-A OUTPUT -p tcp -m tcp --sport 110 -j RETURN
-A OUTPUT -p icmp -j MARK --set-mark 0x1
-A OUTPUT -p icmp -j RETURN
-A OUTPUT -m tos --tos Minimize-Delay -j MARK --set-mark 0x1
-A OUTPUT -m tos --tos Minimize-Delay -j RETURN
-A OUTPUT -m tos --tos Minimize-Cost -j MARK --set-mark 0x5
-A OUTPUT -m tos --tos Minimize-Cost -j RETURN
-A OUTPUT -m tos --tos Maximize-Throughput -j MARK --set-mark 0x6
-A OUTPUT -m tos --tos Maximize-Throughput -j RETURN

Así he enviado todos los paquetes que son de comunicación de redes con prioridad 1, al igual que el pagineo en puerto 80 y también todo aquello redireccionado a squid en puerto 3128. Con esto tengo la solución preliminar y ya estaré reacomodando ftp y smtp con pop3 luego de ver que tanta demanda tiene bajo la red. Pero de que el p2p se limita se limita!

Excelente.. gracias por

Imagen de RazaMetaL

Excelente.. gracias por compartirlo con la comunidad. :)

-------------------------

Antes de preguntar visita esta dirección :evil:

 

-----

Visita este [url=http://www.sindominio.net/ayuda/preguntas-inteligentes.html]link[/url] :evil:

[img]http://www.bbspot.com/Images/News_Features/2003/01/os_quiz/debian.jpg[/img]

(adsbygoogle = window.adsbygoogle || []).push({});

Páginas