Squid
-
Upload
pedro-nicoyani -
Category
Documents
-
view
20 -
download
1
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,