Buenas, tengo que hacer un laburo para un cyber:
para abaratar costos en un cyber lo que hacen es darle internet a algunas personas de un edificio, pero cuando alguno usa el emule o kazza para bajar cosas les come todo el ancho de banda, el dueño me dijo que tiene una maquina que la quiere usar como firewall para limitar el ancho de banda...que me recomiendan usar??
con iptables y cbqinit alcanza? hay alguna solucion mejor?
yo en el cyber de un amigo le instale censornet y listo le manejo el ancho de banda por maquina firewall proxy bla bla, no tenia tiempo de ponerme a levantar un linux y el censornet andubo barbaro.
Salu2
es un programa para window$?
Sin ánimo de ofender a nadie, esto es preguntaslinux, supongo que apoyamos el software gnu, no el propietario. Ademàs para tener en cuenta...
No es lo mismo un programa que escucha puertos, a que el mismo kernel decida que debe hacer con los paquetes...
La mejor opcion para lo que queres hacer es un linux con firewall por iptables y usar una herramienta como iproute2 (tc) para crear clases, vas a encontrar mucha info de una de ellas que es CBQ. Inlcuso scripts listos para usar, te digo que funcionan, yo sirvo mas de 300 terminales con 4 adsl unidos.
Exitos
es imprescindible el uso de iproute2? todas las otras maquinas tienen windows y ya tienen sus ip\'s asignadas, entonces tengo que usar iptables para configurar el nat.
(Aclaro este scrip esta listo para correr y funciona, pero mas conveniente seria que busques info para saber de que se trata esto.)
Un Metodo para resolver el ancho de Banda es atraves del comando tc(Trafic controler), si no me equivoco es un comando propio de cada distribucion linux por lo cual ya lo tenes que tener compilado
Te paso un ejemplo que implemente yo donde la idea es que los usuarios que juegan al counter strike tengan el ancho de banda total y los demas limitado, este scrip esta preparado para declarar 2 niveles mas de ancho de banda, solo que esta comentado.
Miralo un poco y si no entienes algo me preguntas, a mi me funciono a la perfeccion.
Ejemplo de probar varios puertos en una sola sentencia
#! /bin/sh
##Comando tc
TC=\"/sbin/tc\"
##Asignamos la ip del segmento de trabajo ejemplo 172.26.0.0
IP_LOCAL=192.168.0.0
##Dispositivo de red, interno en este caso el que te da salida a internet
P_RED=\"eth0\"
## Capacidad total del Ancho de Banda. kilobytes por segundos
T_TOTAL=\"128\"
## Maximo valor en Kilobytes por segundos
T_ALTO=\"64\"
## Valor Medio en Kilobytes por segundos
##T_MEDIO=\"2\"
## Minimo Valor en kilobytes por segundos
##T_MINIMO=\"1\"
## Valor para el resto de las maquinas de la red en kilobytes por segundos
T_RESTO=\"28\"
## Puertos con un alto ancho de banda
P_ALTOS=\"27010 27011 27012 27013 27014 27015 27016 27017 27018 27019 27020 27021 27022 27023 27024 27025 \"
##Puertos con un ancho de banda medio
##P_MEDIOS=\" \"
##Puertos con un ancho de banda bajo
##P_BAJOS=\" \"
###############################################################################
## Borramos las posibles rutas existentes
${TC} qdisc del dev ${P_RED} root
## Creamos la Disciplina
${TC} qdisc add dev ${P_RED} root handle 1:0 htb default 12
## Creamos la clase Root
${TC} class add dev ${P_RED} parent 1:0 classid 1:1 htb rate ${T_TOTAL}kbps
## Creamos las clases con las cuales se van a clasificar el Ancho de Banda
${TC} class add dev ${P_RED} parent 1:1 classid 1:10 htb prio 0 rate ${T_ALTO}kbps ceil ${T_TOTAL}kbps
##${TC} class add dev ${P_RED} parent 1:1 classid 1:11 htb prio 1 rate ${T_MEDIO}kbps ceil ${T_TOTAL}kbps
##${TC} class add dev ${P_RED} parent 1:1 classid 1:12 htb prio 2 rate ${T_MINIMO}kbps ceil ${T_TOTAL}kbps
${TC} class add dev ${P_RED} parent 1:1 classid 1:13 htb prio 3 rate ${T_RESTO}kbps ceil ${T_TOTAL}kbps
## Add SFQ for beneath these classes
${TC} qdisc add dev ${P_RED} parent 1:10 handle 10: sfq perturb 10
##${TC} qdisc add dev ${P_RED} parent 1:11 handle 11: sfq perturb 10
##${TC} qdisc add dev ${P_RED} parent 1:12 handle 12: sfq perturb 10
${TC} qdisc add dev ${P_RED} parent 1:13 handle 13: sfq perturb 10
## Agregar los puertos a las clases.
## Alta prioridad de Trafico
${TC} filter add dev ${P_RED} protocol ip parent 1:0 prio 0 u32 match ip protocol 1 0xff flowid 1:10 ## ICMP
for PORT in ${P_ALTOS}; do
${TC} filter add dev ${P_RED} protocol ip parent 1:0 prio 0 u32 match ip dport ${PORT} 0xffff flowid 1:10
${TC} filter add dev ${P_RED} protocol ip parent 1:0 prio 0 u32 match ip sport ${PORT} 0xffff flowid 1:10
done
## Prioridad de trafico Medio
##for PORT in ${P_MEDIOS}; do
## ${TC} filter add dev ${P_RED} protocol ip parent 1:0 prio 1 u32 match ip dport ${PORT} 0xffff flowid 1:11
## ${TC} filter add dev ${P_RED} protocol ip parent 1:0 prio 1 u32 match ip sport ${PORT} 0xffff flowid 1:11
##done
## Baja Prioridad de trafico
##for PORT in ${P_BAJOS}; do
## ${TC} filter add dev ${P_RED} protocol ip parent 1:0 prio 2 u32 match ip dport ${PORT} 0xffff flowid 1:12
## ${TC} filter add dev ${P_RED} protocol ip parent 1:0 prio 2 u32 match ip sport ${PORT} 0xffff flowid 1:12
##done
Todos los demás.
${TC} filter add dev ${P_RED} protocol ip parent 1:0 prio 3 u32 match ip dst ${IP_LOCAL}/24 flowid 1:13
${TC} filter add dev ${P_RED} protocol ip parent 1:0 prio 3 u32 match ip src ${IP_LOCAL}/24 flowid 1:13
claro mi caso es diferente por eso necesitare cbq para esto, ya que el tipo tiene algunos inquilinos del edificio compartiendo internet con el, y el quiere limitarle ancho de banda a esas personas, no a los del cyber
Para poder limitar el Ancho de banda a algunas ip tambien lo podes hacer con el tc. en las ultimas dos lineas del scrip lo resolves.
Suponiendo que queres que las ip 192.168.1.2 y 192.168.1.3 tengan un minimo de ancho de banda, las lineas finales del scrip serian
${TC} filter add dev ${P_RED} protocol ip parent 1:0 prio 3 u32 match ip dst $192.168.1.2/32 flowid 1:13
${TC} filter add dev ${P_RED} protocol ip parent 1:0 prio 3 u32 match ip src $192.168.1.2/32 flowid 1:13
${TC} filter add dev ${P_RED} protocol ip parent 1:0 prio 3 u32 match ip dst $192.168.1.3/32 flowid 1:13
${TC} filter add dev ${P_RED} protocol ip parent 1:0 prio 3 u32 match ip src $192.168.1.3/32 flowid 1:13
Eso no te sirve? o, si o si necesitas implementar CBQ.
Si, estuve leyendo un poco de TC,la maquina esta tiene dos placas de red, una que va al modem y otra que va al switch,
cual seria eth0 en tu script?
en el ultimo mensaje que escribiste, es necesario ponerle la prioridad? porque dice en una pagina que eso trae problemas, genera entradas duplicadas o algo por el estilo.....
en una pagina vi que se necesitaban marcar los paquetes con iptables y asi
asociarlos con TC, es imprescindible hacer esto?
una ultima , si quiero ajustar la velocidad de un puerto en vez de una ip especifica, serviria algo asi?:
tc filter add dev eth0 protocol ip parent 1:0 prio 0 u32 match ip dst 192.168.1.3:80
....
En mi caso Eth0 seria la placa que tiene internet, en el tuyo seria el caso de la placa que se conecta al modem del proveedor de internet.
En cuanto a asignarle la prioridad, yo se la asigono ya que la tengo que asignar cuando creo la clase, no lo probe sin asignarla.
Iptables en el equipo en el que estoy controlando el ancho de banda lo utilizo unicamente para natear.
La linea que pones para controlar un puerto de una ip especifica no lo probe, pero la he visto en algunos tutos de esa manera, puede que funcione.
te comento, no soy un experto en Ancho de Banda, solo me toco como tema de investigacion y le encontre una resolucion de la manera que la presente aqui, y no tuve inconvenientes.
Si te puedo ayudar en otro cosa, decime