Squid

26
Un servidor proxy tiene la misión de actuar de intermediario en el acceso de un recurso en internet. Suelen utilizarse como pasarelas que permitan acceder a páginas webs restringidas por país o dentro de una empresa, es decir, pueden trabajar como muro cortafuegos operando en la capa de red (actuando como filtro de paquetes, como es el caso de iptables ) o bien desde la capa de aplicación controlando diferentes servicios. Otra de sus funciones es actuar como caché de contenido de red (principalmente para el protocolo HTTP), proporcionando mayor proximidad de los clientes a un caché de páginas y archivos de forma que estos accedan con tiempos similares a los de una red local. En este sentido el servidor de proxy cache Squid tiene un alto rendimiento además de soportar FTP o incluso HTTP sobre IPv4 e Ipv6. Todos los objetos cacheados por Squid permanecen en RAM, incluso consultas de búsquedas DNS. Es importante recalcar que Squid administra todas las peticiones bajo un único proceso asíncrono y no bloqueante. Por otro lado se ofrece soporte SSL y listas de control de acceso. Proceso de interacción de un servidor proxy Durante el proceso de interacción ocurre lo siguiente: 1. Un cliente se conecta hacia un Servidor Proxy. 2. El cliente solicita una conexión, archivo u otro recurso disponible en un servidor distinto. 3. El Servidor Proxy proporciona el recurso ya sea conectándose hacia el servidor especificado o sirviendo éste desde un caché. 4. En algunos casos el Servidor Proxy puede alterar la solicitud del cliente o bien la respuesta del servidor para diversos propósitos. Este último punto 4, es que permite realizar muchas configuraciones personalizadas a los administradores de sistemas. Instalación de Squid En este artículo se instalará Squid 3.1. Para instalarlo en Ubuntu o Debian based:

Transcript of Squid

Un servidor proxy tiene la misión de actuar de intermediario en el acceso de un recurso en

internet. Suelen utilizarse como pasarelas que permitan acceder a páginas webs restringidas por país o

dentro de una empresa, es decir, pueden trabajar como muro cortafuegos operando en la capa de

red (actuando como filtro de paquetes, como es el caso de iptables) o bien desde la capa de

aplicación controlando diferentes servicios.

Otra de sus funciones es actuar como caché de contenido de red (principalmente para el protocolo

HTTP), proporcionando mayor proximidad de los clientes a un caché de páginas y archivos de forma

que estos accedan con tiempos similares a los de una red local.

En este sentido el servidor de proxy cache Squid tiene un alto rendimiento además de soportar FTP o

incluso HTTP sobre IPv4 e Ipv6. Todos los objetos cacheados por Squid permanecen en RAM, incluso

consultas de búsquedas DNS. Es importante recalcar que Squid administra todas las peticiones bajo un

único proceso asíncrono y no bloqueante. Por otro lado se ofrece soporte SSL y listas de control de

acceso.

Proceso de interacción de un servidor proxy

Durante el proceso de interacción ocurre lo siguiente:

1. Un cliente se conecta hacia un Servidor Proxy.

2. El cliente solicita una conexión, archivo u otro recurso disponible en un servidor distinto.

3. El Servidor Proxy proporciona el recurso ya sea conectándose hacia el servidor especificado o sirviendo

éste desde un caché.

4. En algunos casos el Servidor Proxy puede alterar la solicitud del cliente o bien la respuesta del servidor

para diversos propósitos.

Este último punto 4, es que permite realizar muchas configuraciones personalizadas a los

administradores de sistemas.

Instalación de Squid

En este artículo se instalará Squid 3.1. Para instalarlo en Ubuntu o Debian based:

Ver código BASH1 sudo apt-get install squid3

Después se debe editar el fichero de configuración por defecto /etc/squid3/squid.conf

Por defecto el acceso http esta negado para todas las peticiones. Por ello debes buscar y borrar en el

archivo la configuración:

