Hola gente, tengo una PC con un Debian, la cual esta configurada como router, todo anda perfecto, la mula, interntet, la cuestion es que este "router" sirve a varias maquinas, y varias de ellas, usan el ares, chan!!!, la cosa es que cuando pasa eso, se consumen todo el ancho de banda, y no me funca la mula, y mas aun, se hace imposible navegar, mi pregunta es si hay alguna manera, o algun comando desde linux, que me permita asignar un porcentaje de banda a cada IP, porque la verdad, ya me estoy poniendo un poquito mal con este tema.
Desde ya agradezco cualquier tipo de sugerencias o comentarios.
Si no se puede evitar el uso de Ares o no se puede limitar en el propio Ares el uso de ancho de banda, lo que te queda es lo que se denomina "traffic shaping".
Eso requiere, como mínimo, la manipulación del firewall (iptables).
Aquí tienes un artículo que puede intersarte:
http://www.ecualug.org/?q=2006/08/04/forums/limitar_descargas_de_ares_y_limewire_por_squid
otra opcion bien drastica y amanzadora es con iptraf mirar la ip de la pc que esta usando ares y si tenes el switch o hub sacarle el cable a esa maquina XD , la otra es como te respondieron antes , saludos
bueno mil gracias voy a ver si leo un poco mas sobre el tema :up:
Podrías mirar si te conviene implementar algo de QoS (Quality of Service) (http://es.wikipedia.org/wiki/Calidad_de_Servicio).
Te dejo una guía que encontré googleando:
http://usuarios.lycos.es/ccd_illusions/QoS-3.pdf
Saludos!
Pepo
Si no entendes un pomo de iptables, htb, etc... podes usar un script ya hecho, y solo tenes que agregar tus datos de conexion. Yo probe el htb-gen y anda joya.
http://www.praga.org.ar/wacko/DevPraga/htbgen/ (http://www.praga.org.ar/wacko/DevPraga/htbgen/)
Son 3 archivos que usa.
- htb-gen (es el programa propiamente dicho)
- htb-gen.conf (ahi tenes que poner cuanto de subida y bajada tenes, asi como tambien especificar la ethx a la que salis a internet. En mi caso mi placa era eth3, pero la unica forma de hacerlo andar era poner ppp0 en lugar de eth3)
-htb-gen-rates.conf (aca pones las limitaciones al trafico por ip de maquina de tu red, o directamente si tenes mas de una red, podes limitar la red entera... Los archivos estos *.conf son bien explicativos)
Luego de tener todo, falta el comando de arranque
htb-gen tc_all
o si no esta el paquete en /usr/sbin, directamente situado en la ubicacion del paquete:
./htb-gen tc_all o sh /ubicacion/htb-gen tc_all
Edit Importante: Ahora que me acuerdo tambien tuve que cambiar la ubicacion de los programas iptables, iptables-restore, iptables-save y tc. Estas definiciones estan en htb-gen.conf y el htb-gen. Yo los tengo en /usr/sbin (slackware 12)... Si aparece algun error que dice que no encuetra el comando, fijarse bien que distribucion tiene uno... Una pavadita pero puede traer complicaciones
Espero que te sirva a vos y a cualquiera que lea el post
Saludos :up:
Interesante mortadelax.
Lo voy a probar en una o dos semanas.
Saludos.
Me olvide de decirte...
Yo segui todos los pasos de este tuto http://www.ecualug.org/?q=2007/aug/22/comos/como_controlar_el_ancho_de_banda_usando_htb_gen (http://www.ecualug.org/?q=2007/aug/22/comos/como_controlar_el_ancho_de_banda_usando_htb_gen), y me anduvo... La verdad no se si es necesario seguirlo, pero es ahi donde conoci al htb-gen
Cualquier cosita pregunta... no es lo mismo pasar un tutorial cualquiera, que pasar uno habiendo probado y funcionando
che, muy buen aporte el tuyo mortadelax, no sabia que este script esta muy piola al parecer
Hola a todos. Revivo este post ya que tengo una pregunta relacionada con el tema.
Resulta que tengo andando un router con slackware que da internet a 10 makinas. Como servidor dhcp uso dnsmasq. Limito la coneccion con el htb-gen ya mencionado.
Con el dnsmasq todo piola. Armo las reservas con mac/ip, y son estas las ip que uso en el momento de limitar la banda.
Ahora, si viene un vivito y se cambia su ip (en lugar de poner que lo tome por dhcp), pierde toda limitacion, y "baja y sube todo lo que quiere", pues cambio su ip. :( :( :guns:
Me gustaria que me ayuden con las iptables, para permitir que haya coneccion en las ips que yo quiera (el rango del dnsmasq que yo pongo) y DENEGAR TODO HASTA RED LOCAL, a cualquier otra ip de lan que no tenga nada que ver. Incluso me gustaria que se respete el par macaddress/ip que yo haya puesto como reserva, asi nadie tiene la posibilidad de "ocupar el lugar de nadie", y si agregan una pc, que me avisen! :jaja:
Ustedes diran...."ponete coyote linux o brazilfw y se termino el problema". No señores, la idea es armar todo casero, aprender, y que sea una distribucion linux completa (no una mini distro), asi si quiero tener apache, levantar X, o lo que fuere, lo pueda hacer.
Mil gracias... Saludos a todos. Tremenda esta comunidad :up: :excelente:
Lo mejor sería auxiliarte con SQUID e iptables.
Squid tiene listas de control de acceso que puedes usar para crear grupos de máquinas y permitir o no el acceso.
Si sólo quieres usar iptables, hay que agregar una línea por cada máquina/dirección habilitada del estilo:
$IPTABLES -A FORWARD -i $INTIFA -o $EXTIF -s 192.168.1.52 -j ACCEPT
o para un rango de máquinas:
$IPTABLES -A FORWARD -i $INTIFA -o $EXTIF --src-range 192.168.1.52-192.168.1.112 -j ACCEPT
y luego de estas líneas, denegar a las demás con:
$IPTABLES -A FORWARD -i $INTIFB -o $EXTIF -s 192.168.1.0/24 -j REJECT
La lógica de iptables hace que se tome la primera regla que se satisface y termina de procesar.
Por esa razón se ponen primero las particularizaciones y recién después las generalizaciones.
$IPTABLES, $INTIFB y $EXTIF son variables que tienen:
$IPTABLES -> la ubicación del ejecutable iptables. Se lo puede conocer con la orden:
which iptables
normalmente es Debian y derivados está en /sbin/iptables
y en el script del firewall se la establece con:
IPTABLES=/sbin/iptables ó
IPTABLES=`which iptables`
$INTIFB -> es la interfaz de red interna (red local) a la que están conectadas las máquinas
Se puede conocer cuál es la interfaz adecuada recurriendo a la orden ifconfig y mirando las direcciones de red. Se la establece como:
INTIFB=eth1
$EXTIF -> es la interfaz "externa" o la que tiene acceso a Internet
Se la puede conocer también con ifconfig. Su nombre dependerá de cómo se conecta el Linux a internet.... así que puede ser una interfaz del tipo eth2 o también ppp0
Se la establece con:
EXTIF=ppp0
A todo esto, supongo que el script del firewall tiene todo lo necesario para funcionar y que estuvo funcionando.
Si es así, estos agregados harán el trabajo.
Saludos.
Recontra claro ZeiterZ muchisimas gracias.
Es lo que andaba buscado: permitir a mis 10 makinas y denegar todo lo demas! excelente :palmas:
Nota. $INTIFA = INTIFB?
Otra cosa, en el iptraf veo macaddress desconocidas (capaz del router, switch o hub). Hace algo el REJECT contra ellos?
Probe y me anduvo con
iptables -A FORWARD -m iprange --src-range 192.168.1.5-192.168.1.124 -j ACCEPT
no con el que pusiste, sera por la distro o por versiones de iptables.
Si me pongo una ip intrusa, me limita perfectamente internet, pero puedo acceder a las carpetas compartidas. Se puede limitar esto tambien? De ultima, con que no ande internet ya esta.
Squid por ahora no, paso. Por ahi en un futuro.
Firewall?... he visto varios, esos que denegas todo y permitis ciertos servicios. No lo tengo implementado por miedo de cerrar algo y que me vengan a decir "che no me anda tal cosa".
Es asi esto? o no tanto? Digo que por ahi me venga uno que no le ande el lineaje, el ares u otra cosa.
Noten la importancia del uso del QoS: en este momento, libere toda conexion a un sospechoso vecino, y el hdp me esta subiendo a 35 kbytes/seg.
SALUDOS Gracias por la pronta respuesta ;D
Las IPs propias del servidor/router no deberían aparecer en las reglas del firewall para el tipo de filtrado que estás buscando.
$INTIFA y $INTIFB a los fines del ejemplo, son iguales.
Me olvidé de corregirlas porque las saqué de un firewall que hice para un servidor que maneja dos redes internas. Una red por INTIFA y otra por INTFB.
En tu caso, reemplazá INTIFA e INTIFB simplemente por INTIF.
Con respecto a los distintos firewalls que hay (kmyfirewall, firewall-builder, firestarter, etc.) no usé ninguno. Hasta el momento he venido armando mis propios firewalls regla por regla.
Tal vez en algún futuro pruebe alguno de ellos.
Saludos.
Si estás compartiendo con Samba, puedes filtrar las máquinas que se conectan en la configuración de Samba: /etc/samba/smb.conf
con las cláusulas "hosts allow" y "hosts deny" poniendo las IPs autorizadas primero y denegando el resto
hosts allow = 192.168.1.20 192.168.1.21 192.168.1.45
hosts deny = 192.168.1.0/24
Si no quieres tocar la configuración de Samba y te apetece usar sólo iptables, igual agregá esta línea en la configuración de Samba, sección [global]
smb ports 139
y cierras el puerto 139 para tráfico proveniente de las máquinas no autorizadas, por ejemplo:
$IPTABLES -A INPUT -i $INTIFA -s 192.168.1.56/32 -p tcp --dport 139 -j REJECT
Saludos.
Gracias ZeiterZ por toda la ayuda.
La verdad esto ultimo del samba no me salio, pero no importa.
Para el proximo tropiezo con el router, vengo aca o genero un post?
O sea, son temas diferentes, pero son 'funciones' que puede hacer un router. De este post se pueden sacar un par de cositas interesantes.
Saludos
Posteá aquí, así se mantiene organizado el tema alrededor del router
Ya sabes que tienes que volver a cargar Samba luego de cualquier cambio:
/etc/init.d/samba reload
¿tienes alguna idea de qué es lo que falló?
Saludos.
Lo hice de las 2 formas: con host allow/deny y con smb ports usando iptables. En ambos casos recarge samba.
Para mi es /etc/rc.d/rc.samba restart
Testparm me dio OK.
Creo que cometi una burrada de aquellas :-[. Lo probe desde makinas winXp. O sea que en realidad no estaba usando samba :-\. Si no estuviese samba (del router), las makinas win tambien se ven perfectamente.
Habria que ver por que puerto se comunica winXp para leer recursos compartidos. De esta forma si hago un ACCEPT a ese puerto para mi rango de pcs, y REJECT para cualquier otra, dejaria a cualquier pc extraña fuera de la red (supongo). A eso le sumo la regla de permitir internet solo a mi rango... y estaria listo (restrinjo internet y acceso a recursos compartidos).
Es lo que se me ocurre.
En la medida en que las máquinas se "vean" por sí mismas sin necesidad de usar el router Linux para ello, lo que hagas en Línux es inútil... ya que las PCs se comunican directamente unas con otras.
Lo que suelo usar es que las PCs no compartan discos, a lo sumo impresoras.
Todo los archivos importantes de la institución/empresa van a un servidor de archivos con Linux corriendo Samba como controlador de dominio, discos espejados, UPS con 4 horas de autonomía, etc.
De esa manera cualquier máquina intrusa en la red no verá discos compartidos de ninguna PC y para acceder al servidor necesitará validar la máquina y usar un usuario definido en el servidor Linux.
También podrías dividir las máquinas en dos redes:
- una con acceso a internet
- otra sin acceso a internet
- Linux entre las dos regulando si una red se ve con la otra o no y cómo se "ven".
Hay varias alternativas... sólo es necesario ver las necesidades y buscar la solución más adecuada.
Saludos.
Buenas. Estoy analizando volveeeerr a armar el router.
Tengo 'Speedy 5 megas'. Afectara si una de las placas de red DEL ROUTER es de 10 mbit??? Afectara la transferencia de archivos entre los clientes? Y la transferencia WAN?
O sea, si la placa de 10 no va al router, se la pongo a una cliente. Y SI QUE SE NOTA LA TRANSFERENCIA DE ARCHIVOS CARAMBA
Ya se que me van a decir "una placa sale unos pocos mangos". Pero teniendo esa de 10, si la puedo chantar se la pongo.
Saludos
Cita de: mortadelax en Marzo 23, 2009, 22:26:48
Buenas. Estoy analizando volveeeerr a armar el router.
Tengo 'Speedy 5 megas'. Afectara si una de las placas de red DEL ROUTER es de 10 mbit??? Afectara la transferencia de archivos entre los clientes? Y la transferencia WAN?
O sea, si la placa de 10 no va al router, se la pongo a una cliente. Y SI QUE SE NOTA LA TRANSFERENCIA DE ARCHIVOS CARAMBA
Ya se que me van a decir "una placa sale unos pocos mangos". Pero teniendo esa de 10, si la puedo chantar se la pongo.
Saludos
Andará perfectamente. Copiar archivos exige a la placa su máxima transferencia. En cambio, el uso de internet no.
Saludos.
:jaja: