Sei sulla pagina 1di 22

Configuracion de Ubuntu Server: DHCP + Squid + Iptables

3Mar2009
Filed under: LINUX Author: yovany

Después de instalar un servidor con Ubuntu Server en este caso 8.10, lo que
normalmente necesitamos es proveer de servicio de internet y con ello establecer
ciertas reglas para controlar el acceso a ciertas páginas, para mantener fluido el trafico
de nuestra red, el primer paso sería configurar el servidor DHCP, para asignar las ip
automáticamente.

Para este caso en particular tomaremos de referencia la siguiente información

Dirección de red interna: 192.168.2.0/24

Interface con salida a internet: eth0

Interface conectada a la red interna: eth1

Ip de eth1: 192.168.2.1

Ip de eth0: 192.168.1.100

En este caso salimos a internet por medio de un modem 2wire de Telmex, aun que
esto no importa demasiado, solo es para referencia.

Lo primero que debemos da hacer es configurar las ip estáticas, como estamos usando
una versión de servidor asumimos que no tenemos interface gráfica así que nuestro
editor de archivos sera VI , pero pueden usar el que mas les acomode.
En vi hay dos modos de trabajo edición y comandos, para edita un archivo hay que
presionar la tecla [insert] para salir del modo de edición y pasar a comandos
presionamos la tecla [esc] si queremos guardar el archivo entramos a modo de
comandos y tecleamos :w si queremos salir es :q si queremos guardar y salir :wq para
forzar cualquier acción agregamos el ! forzar el guardar :w! o forzar la salida :q!

PLAIN TEXT
CODE:

1. sudo apt-get install vim

PLAIN TEXT
CODE:

1. sudo vi /etc/network/interfaces

Ahi pondremos esto

PLAIN TEXT
CODE:

1. # This file describes the network interfaces available on your system


2. # and how to activate them. For more information, see interfaces(5).
3.
4. # The loopback network interface
5. auto lo
6. iface lo inet loopback
7.
8. # The primary network interface
9. auto eth0
10. iface eth0 inet static
11. address 192.168.1.100
12. netmask 255.255.255.0
13. network 192.168.1.0
14. broadcast 192.168.1.255
15. gateway 192.168.1.254
16. dns-nameservers 192.168.1.254
17.
18. auto eth1
19. iface eth1 inet static
20. address 192.168.2.1
21. netmask 255.255.255.0

Que significa esto?

Esto nos inidica cual es la interface de loopback nada interesante


PLAIN TEXT
CODE:

1. # This file describes the network interfaces available on your system


2. # and how to activate them. For more information, see interfaces(5).
3.
4. # The loopback network interface
5. auto lo
6. iface lo inet loopback

Se define la configuracion para eth0 que es la tarjeta que nos conectara a internet

PLAIN TEXT
CODE:

1. # The primary network interface


2. auto eth0

Aqui indicamos que la direccion es de tipo estatico

PLAIN TEXT
CODE:

1. iface eth0 inet static

La variable addres es una ip del rango que nos asigna el modem para salir a internet

PLAIN TEXT
CODE:

1. address 192.168.1.100
2. netmask 255.255.255.0

La red por defecto

PLAIN TEXT
CODE:

1. network 192.168.1.0
2. broadcast 192.168.1.255

Es la puerta de enlace que nos da salida a internet

PLAIN TEXT
CODE:
1. gateway 192.168.1.254

Y los DNS en este caso usamos el mismo modem para que nos resuelva hacia internet,
esto datos cambian segun la configuracion de la red que les da salida a internet

PLAIN TEXT
CODE:

1. dns-nameservers 192.168.1.254

Esta es la configuracion de la tarjeta de red a la que se conectara la red interna, solo


hay que indicar la direccion IP y mascara, ya que nos conectaremos a internet por la
otra tarjeta de red.

PLAIN TEXT
CODE:

1. auto eth1
2. iface eth1 inet static
3. address 192.168.2.1
4. netmask 255.255.255.0

Para que cargue la nueva configuracion reiniciaremos los servicio de red

PLAIN TEXT
CODE:

1. sudo /etc/init.d/networking restart

Si todo esta bien configurado veremos algo como esto

PLAIN TEXT
CODE:

1. * Reconfiguring network interfaces...


2.
3. * if-up.d/mountnfs[eth0]: waiting for interface eth1 before doing NFS mounts
4. [ OK ]

El siguiente paso es configurar el DHCP, para asignar las direcciones ip de forma


automatica, para esto usaremos dhcp3-server
PLAIN TEXT
CODE:

1. sudo apt-get install dhcp3-server

Primero hay que indicar en que interface de red es donde va a escuchar para eso
editamos el siguiente archivo

PLAIN TEXT
CODE:

1. sudo vi /etc/default/dhcp3-server

En nuestro caso la tarjeta que va a proveer el servicio es la eth1 que va a la red


interna

PLAIN TEXT
CODE:

1. # Defaults for dhcp initscript


2. # sourced by /etc/init.d/dhcp
3. # installed at /etc/default/dhcp3-server by the maintainer scripts
4.
5. #
6. # This is a POSIX shell fragment
7. #
8.
9. # On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
10. # Separate multiple interfaces with spaces, e.g. "eth0 eth1".
11. INTERFACES="eth1"

Ahora hay que configurar el dhcp, en el siguiente archivo.

PLAIN TEXT
CODE:

1. sudo vi /etc/dhcp3/dhcpd.conf

Tendremos un muy extenso archivo de configuracion de lo cual solo nos servira lo


siguiente, lo demas lo podemos eliminar

PLAIN TEXT
CODE:

1. ddns-update-style interim;
2.
3. authoritative;
4.
5. subnet 192.168.2.0 netmask 255.255.255.0{
6. range 192.168.2.100 192.168.2.200;
7. option domain-name-servers 192.168.1.254;
8. option routers 192.168.2.1;
9. option broadcast-address 192.168.2.255;
10. default-lease-time 36000;
11. max-lease-time 180000;
12. }

Empezamos por definir sobre que red se va atrabajar y la mascara

PLAIN TEXT
CODE:

1. ddns-update-style interim;
2.
3. authoritative;
4.
5. subnet 192.168.2.0 netmask 255.255.255.0{

Indicamos el rando de direcciones que deseamos que asigne en este caso asiganras
desdela ip 192.168.2.100 hasta la ip 192.168.2.200

PLAIN TEXT
CODE:

1. range 192.168.2.100 192.168.2.200;

Indicamos los DNS

PLAIN TEXT
CODE:

1. option domain-name-servers 192.168.1.254;

La puerta de enlace, en este caso el servidor ubuntu, ya que todas las maquinas de la
red se conectaran a nosotros para proveerlos de internet.

PLAIN TEXT
CODE:

1. option routers 192.168.2.1;

Estos son los valores que en dado caso se tendrian que modificar segun su
configuracion de red. Solo quedaria reiniciar el servicio de DHCP
PLAIN TEXT
CODE:

1. sudo /etc/init.d/dhcp3-server restart

Si todo esta bien obtendremos esto

PLAIN TEXT
CODE:

1. * Stopping DHCP server dhcpd3 [ OK ]


2. * Starting DHCP server dhcpd3 [ OK ]

Ahora instalaremos el proxy, en este caso Squid

PLAIN TEXT
CODE:

1. sudo apt-get install squid

Es muy importante para poder compartir el internet tener activado al Froward, para
esto crearemos un archivo que se ejecutara al inicio del arranque donde tambien se
cargaran las iptables, ya que estas configuraciones, se pierden cada vez que se apaga
el equipo, este archivo se llamara iptables.cf, o como gusten llamarle

PLAIN TEXT
CODE:

1. sudo vi /etc/init.d/iptables.cf

Y pondremos lo siguiente

PLAIN TEXT
CODE:

1. iptables -F
2.
3. iptables -X
4. iptables -Z
5. iptables -t nat -F
6.
7. iptables -P INPUT ACCEPT
8. iptables -P OUTPUT ACCEPT
9. iptables -P FORWARD ACCEPT
10. iptables -t nat -P PREROUTING ACCEPT
11. iptables -t nat -P POSTROUTING ACCEPT
12. iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE
13.
14. iptables -t nat -A PREROUTING -s 192.168.2.0/24 -d ! 192.168.2.0/24 -p tcp --
dport 80 -j REDIRECT --to-port 3128
15.
16. iptables -A INPUT -s 192.168.2.0/24 -i eth1 -j ACCEPT
17.
18. iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport 993 -j ACCEPT
19. iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport 110 -j ACCEPT
20. iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport 465 -j ACCEPT
21. iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport 25 -j ACCEPT
22. iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport 80 -j ACCEPT
23. iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport 443 -j ACCEPT
24.
25. iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport 53 -j ACCEPT
26. iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p udp --dport 53 -j ACCEPT
27.
28. echo 1> /proc/sys/net/ipv4/ip_forward

Que es esto?

Las iptables nos ayudaran a decidir que dejar pasar por la red y por donde dejarlo
pasar, en este caso, solo configuraremos las iptables para que nos redireccionen todo
el del puerto 80 hacia el puerto 3128 que es el puerto del squid, para que no tengamos
que configurar el proxy en todas las maquinas , y ya que compartimos el internet
enmascaramos todo lo que venga de la red interna y que saldra por la interface eth0,
permitiremos tambien el forward para el dhcp y tambien para el correo, para no tener
problemas con los clientes de correo.

Borramos las reglas que se esten ejecuntando

PLAIN TEXT
CODE:

1. iptables -X
2. iptables -Z
3. iptables -t nat -F

Aceptamos coneciones saliente, entrantes, el forward, prerouting y postrouting

PLAIN TEXT
CODE:

1. iptables -P INPUT ACCEPT


2. iptables -P OUTPUT ACCEPT
3. iptables -P FORWARD ACCEPT
4. iptables -t nat -P PREROUTING ACCEPT
5. iptables -t nat -P POSTROUTING ACCEPT
Esta es una configuracion muy basica asi que por el momento no nos preocuparemos
por el tema de la seguridad (eso es otro HowTo)

Habilitamos el enmascaramiento, para que la red interna pueda salir a internet por la
conexion del server

PLAIN TEXT
CODE:

1. iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE

Activamos el redireccionamiento para el proxy tranparente, tambien indicamos que lo


redireccionaremos siempre y cuando el destino no sea una direccion dentro de la
misma red, digase servidores web locales todo lo demas al proxy

PLAIN TEXT
CODE:

1. iptables -t nat -A PREROUTING -s 192.168.2.0/24 -d ! 192.168.2.0/24 -p tcp --


dport 80 -j REDIRECT --to-port 3128

Habilitamos el forward para los puertos especificos de correo y dhcp, pop, imap,
simap, smtp, ssmtp y dhcp

PLAIN TEXT
CODE:

1. iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport 993 -j ACCEPT


2. iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport 110 -j ACCEPT
3. iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport 465 -j ACCEPT
4. iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport 25 -j ACCEPT
5. iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport 80 -j ACCEPT
6. iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport 443 -j ACCEPT
7.
8. iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport 53 -j ACCEPT
9. iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p udp --dport 53 -j ACCEPT

Y por ultimo habilitamos el forward

PLAIN TEXT
CODE:

1. echo 1> /proc/sys/net/ipv4/ip_forward

Con esto es mas que suficiente, ahora hay que darle permisos de ejecucion
PLAIN TEXT
CODE:

1. sudo chmod a+x /etc/init.d/iptables.cf

Ahora para que se ejecute al arranque instalaremos un pequeño programa que nos
ayuda a configurar los archivos que se ejecutan al iniciar el sistema

PLAIN TEXT
CODE:

1. sudo apt-get install rcconf

y lo ejecutaremos con

PLAIN TEXT
CODE:

1. sudo rcconf
Veran esta pantalla solo hay que marcar el iptables.cf y todo listo si nececitan correr
un archivo al arranque solo concedanle permisos y de la misma forma : D.

Ahora hay que configurar el Squid, para eso editaremos el siguiente archivo.

PLAIN TEXT
CODE:

1. sudo vi /etc/squid/squid.conf

De igualmanera, podemos borrar todo y dejar solo lo siguiente


PLAIN TEXT
CODE:

1. http_port 3128 transparent


2.
3. cache_mem 16 MB
4.
5. cache_dir ufs /var/spool/squid 700 16 256
6.
7. ie_refresh on
8.
9. offline_mode on
10.
11. acl all src 0.0.0.0/0.0.0.0
12. acl red_local src 192.168.2.0/24
13. acl plus src "/etc/squid/plus.lst"
14. acl sites url_regex "/etc/squid/sites.lst"
15. acl files url_regex -i .exe .flv .mp4 .mp3 .avi .wma .mov .acc .wav .bat .asf
.mpeg .3gp .swf
16. acl localhost src 127.0.0.1/255.255.255.255
17.
18. http_access deny red_local !plus sites
19. http_access deny red_local !plus files
20. http_access allow red_local
21. http_access allow localhost
22. http_access deny all

Para que esto funciones habremos de crear dos archivos, uno donde se guardaran las
paginas que deseamos bloquear, y otro donde tendremos una lista de las ip
que tendran derechos privilegiados

PLAIN TEXT
CODE:

1. vi /etc/squid/sites.lst

Aqui pondremos las paginas bloqueadas, esta es mi lista, algunas paginas de video
redes sociales, mensageros web etc.

PLAIN TEXT
CODE:

1. hi5.com
2. www.metroflog.com
3. mx.youtube.com
4. es.youtube.com
5. www.youtube.com.us
6. www.youtube.com
7. www.youtube.com.mx
8. www.dailymotion.com
9. www.tu.tv
10. www.ebuddy.com
11. www.meebo.com
12. webmessenger.msn.com
13. www.webmessenger.msn.com
14. www.iloveim.com
15. www.spacelive.com
16. home.spaces.live.com/
17. www.myspace.com/
18. spaces.live.com/
19. www.radiusim.com/
20. www.messengerfx.com
21. messengerfx.com/
22. www.facebook.com/
23. fulltono.com/
24. www.fulltono.com/
25. rapidshare.com
26. megaupload.com
27. www.veoh.com/
28. www.megavideo.com/
29. www.proxybutton.com/
30. www.videoblogs.com/
31. video.google.com/
32. imo.im
33. www.koolim.com/
34. koolim.com/
35. voltv.es/
36. www.imhaha.com
37. imhaha.com
38. proxify.com/
39. www.proxify.com/
40. www.megaclick.com/
41. www.my-proxy.com
42. www.blogger.com/
43. cbox.ws
44. megaclilck.com/
45. facebook.com/
46. youporn.com
47. www.lajaula.net
48. www.alianzo.com
49. www.goear.com
50. www.zshare.com
51. zshare.net
52. skydrive.live.com

Y sigue la lista de direcciones privilegiadas

PLAIN TEXT
CODE:

1. sudo vi /etc/squid/plus.lst

Y agregamos las ip que deseemos

PLAIN TEXT
CODE:

1. 192.168.2.150
2.
3. 192.168.2.135

Ahora regresando al archivo de configuracion del squid

Indicamos que por el puerto 3128 escucharemos y que sera proy tranparente

PLAIN TEXT
CODE:

1. http_port 3128 transparent

Estos valores dejarlos tal cual

PLAIN TEXT
CODE:

1. cache_mem 16 MB
2.
3. cache_dir ufs /var/spool/squid 700 16 256
4.
5. ie_refresh on
6.
7. offline_mode on

Las acl o definiciones de control de acceso, son las que nos permitiran hacer
referencias hacia ciertos elementos ya sea ip, direciones etc

La definicion all indica un origen definido por todo el rango de direciones ip

PLAIN TEXT
CODE:

1. acl all src 0.0.0.0/0.0.0.0

La siguiente definicion hace referencia al conjunto de ip comprendidas dentro de


nuestra red

PLAIN TEXT
CODE:

1. acl red_local src 192.168.2.0/24


La definicion plus hace referencia alas ip que se encuentran listadas dentro del archivo
que creamos

PLAIN TEXT
CODE:

1. acl plus src "/etc/squid/plus.lst"

La definicion sites hace referencia ala lista de sitios restringidos

PLAIN TEXT
CODE:

1. acl sites url_regex "/etc/squid/sites.lst"

La definicion files es un conjunto de extenciones las cuales se van a restringir para su


descarga, hay que tener un poco de cuidado, por ejemplo los archivos .bin pueden ser
desde binarios de linux, como imagenes de cd o archivos comprimidos, si añaden esa
extencion se daran cuenta que las busquedas de google desencadenaran el bloqueo del
proxy y no les dejara buscar nada, ya que dentro de la url de la busqueda se generan
este tipo de extenciones, la cadena .mp bloquea el yahoo mail, asi que sehan
cuidadosos es este sentido, y evitense dolores de cabeza.

PLAIN TEXT
CODE:

1. acl files url_regex -i .exe .flv .mp4 .mp3 .avi .wma .mov .acc .wav .bat .asf
.mpeg .3gp .swf

Y por ultimo la definicion del loopback

PLAIN TEXT
CODE:

1. acl localhost src 127.0.0.1/255.255.255.255

Ahora ay que generar las reglas, para permitir o denegar el acceso usamos http_acces
despues la accion deny o allow aquien se lo vamos a aplicar y que le vamos a restringir

Aqui denegamos a todas las direciones de la red que sean diferente a las definidas en
la lista plus los sitios definidos por la lista sites

PLAIN TEXT
CODE:

1. http_access deny red_local !plus sites

De igual forma denegamos a todas las ip de la red local que sean diferentes a las
definidas por la lista plus el acceso a los archivo definidos en la lista files

PLAIN TEXT
CODE:

1. http_access deny red_local !plus files

Muy importante todas las reglas siempre deben de ir antes de estas ultimas de lo
contrario el proxy aparentara que no esta funcionando, ya que las reglas llevan un
orden de ejecucion

PLAIN TEXT
CODE:

1. http_access allow red_local


2. http_access allow localhost
3. http_access deny all

Cada vez que se haga un cambio en las reglas habra que reiniciara el servicio, esto
interrunpuria todo el trafico que este pasando por el proxy, hasta que recargue el
servcio segun la velocidad del servidor y la carga de trafico unos 20 o 30 segundo.

Espero sea de utilidad, y como siempre espero sus comentarios, criticas y chiste.

Pd. este post fue motivado por algunas dudas de los amigos del foro de Byte.

Asi que esto es todoByte.

Proteger el ancho de banda


Cada usuario tiene tendencia a utilizar el 100% del ancho de banda disponible, no sé si esto es una
ley escrita, si no debería estarlo.

Pues ahora que tenemos instalada la red y el acceso mediante proxy cache vamos a intentar
regular el consumo de ancho de banda. Resulta interesante que nadie pueda cometer abusos y
consumir todos los recursos de la red a costa del resto de usuarios. La regulación del ancho de
banda se puede llevar a cabo utilizando distintos criterios: la máquina origen, la dirección o página
destino o el tipo de transferencia.
Por un lado podemos intentar discriminar el origen de los datos, resumiendo que los jefe dispongan
de mejor conexión. Resumiendo, vamos a asignar distintos anchos de banda a distintos rangos de
direcciones IP.

También se nos puede dar el caso de que haya consultas masivas a unos determinados dominios o
páginas y puede ser práctico delimitar el ancho de banda asignado a ese dominio.

En general el volumen de tráfico que genera el acceso a páginas web en html es bastante bajo, lo
que realmente consume un volumen apreciable del ancho de banda son ficheros de sonido e
imagen y una medida posible podría ser limitar de alguna forma la transferencia de estos tipos de
ficheros.

Otra posibilidad sería que limitar el ancho de banda sólo para descargas de ficheros grandes y dejar
un mayor ancho de banda a ficheros pequeños para que la navegación por páginas html sea más
rápida.

Mediante Squid podemos establecer límites al ancho de banda mediante una de sus características
de configuración denominada "delay pools". Establecemos una definición de regulación de ancho de
banda, establecemos una ACL y asociamos la regulación a la ACL.

Parámetros de configuración
Cada una de las reglas de regulación está definida por un número entero que vamos a utilizar para
indentificarlo en los distintos parámetros.

delay_pools
Esta parámetro se utiliza para definir cuantas reglas de regulación vamos a definir.

delay_class
Este parámetro toma dos argumentos el primero el identificador de la regla y en segundo lugar el
tipo (clase) de la regla.

El primero argumento es un número entero para identificar la regla.

El segundo argumento puede ser 1,2 ó 3 para indicar uno de estos tipos de reglas.

delay_parameters
Establece los valores de la regla. Los argumentos de este parámetro son parejas de valores
velocidad/tamaño, donde velociad es un número entero que indica una velocidad en bytes por
segundo (B/s), y tamaño indica el número de bytes de reserva que se transmiten antes de aplicar
la velocidad de transferencia.

Es decir cada pareja especifica el número de bytes de margen que se permiten antes de se haga
efectiva la restricción de velocidad.

Los valores no tienen por qué ser múltiplos de 2.


Tipos de reglas
Hay tres clases de regulaciones, con características diferentes.

Clase 1
La clase uno consiste en un canal individual compartido por todos los usuarios. Es la clase más
simple, todas las tasas de descarga van juntas y lo único que tenemos que especificar es la
velocidad, en bytes por segundo, y el número de bytes a partir de los cuales tiene que retardar la
descarga.

Ejemplo: Supongamos que queremos que la velocidad de descarga de los ficheros .wmv que
ocupen más de 1Mb sea de 8k/s.

delay_pools 1
delay_class 1 1
delay_parameters 1 8192/1048576
acl ficheros_wmv url_regex \.wmv$
delay_access 1 allow ficheros_wmv

Cuando en esa red, algún equipo haya bajado más de 1Mb correspondiente a ficheros .wmv
entonces la descarga total de ficheros .wmv se hará a una velocidad de 8k/s. Si quisiéramos
establecer este límite para los hosts de una red deberíamos elegir la clase 2.

En el anterior ejemplo hemos supuesto que hay un único canal de regulación en el parámetro
delay_pools. Ahora vamos a ver un ejemplo con dos canales de clase 1. Queremos que el tráfico de
la red local no tenga límite de transferencia, mientras que para las conexiones a internet vamos a
utilizar un total de 256Kbits/s.

delay_pools 2
delay_class 1 1
delay_parameters 1 -1/-1
acl red_local src 192.168.0.0/24
delay_access 1 allow red_local

delay_class 2 1
delay_parameters 2 32768/1024
acl resto all src 0.0.0.0/0.0.0.0
delay_access 2 allow resto

La tasa de transferencia viene especificada en bytes por segundo, por ejemplo convirtiendo a otras
unidades uno de los parámetros de delay_parameters:

32768 B/s = 32 KB/s = 32 x 8 Kb/s (bits) = 256 Kb/s = 256 Kbits/s

El valor 1024 es un número de bytes lo suficientemente pequeño para que se alcance pronto y se
estabilice el ancho de banda.
El valor -1 indica ilimitado.

Las regulaciones de clase 1 están diseñadas para evitar que la acl correspondiente consuma todo el
ancho de banda, es decir definen la suma máxima de los anchos de banda de todos los clientes,
pero no evita que un cliente pueda consumir ese ancho de banda a costa de otro; todos los clientes
comparten un máximo ancho de banda.

Clase 2
La clase dos que consiste en un canal común con 256 canales individuales. Es decir tenemos un
canal global y dentro de él otros 256 canales que se aplican a las máquinas de una red de clase C.

Ahora vamos a ver otro ejemplo con dos canales, en este caso ambos de de clase 2. Ahora también
que el tráfico de la red local no tenga límite de transferencia, ni global ni por IP, mientras que para
las conexiones a internet vamos a utilizar un total de 256Kbits/s y a cada máquina de la red le
asigna un máximo de 64kbits/s.

delay_pools 2
delay_class 1 2
delay_parameters 1 -1/-1 -1/-1
acl red_local src 192.168.0.0/24
delay_access 1 allow red_local

delay_class 2 2
delay_parameters 2 32768/1024 8192/1024
acl resto all src 0.0.0.0/0.0.0.0
delay_access 2 allow resto

Este ejemplo es muy parecido al anterior de clase 1, sólo tenemos que agregarle una pareja de
valores al parámetro "delay_parameters". La primera pareja de este parámetro especifica el ancho
de banda global, mientras que la segunda pareja especifica el ancho de banda por host.

Hay que tener en cuenta que los clientes están limitados por el tamaño del canal más pequeño, por
lo que no tiene sentido que el canal común tenga un tamaño menor que los canales individuales.

Clase 3
La clase tres que define un canal común que contiene 256 canales de red, 65536 canales
individuales. Muy parecida a la clase dos pero par redes de clase B.

Ejemplos de control de ancho de banda


Limitación global del ancho de banda
Tenemos una conexión con internet de 4Mbits y queremos que el ancho de banda dedicado a
consulta de páginas web desede las IP comprendidas entre 192.168.5.100 hasta 192.168.5.199 sea
de 1Mbits máximo.
1Mb/s = 128kB/s = 131072 B/s
4Mb/s = 512kB/s = 524288 B/s

delay_pools 1
delay_class 1 1
delay_parameters 1 131072/8192
acl lista src 192.168.5.100-192.168.5.199/32
delay_access 1 allow lista

Limitación de ancho de banda por red y host


Tenemos una conexión con internet de 4Mbits y queremos que el ancho de banda dedicado a
consulta de páginas web desede las IP comprendidas entre 192.168.5.100 hasta 192.168.5.199 sea
de 1Mbits máximo, de forma que cada una de las máquinas no pueda consumir más de 512Kbits/s.

Es como el ejemplo anterior, pero añadiendo restricciones adicionales a cada una de las máquinas,
por lo que tendremos que elegir la clase 2:

delay_pools 1
delay_class 1 2
delay_parameters 1 131072/8192 65536/8192
acl lista src 192.168.5.100-192.168.5.199/32
delay_access 1 allow lista

Limitación de ancho de banda por servidor


Queremos limitar el ancho de banda a 4KB/s y que cada máquina consuma a lo sumo 2KB/s para
todas las conexiones que se hagan a los servidores de banner cuyo nombre empieza por ad.

delay_pools 1
delay_class 1 2
delay_parameters 1 4096/4096 2048/2048
acl publicidad url_regex http://ad.*
delay_access 1 allow publicidad

Ancho de banda ilimitado para la red local.


Garantizar un ancho de banda ilimitado para los accesos a la red local.

delay_pools 1
delay_class 1 2
delay_parameters 1 -1/-1 -1/-1
acl redlocal url_regex -i 192.168
delay_access 1 allow redlocal

Establecer privilegios de acceso.

Establecer privilegios en la red.

delay_pools 3
delay_class 1 1
delay_class 2 1
delay_class 3 1
delay_parameters 1 -1/-1
delay_parameters 2 131072/8192
delay_parameters 3 65536/8192
acl jefes src 192.168.5.1-192.168.5.50/32
acl subjefes src 192.168.5.51-192.168.5.99/32
acl resto src 0/0
delay_access 1 allow jefes
delay_access 2 allow subjefes
delay_access 3 allow resto

Establecer ancho de banda en franja horaria.


acl todos src 0/0
acl laboral time 08:30-16:30
delay_pools 2
delay_class 1 2
delay_parameters 1 -1/-1 -1/-1
delay_access 1 allow todos
delay_class 2 2
delay_parameters 2 131072/8192 65536/8192
delay_access 2 allow laboral
delay_access 2 deny !laboral
delay_access 2 allow todos

Configuración de los navagadores clientes


Esta configuración exige que cada navegador esté configurado para utilizar el proxy. Pero claro, por
una lado es un engorro tener que configurar uno a uno todos los equipos de la red y por otro,
tenemos la posibilidad de que la configuración TCP/IP le da salida a través de una pasarela.

Si a pesar de todo queremos esta configuración, tendremos que decirle al navegador que utilice
como proxy el equipo que alberga Squid y el puerto el 3128. El puerto se puede cambiar en el
fichero de configuración. Otro puerto que se suele usar para proxy es el 8080, pero ¿para qué
cambiarlo?

Proxy Transparente
Como queremos evitar tener que configurar los navegadores cliente y queremos evitar posibles
puertas traseras de salida vamos a configurar un proxy transparente.

¿Qué es un proxy transparente? Es un proxy que no necesita ninguna configuración especial en los
clientes. Se denomina transparente porque el cliente en realidad no sabe que lo está usando, es
transparente para él.

Cómo configurar el proxy transparente, pues en primer lugar tenemos que configurar el
cortafuegos para que reenvíe todas las peticiones que se hagan a un puerto 80 hacia el puerto
3128 que utiliza Squid. Es decir, capturamos todas las peticiones que se hagan a un servidor http y
se las enviamos a Squid para que él se encarge del resto.
Estas son las reglas de iptables. La primera para redrigir las peticiones al proxy la siguiente para
rechazar el resto de los reenvíos.

Si queremos que las páginas web pasen por el proxy con squid que está en 192.168.5.254, pero el
resto siga con acceso normal, pondríamos:

iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination


192.168.5.254:3128

Si el equipo con squid está en la misma pasarela entonces podemos poner:

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

Cuidado, de las opciones anteriores sólo debemos escoger una de ellas.

Si sólo queremos salida para visitar págias web, entonces pondremos:

Primero garantizamos el tráfico DNS:

iptables -A FORWARD -p tcp -m tcp --dport 53 -j ACCEPT


iptables -A FORWARD -p udp -m udp --dport 53 -j ACCEPT
iptables -A FORWARD -p tcp -m tcp --sport 53 -j ACCEPT
iptables -A FORWARD -p udp -m udp --sport 53 -j ACCEPT

Potrebbero piacerti anche