Ver código BASH1 http_access deny all

En su lugar se puede configurar una lista de acceso basada en rangos de IP al que se quiera permitir el

acceso, por ejemplo:

Ver código BASH12

acl our_networks src 123.123.123.0/24 213.213.213.0/24http_access allow our_networks

De igual forma puedes comprobar que la directiva http_port este apuntando al puerto 3128 por defecto

o cambiarlo al que necesites. Debes tener en cuenta que de acuerdo a las asignaciones hechas

por IANA y continuadas por la ICANN desde el 21 de marzo de 2001, son

los Puertos Registrados (rango desde 1024 hasta 49151)  y los recomendados para Servidores Proxies

son el 3128 y 8080 a través de TCP.

También se pueden configurar varios:

Ver código BASH12

http_port 3128http_port 8080

O incluso especificando varias IPs:

Ver código BASH12

http_port 192.168.1.254:3128http_port 192.168.1.253:8080

Una vez configurado, es necesario reiniciar squid con:

Ver código BASH1 sudo service squid3 restart

También existen otras opciones como recargar la configuración:

Ver código BASH1 service squid reload

Parar el servicio:

Ver código BASH1 service squid stop

O iniciarlo:

Ver código BASH1 service squid start

Si tienes chkconfig (Sistemas basados en RedHat como Centos) puedes activarlo automáticamente en

cada inicio del sistema con:

Ver código BASH1 chkconfig squid on

Para comprobar si se está ejecutando correctamente:

Ver código BASH1 sudo service squid3 status

Y si esta efectivamente escuchando en el puerto configurado:

Ver código BASH1 netstat -tulpn | grep 3128

Si existe algun error grave, que no permita iniciar el servicio se debe examinar el contenido del

fichero /var/log/squid/squid.out

Se puede acceder a los ficheros de log mediante:

Ver código BASH1 sudo cat /var/log/squid3/access.log

O bien el fichero de cache:

Ver código BASH1 sudo cat /var/log/squid3/cache.log

Para conocer la ip pública del proxy puede utilizarse:

Ver código BASH1 curl ifconfig.me

Modificaciones de configuración básicas

Para mostrar las cadenas de las consultas http en el log, es necesario desactivar la

directiva strip_query_terms (por defecto activa) en /etc/squid3/squid.conf:

strip_query_terms off

Por otro lado el parámetro cache_mem establece la cantidad de memoria RAM dedicada para

almacenar los datos mas solicitados y datos en tránsito (con mayor prioridad de almacenamiento). Los

datos son normalmente almacenados en bloques de 4 Kb. El valor por defecto es de 256 MB, pero puede

especificarse una cantidad mayor si es necesario. Por ejemplo puede establecerse 2 GB de memoria:

Ver código BASH1 cache_mem 2048 MB

Por defecto, si algo ocurre con la caché, como por ejemplo que el proceso se termine, se enviará un

mensaje de aviso a la cuenta de email del webmaster en el servidor. Para configurarla pues cambiarse la

directiva cache_mgr:

Ver código BASH1 cache_mgr [email protected]

Se puede especificar un lugar diferente para el registro de accesos con la directiva access_log:

Ver código BASH1 access_log /var/log/squid/access.log squid

Para ver toda tu configuración squid, sin mostrar los comentarios, puedes usar:

Ver código BASH1 cat /etc/squid/squid.conf | sed '/ *#/d; /^ *$/d'

O bien:

Ver código BASH1 grep -v "^#" /etc/squid/squid.conf | sed -e '/^$/d'

Solución de errores

Si intentas conectar a tu servidor proxy y este no atiende tus peticiones, es posible que no hayas abierto

los puertos en tu router. Se recomienda abrir el puerto TCP/UDP en el que este configurado Squid.

Configurar Proxy Squid en Ubuntu

Squid es un Servidor Intermediario (Proxy) de alto desempeño, que puede funcionar como Servidor

Intermediario (Proxy) y caché de contenido de Red para los protocolos HTTP, FTP, GOPHER y

WAIS, Proxy de SSL, caché transparente, WWCP, aceleración HTTP, caché de consultas DNS,

filtración de contenido y control de acceso por IP y por usuario. 

Consiste básicamente en un programa principal como servidor, un programa para búsqueda en

servidores DNS, programas opcionales para reescribir solicitudes y realizar autenticación y algunas

herramientas para administración y y herramientas para clientes. 

Al iniciar Squid da origen a un número configurable (5, de modo predefinido a través del parámetro

dns_children) de procesos de búsqueda en servidores DNS, cada uno de los cuales realiza una

búsqueda única en servidores DNS, reduciendo la cantidad de tiempo de espera para las

búsquedas en servidores DNS. 

No puede ser utilizado como Servidor Intermediario (Proxy) para protocolos como SMTP, POP3,

TELNET, SSH, IRC, etc. Si se requiere intermediar para cualquier protocolo distinto a HTTP,

HTTPS, FTP, GOPHER y WAIS se requerirá hacer uso de un servidor SOCKS como Dante 

No se instala por defecto, pero se encuentra en los repositorios de Ubuntu, por lo que puede ser

instalado a través deSynaptic, Aptitude o apt-get 

Configuración

Squid utiliza el archivo de configuración localizado en /etc/squid/squid.conf, y se puede editar con

el siguiente comando, en modo consola (terminal) 

sudo gedit /etc/squid/squid.conf 

Para editar al menos los siguientes parámetros: 

http_port 

cache_dir 

Al menos una Lista de Control de Acceso 

Al menos una Regla de Control de Acceso 

httpd_accel_host 

httpd_accel_port 

httpd_accel_with_proxy 

Parámetro http_port

Los Puertos Registrados recomendados para Servidores Intermediarios (Proxies) pueden ser el

3128 y 8080 a través de TCP. 

# You may specify multiple socket addresses on multiple lines. 

# Default: http_port 3128 

http_port 3128 

http_port 8080 

Si se desea incrementar la seguridad, puede vincularse el servicio a una IP que solo se pueda

acceder desde la red local. Considerando que el servidor utilizado posee una IP 10.140.111.1,

puede hacerse lo siguiente: 

# You may specify multiple socket addresses on multiple lines. 

# Default: http_port 3128 

http_port 10.140.111.1:3128 

http_port 10.140.111.1:8080 

Parámetro cache_mem.

El parámetro cache_mem establece la cantidad ideal de memoria para lo siguiente: 

Objetos en tránsito. 

Objetos frecuentemente utilizados (Hot). 

Objetos negativamente almacenados en el caché. 

De modo predefinido se establecen 8 MB. Si se posee un servidor con al menos 128 MB de RAM,

16 MB es el valor para este parámetro: 

cache_mem 16 MB 

Parámetro cache_dir:

El parámetro cache_dir se utiliza para establecer que tamaño se desea que tenga el caché en el

disco duro para Squid. De modo predefinido Squid utilizará un caché de 100 MB, de modo tal que

encontrará la siguiente línea: 

cache_dir ufs /var/spool/squid 100 16 256 

Mientras más grande sea el caché, más objetos se almacenarán en éste y por lo tanto se utilizará

menos el ancho de banda. La siguiente línea establece un caché de 700 MB: 

cache_dir ufs /var/spool/squid 700 16 256 

Los números 16 y 256 significan que el directorio del caché contendrá 16 directorios subordinados

con 256 niveles cada uno. 

Parámetro ftp_user.

Al acceder a un servidor FTP de manera anónima, de modo predefinido Squid enviará como clave

de acceso Squid@. Puede establecerse una dirección de correo especificada como clave de

acceso: 

ftp_user [email protected] 

Controles de acceso.

Las Listas de Control de Acceso definen una red o bien ciertas máquinas en particular. A cada lista

se le asignará una Regla de Control de Acceso que permitirá o denegará el acceso a Squid. 

Listas de control de acceso, se establecen con la siguiente sintaxis: 

acl [nombre de la lista] src [lo que compone a la lista] 

Si se desea establecer una lista de control de acceso que abarque a toda la red local, basta definir

la IP correspondiente a la red y la máscara de la sub-red. Por ejemplo, si se tiene una red donde

las máquinas tienen direcciones IP 10.140.111.n con máscara de sub-red 255.255.255.0, podemos

utilizar lo siguiente: 

acl miredlocal src 10.140.111.0/255.255.255.0 

Más conveniente es definir una Lista de Control de Acceso especificando un archivo localizado en

cualquier parte del disco duro, y la cual contiene una lista de direcciones IP.: 

acl permitidos src /etc/squid/permitidos 

El archivo /etc/squid/permitidos contendría algo como siguiente: 

10.140.111.2 

10.140.111.3 

10.140.111.4 

10.140.111.5 

10.140.111.6 

En caso de querer restringir el acceso de una pc, basta con eliminarla de la lista. 

Listas de control de acceso: Bloqueo de Dominios de Destino. 

Es conveniente definir una Lista de Control de Acceso especificando los dominios bloqueados en

un archivo localizado en cualquier parte del disco duro, y la cual contiene una lista de los dominios: 

acl bloqueados dstdomain /etc/squid/bloqueados 

El archivo   /etc/squid/bloqueados   contendría algo como siguiente : 

www.microsoft.com 

www.ibm.com 

www.hotmail.com 

Reglas de Control de Acceso.

Las Reglas de control de Aceso definen si se permite o no el acceso hacia Squid. Se aplican a las

Listas de Control de Acceso. Deben colocarse en la sección de reglas de control de acceso

definidas por el administrador, es decir, a partir de donde se localiza la siguiente leyenda: 

# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS 

La sintaxis básica es la siguiente: 

http_access [deny o allow] [lista de control de acceso] 

En este ejemplo la regla que establece acceso permitido a Squid a la Lista de Control de Acceso

denominada permitidos: 

http_access allow permitidos 

La expresión !, significa no. Pueden definirse así respecto de dos listas de control de acceso, lista1

y lista2, que se permite el acceso a Squid a lo que comprenda lista1 excepto aquello que

comprenda lista2: 

http_access allow lista1 !lista2 

Esta regla es útil cuando se tiene un gran grupo de IP dentro de un rango de red al que se debe

permitir acceso, y otro grupo dentro de la misma red al que se debe denegar el acceso. 

Aplicando Listas y Reglas de control de acceso.

Considerando como ejemplo que se dispone de una red 10.140.111.0/255.255.255.0, si se desea

definir toda la red local, utilizaremos la siguiente línea en la sección de Listas de Control de

Acceso: 

acl todalared src 10.140.111.0/255.255.255.0 

Listas de Control de Acceso: definición de una red local completa

# Recommended minimum configuration: 

acl all src 0.0.0.0/0.0.0.0 

acl manager proto cache_object 

acl localhost src 127.0.0.1/255.255.255.255 

acl todalared src 10.140.111.0/255.255.255.0 

A continuación procedemos a aplicar la regla de control de acceso: 

http_access allow todalared 

Reglas de control de acceso: Acceso a una Lista de Control de Acceso.

# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS 

http_access allow localhost http_access allow todalared http_access deny all 

La regla http_access allow todalared permite el acceso a Squid a la Lista de Control de Acceso

denominada todalared, la cual está conformada por 10.140.111.0/255.255.255.0. Esto significa que cualquier máquina desde 10.140.111.1 hasta 10.140.111.254 podrá acceder a Squid. 

Si solo se desea permitir el acceso a Squid a ciertas direcciones IP de la red local, deberemos crear un archivo que contenga dicha lista, en modo consola ejecutar 

sudo gedit /etc/squid/listas/redlocal 

Incluir las direcciones IP que desea confirmen la Lista de Control de acceso; 

10.140.111.1 

10.140.111.4 

10.140.111.17 

10.140.111.19 

10.140.111.21 

Denominaremos a esta lista de control de acceso como redlocal: 

acl redlocal src /etc/squid/listas/redlocal 

Listas de Control de Acceso: definición de una red local completa

# Recommended minimum configuration: 

acl all src 0.0.0.0/0.0.0.0 

acl manager proto cache_object 

acl localhost src 127.0.0.1/255.255.255.255 

acl redlocal src /etc/squid/listas/redlocal 

Aplicar la regla de control de acceso: 

http_access allow redlocal 

Reglas de control de acceso: Acceso a una Lista de Control de Acceso.

# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS 

http_access allow localhost 

http_access allow redlocal 

http_access deny all 

La regla http_access allow redlocal permite el acceso a Squid a la Lista de Control de Acceso

denominada redlocal, la cual está conformada por las direcciones IP especificadas en el archivo

/etc/squid/listas/redlocal. Esto significa que cualquier máquina no incluida en

/etc/squid/listas/redlocal no tendrá acceso a Squid. 

Parámetro chache_mgr. 

De modo predefinido, si algo ocurre con el caché, se envia un mensaje de aviso a la cuenta

webmaster del servidor, puede especificarse una distinta si se considera conveniente; 

cache_mgr [email protected] 

Caché con aceleración.

Cuando un usuario hace petición hacia un objeto en Internet, este es almacenado en el caché de

Squid. Si otro usuario hace petición hacia el mismo objeto, y este no ha sufrido modificación alguna

desde que lo accedió el usuario anterior, Squid mostrará el que ya se encuentra en el caché en

lugar de volver a descargarlo desde Internet. 

Proxy Acelerado

En la sección HTTPD-ACCELERATOR OPTIONS deben habilitarse los siguientes parámetros: 

httpd_accel_host virtual 

httpd_accel_port 0 

httpd_accel_with_proxy on 

Para crear el directorio cache, en modo consola ejecutamos; 

sudo /usr/local/squid/sbin/squid -z 

Iniciar, reiniciar y añadir el servicio al arranque del sistema.

Para iniciar por primera vez Squid en modo consola: 

sudo service squid start 

Para reiniciar en modo consola ejecutar: 

sudo service squid restart 

Para que Squid se inicie de manera automática al inicio el sistema, en modo consola ejecutar: 

sudo chkconfig squid on 

Cualquier error al inicio de Squid solo significa que hubo errores de sintaxis, errores de teclado o

de las rutas hacia los archivos de las Listas de Control de Acceso. 

Para realizar el diagnóstico de problemas indicándole a Squid que vuelva a leer configuración, lo

cual devuelve los errores que existen en el archivo /etc/squid/squid.conf, en modo consola

ejecutar: 

sudo service squid reload 

En caso de errores graves que no permiten iniciar el servicio, examinar el contenido del

archivo /var/log/squid/squid.outejecutando en consola: 

less /var/log/squid/squid.out 

Ajustes para el muro corta-fuegos.  

Re-direccionamiento de peticiones a través de iptables y Firestarter.

Para dar salida transparente hacia Internet a ciertos servicios yo al mismo tiempo re-direccionar peticiones hacia servicio HTTP para pasar a través del el puerto donde escucha peticiones Squid (8080), de modo que no haya salida alguna hacia alguna hacia servidores HTTP en el exterior sin que ésta pase antes por Squid, los protocolos HTTPS, FTP, GOPHER ni WAIS, deben ser filtrados a través del NAT. 

El re-direccionamiento se hace a través de iptables. Suponiendo que la red local se accede a través de una interfaz eth1, el siguiente esquema ejemplifica un re-direccionamiento: 

sudo /sbin/iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8080 

Lo anterior, que requiere un guión de cortafuegos funcional en un sistema con dos interfaces de red, hace que cualquier petición hacia el puerto 80 (servicio HTTP) hecha desde la red local hacia el exterior, se re-direccionará hacia el puerto 8080 del servidor. 

Utilizando Firestarter, la regla anteriormente descrita se añade en el archivo /etc/firestarter/user-post. 

sudo gedit /etc/firestarter/user-post 

y se agrega la línea 

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

Tutorial – COMO Instalar y configuar Proxy-Squid, y dejarlo transparente a los clientes.

Primero que todo quisiera agradecer a esta comunidad de ubuntu-es que siempre me a permitido avanzar en este mundo del Gnu/linux, aquí en estos foros hay de todo no duden en buscar, no son los unicos que tienen este “problema ” en especial, Tambien agradezco a la comunica GNU/LInux en general.

Bueno como ultimo aquí en el foro encontre todo lo que ocupaba pero en diferentes post y experiencias para hacer esto un poco mas claro tomare como base el tutorial de jarriaga del blog http://catrip.wordpress.com/ con mas exaltitud esta publicacionhttp://catrip.wordpress.com/2008/10/16/tutorial-squid-servidor-proxy-en-...Debo indicar que casi todo el tutorial esta pensado para usar la consola, aunque yo tuve un problema que me obligo a usar una distro liviana para descargar un archivo, que mas adelante explicare.

ES MOMENTO EMPEZEMOS con mi experiencia

Primero que todo en mi caso tenia la necesidad de conectar dos lineas de ADSL (Trabajo en eso cuanto lo tenga funcionando pongo un tuto)y montar un Proxy Squid para un Centro de internet o café internet, como sea que nombren en su pais.Segundo el equipo con que cuento es una PC de 2x Xeon de 2,8 2gb de ram y un disco duro de 2,3Gb, (debo aclarar que para un server squid no se ocupa tanta maquina o que pasa que esta PC esta sin uso y la aproveche :) )

En mi caso instale Ubuntu server 8,10 32bits, deje el particionado automatico, elegi que instalara los paquetes de Servidor DNS (porque yo necesite tener instalado el bind9) tengo dos tarjeta de red eth0, eth1 siendo la primera la que tiene la salida a internet, y otra la que se comunica con la red local por medio de un swicht, (Las terminales estan en winxp, por el momento)Cuando instale la maquina ubuntu me consulto cual tarjeta de red tenia queria usar para acceso a internet, en mi caso elegi la eth0, la cual esta conectada al modemADSL y configurada por DHCP

desde el modem,Ya terminado de instalar el Ubuntu Server 8,10, nos logueamos y revisamos como ubuntu nos detecto las tarjetas de red. Con el siguiente comando

sudo ifconfig

En mi caso solo me a mostrado la informacion de eth0,Para configurar la segunda tarjeta de red eth1 la cual tendra la salida a la red local via swicht haremos lo siguiente vamos a ir a cosola y nos dirigimos a /etc/networkcd /etc/networkahi esta un archivo que se llama interfaces lo abrimos para editar con nuestro editor favorito en mi caso vimsudo vim interfacesy nos abre este archivo, revisamos las siquientes lineas.

# The primary network interfaceauto eth0iface eth0 inet dhcp

A esto le agregamosauto eth1iface eth1 inet staticaddress 10.0.0.1netmask 255.255.255.0#gateway 10.0.0.1 #( el signo de # se utiliza para comentar en la linea de comando, esto lo hago para que la maquina no se confunda con las puertas de entrada , ami personalmente si no hago esto pierdo la conexión a internet)

Por defecto ubuntu detecta la interfaz de red que tengamos instalada y la pone en auto y con cliente dhcpen mi caso eth0 esta en automatico y es la que se asigna dinamicamente por el modem-router dsl de mi proveedor de internetQue fue lo agregamos? le estamos indicando a ubuntu que eth1 sea cargada automaticamente en cada inicio de ubuntu y que le asigne la direccion ESTATICA 10.0.0.1 con su mascara de subred 255.0.0.0  y que sea gateway o puerta de enlace 10.0.0.1(Aunque como esta comentada, no va a plicar) y con esto ya tenemos nuestra tarjeta de red configurada estaticamente solo nos resta guardar los cambios en el archivo y rearrancar el servicio de network, ¿Que como lo rearrancamos?  muy facilcd /etc/init.dsudo ./networking restartcomprobamos que tengamos todo listo nuevamente con  ifconfigsi ya tenemos nuestras 2 interfaces con ip y funcionando podemos continuar con este recorrido magico y misterioso

aquí otro detalle antes de continuar es que hagamos, un ping o si quieren

sudo apt-get updateesto para comprobar que aunque despues de modificar el archivo interfaces, podamos conectarnos a internet (A mi me consto llegarle que el problema era que la maquina no podia decidir en cual gateway salir a internet, por eso comentamos la gateway de eth1)

PASO NUMERO 2 - Organizando la FiestaAhora vamos a instalar nuestro servidor dhcpdsudo apt-get install dhcp3-servery listo con esto ya tenemos nuestro servidor DHCPD instalado, ufff que facil no?ahora vamos a configurarlo jejejenos vamos a la siguiente rutacd /etc/dhcp3y ahi editamos el siguiente archivosudo vim dhcpd.confque hacemos ahi??? primero borramos todo todo TODOy luego ponemos nuestra configuracion en mi caso esta

###Empieza script####option domain-name “123.123.com”; #(aqui no estoy seguro, yo puse el dominio del router)option domain-name-server 10.0.0.1;option subnet-mask 255.0.0.0;option netbios-name-servers 10.0.0.1;option routers 10.0.0.1;default-lease-time 600;max-lease-time 7200;

subnet 10.0.0.1 netmask 255.0.0.0 {range 10.0.0.2 10.0.0.99;option domain-name-servers 10.0.0.1;option subnet-mask 255.0.0.0;option netbios-name-servers 10.0.0.1;option routers 10.0.0.1; }

###Finaliza script ####

En este tutorial vamos a instalar el proxy con squid en cuanto a la configuracion de mi DHCPD lo explicare brevemente se pone el dominio al cual perteneces, nombre del servidor de dominios en el caso seria el mismo el router es el mismo servidor, el tiempo de asignacion de direcciones, despues se pone las subredes o Rangosya que configuramos nuestro archivo de configuracion dhcpd ahora si arrancamos el servicio uffff

cd /etc/init.dsudo ./dhcp3-server restart

y liiiiisto si no marco ningun error todo ira de pelos para comprobar que nuestros clientes ya tienen direccion ip del tipo 10.0.0.x en mi caso solo conecta algun cliente a tu SWITCH o HUB y haz ping a tu servidor 10.0.0.1 (recuerda que tu le puedes poner lo que quieres 192.168.x.x etc etc

dependiendo a tus necesidades, si marco un error el servicio quiere decir que hubo un error en tu configuracion…

ok ahora si podemos continuar….ya tenemos el dhcpd CORRIENDO y ACTIVO.

PASO NUMERO 3 - Preparando el pastel

Hasta aqui ya llevamos el 50% de nuestro tutorial ahora vamos con IPTABLES pero que pasa con ellas, pues que debemos asignar ciertas reglas para que se carguen automaticamente cada vez que inicie nuestro servidor proxy ubuntu.que vamos a hacer primero para que se carguen automaticamente? primero vamos a la ruta

cd /etc/init.d

en esta carpeta estan todos los archivos que se ejecutan al iniciar nuestro ubuntu asi que hay que poner uno para que tambien arranque y este contendra las sentencias de iptables para que funcione nuestro proxy TRANSPARENTE.dentro de la carpeta /etc/init.d creamos un nuevo archivo llamale como tu quieras iptables, superproxy, amo_y_señor o como quieras…..

sudo vim proxyrules.sh

entonces tenemos nuestro editor abierto ponemos las siguientes reglas###Empieza####echo “Aplican reglas de redirreciionamiento....”iptables -t nat -Fiptables -t nat -Xiptables -Fiptables -Xiptables -Z

echo 1 > /proc/sys/net/ipv4/ip_forwardiptables -t nat -A PREROUTING -i eth1 -s 10.0.0.0/255.0.0.0 -d 0.0.0.0/0.0.0.0 -p tcp –dport 80 -j REDIRECT --to-port 3128### Finaliza ####

explicamos rapidisimo que significa las reglas iptables , las primeras borran todas las reglas de iptables en ejecucion, el echo indica forwarding activado, la primera cadena de iptables indica que todas las peticiones que nuestra red 10.0.0.0/255.0.0.0  haga al puerto 80 (web) sea redireccionada al puerto 3128 (proxy), y que eth1 es la salida a internet.ahora grabamos nuestra archivo con Esc , : , x en caso de usar vim y damos permisos de ejecucion a nuestro archivo en mi caso con el siguiente comando

sudo chmod 700 proxyrules.sh

y despues de eso editamos el archivo rc.local

sudo vim rc.local

y le ponemos hasta arriba

cd /etc/init.d./proxyrules.sh

Listo con esto ya tenemos las reglas hechas ahora lo mas IMPORTANTE SQUID

PASO NUMERO 4 - Poniendo los Globos y las velitas

Para ahorrarse la descarga y copilacion del squid, hagamos lo siquiente

sudo apt-get install squid-prefetch

esto instalara el squid y un demonio (prefetch), porque no haciamos esto antes, porque antes solo descargando el squid-common via apt no funcionaba la opcion de hacerlo transparente para las terminales, yo instalaba el prefetch para q me funcionara para ciertos sitios por que daba un error de DNS, fue hasta que reinstale mi server para que se me ocurio instalar squid-prefecth primero y mi instalo tambien el squid del reposito de ubuntu, hice los ajustes al squid.conf y me funciona perfecto sin copilar y transparente

sale todos los archivos pertenecen a squid ahora vamos a la ruta de configuracion

si usamos el reposito Usemos cd /etc/squid/

editamos el archivo de configuracion squid.conf, si no esta o esta algun otro como squid.conf.default lo copiamos y lo renombramos squid.conf

abrimos squid.conf

sudo vim squid.conf

y en la linea que dice http_port vamos a ponerhttp_port 10.0.0.1:3128 transparentrecuerden que esta ip es la del servidor y el puerto es por default 3128mas abajo en la linea que dice cache_dir ponemoscache_dir ufs /usr/local/squid/var/cache 2048 16 256continuamos mas abajo en donde dice cache_effective_user ponemoscache_effective_user squidcache_effective_group squid

### Esto yo no lo he probadocontinuamos mas abajo y buscamos las acl’s si queremos que nuestros usuarios no descarguen archivos especificos creamos una acl de este tipoacl downloads url_regex -i \.dll$ \.bin$ \.cab$ \.asx$ \.vbs$ \.bat$ \.lnk$ \.scr$ \.pif$ \.msi$ \.exe$ \.mp3$ \.wmv$ \.zip$ \.mpg$ \

.torrent$ \.ppt$ \.com$ \.rar$ \.avi$ \.flv$http_access deny downloads###mas abajo damos acceso a nuestra red al proxyacl our_networks src 10.0.0.0/24http_access allow our_networksy listo grabamos nuestro archivoya nos estamos acercando Ufffff

PASO NUMERO 5 - Que comience la fiesta

Espero que este COMO sea de ayuda como toda la información en este foro, y Blog de Linuxeros que andan por hay,