Configurar un Proxy Transparente con SQUID
April 14, 2009 — roaksoaxEn este tutorial se les mostrará como configurar un Proxy Transparente con SQUID. Para los que necesiten saber la definición de lo que es un proxy, y de lo que es un proxy transparente, esta pueden encontrarla aquí. Ahora bien, la estructura que se muestra a continuación es cómo se instalará el servidor proxy:
Bueno, entonces lo primero que tenemos que hacer es instalar Squid de la siguiente manera:
:~$ sudo apt-get install squid
Una vez instalado, squid nos proveerá un archivo de configuración localizado en /etc/squid/squid.conf. Este archivo contiene toda la documentación de squid. Al ser un archivo muy extenso, nosotros no necesitaremos tal configuración por tal motivo crearemos una copia de respaldo a este archivo de la siguiente manera:
:~$ sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.bak
Luego, moficamos el archivo de configuración original (/etc/squid/squid.conf) y eliminamos todo lo que contenga. Luego ingresamos lo siguiente:
http_port 3128 transparent
cache_mem 100 MB
cache_dir ufs /var/spool/squid 150 16 256
acl red_local src 10.10.10.0/24
acl localhost src 127.0.0.1/32
acl all src all
http_access allow localhost
http_access allow red_local
Luego, tenemos que configurar las iptables para que podamos tener acceso a Internet y para que lo hagamos mediante el proxy. Por esta razón ingresamos las siguientes reglas:
:~$ sudo iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j SNAT --to 192.168.1.1
:~$ sudo iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.1.1:3128
:~$ sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
NOTA: en las variables –dport, –to y –to-port, nótese que se utiliza doble guíon ( - )ántes de cada variable. Por motivos externos es que en el tutorial aparece como si fuese uno sólo.
Para terminar, tenemos que recargar la configuración de squid. Esto lo hacemos de la siguiente manera:
:~$ sudo squid -k reconfigure
Ahora simplemente desde las máquinas clientes probamos que tenemos acceso a Internet. Vale notar que esta configuración de proxy transparente solo sirve para almacenar en la caché y que la navegación por Internet sea más rápida. Si deseamos bloquear acceso a páginas, tenemos que crear más reglas. Algunas reglas de ejemplo se las mostaré en un próximo tutorial.
ACTUALIZACIÓN: Si deseamos hacer que las reglas iptables se carguen automáticamente cada vez que reiniciemos el sistema, pueden ver el siguiente tutorial: Restaurar las iptables en Ubuntu automáticamente.





June 4, 2009 at 7:53 PM
hola soy estudiante del ina la verdad es que tengo de trabajo un proxy transparente en un servidor ubuntu 8.10 con un cliente 8.04 desktop, hice esta configuracion y no sirvio, necesito como un paso a paso, contando con como configurara las tarjetas de red para que todo funcione. espara un trabajo para mañana, les agradecere montones la colaboracion
June 5, 2009 at 12:47 AM
Hola Rodrigo.
Para poder ayudarte tendrías que decirme que es lo que está fallando exactamente para poder ver cual es el error. TE recomeindo entres a freenode y al canal #ubuntu-es
Saludpos
June 5, 2009 at 3:14 PM
en donde estoy ahy un proxy
June 5, 2009 at 3:19 PM
en donde estoy hay un proxy que no me deja ir a donde usted me dice.
El caso es que estoy haciendo exactamente la misma confuguracion y no me estta sirviendo, hago la configuracion solo del proxy para que salga el cliente y ni eso.
Lo unico que pido es lo siguiente:
1 la configuracion de las dos interfaces
2- la configuracion del squid para que salga el cliente
3- las iptables necesarias para que el proxy sea transparente y que salga a internet.
Algo lei del net.ipv4.ip_forward = 1 que se encuentra en el archivo sysctl.conf en etc pero no entendi.
Espero que me pueda ayudar porque el proyecto es para hoy y no he podido hacer nada
June 8, 2009 at 7:58 PM
Pues en el archivo /etc/sysctl.conf pon: net.ipv4.ip_forward = 1 y luego reinicias tu PC. Por otro lado, no te sale ningúin mensaje de error?
June 17, 2009 at 3:00 AM
Mmmm. no haz visto el dibujo de la primera parte verdad, fijate bien
December 14, 2009 at 6:26 AM
Una preguna, en los navegadores de las maquinas clientes se debe poner “Sin proxy” o “Autodetectar proxy”???
Y en las maquinas clientes, solamente se debe de configurar la puerta de enlace (ip del servidor proxy)…estoy en lo cierto?
Gracias.
December 14, 2009 at 5:57 PM
Pues al ser proxy transparente, los clientes no necesitan saber que existe un proxy, asi que los navegadores deberian ir “Sin Proxy”,. y si, las maquinas tienen que tener como puerta de enlace el ip del proxy.
January 25, 2010 at 4:10 PM
Hola estoy tratando de configurar un servidor proxy TRANSPARENTE EN LINUX (CENTOS) con el programa SQUID. No se que error tengo. Al parecer todo estoy haciendo bien y nada!!!.
Tengo 2 tarjetas de red eth0 y eth1
Eth0 es la que viene directamente del provedor de internet.
La configuración de la tarjeta ETH0 es la siguiente
IP= 190.95.227.189
Subnet mask= 255.255.255.0
Puerta de enlace = 190.95.227.1
Eth1 es la que se va a conectar al SWITH para mi red interna
La configuración de la tarjeta ETH1 es la siguiente
IP= 192.168.0.1
Subnet mask= 255.255.255.0
Puerta de enlace = 0.0.0.0
Primero instale squid con
YUM –y install squid httpd
Hasta allí todo bien.
Luego cambie la configuración del Squid por las mias con las respecstivas restricciones (delay_spool)
http_port 3128 transparent
cache_mem 80000 MB
cache_dir ufs /var/spool/squid 150 16 256
acl red_local src 192.168.0.0/24
acl localhost src 127.0.0.1/32
acl all src all
http_access allow localhost
http_access allow red_local
acl bad_sites url_regex -i youtube.com redtube.com miniclip.com dalealplay.com dilandau.com buenamusica.com fulltono.com video.google.com
acl magic_words url_regex -i ftp .exe .mp3 .vqf .tar.gz .gz .rpm .zip .rar .avi .mpeg .ram .rm .iso .raw .wav .mov
delay_pools 2
delay_class 1 1
delay_class 2 1
delay_access 1 allow bad_sites
delay_access 2 allow magic_words
delay_parameters 1 8000/15000
delay_parameters 2 8000/15000
hasta alli todo bien (reinicie squid y todo salio OK) sin problemas
Luego agrege squid al inicio del sistema para que arranque atomaticamente.
chkconfig squid on
hasta alli todo bien (reinicie el sistema y cargo todo OK) sin problemas
Como es un proxy transparente hay que configurar el cortafuegos para que todo el trafico http(80) lo dirección al puerto 3128 del squid (IPTABLES) por lo que cambie las siguientes iptables con mis reglas.
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT –to 192.168.0.1
iptables -t nat -A PREROUTING -i eth1 -p tcp –dport 80 -j DNAT –to 192.168.0.1:3128
iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j REDIRECT –to-port 3128
Hasta allí todo bien
Como las reglas del cortafuego se borran al reiniciar el sistema, grabe mis reglas para que se cargen en el arranque:
/sbin/service iptables save
Hasta allí todo bien (guardo las reglas, reinicie el sistema, cargo squid todo OK e iptables todo OK)
A ESTAS ALTURAS YA DEBERIA FUNCIONAR
En los 18 equipos clientes con Windows XP SE TIENE LAS SIGUIENTES CONFIGURACIONES EN LA RED
Ip= 192.168.0.XX
Subnet MAsk = 255.255.255.0
Puerta de Enlace = 192.168.0.1 (eth1 de Linux)
EN TEROIA TODO ESTA BIEN NO LE ENCUENTRO ERROR.. PORQUE NO FUNCIONA?
EN EL COMPUTADOR CON CENTOS SI HAY INTERNET PUEDO NAVEGAR, Y HACIENDO PING DESDE LAS 18 ESTACIONES DE TRABAJO A 192.168.0.1 SI HAY PING!!
MIL GRACIAS POR TU AYUDA
January 27, 2010 at 12:30 AM
Tengo un problema con mi proxy,segui las indicaciones que a continuacion te muestro y si me funciona para el acceso a internet de las ip’s que quiero y restringe la paginas tambien pero no me funciona el msn, hotmail ni correos de outlook, me podrias ayudar porfavor:
~$sudo apt-get install squid
Despues configure el squid.conf de la siguiente manera:
http_port 3128 transparent
cache_mem 100 MB
cache_dir ufs /var/spool/squid 60000 16 256
ie_refresh on
offline_mode on
acl CONNECT method CONNECT
acl msn_url url_regex -i gateway.dll
acl msn_url url_regex -i ADSAdClient31.dll
acl msnmessenger req_mime_type ^application/x-msn-messenger$
acl msn_port port 1863
acl msn_method method POST
acl MSN_Messenger browser ^Mozilla.compatible;.MSN Messenger.
acl hotmail src 64.4.13.0/24
acl hotmail src 65.54.183.0/24
acl hotmail src 65.54.239.0/24
acl all src 0.0.0.0/0.0.0.0
acl red_local src 128.1.1.0/255.255.255.0
acl plus src “/etc/squid/plus.lst”
acl bloqueados url_regex “/etc/squid/bloqueados.lst”
acl files url_regex -i .exe .flv .mp4 .mp3 .avi .wma .mov .acc .wav .bat .asf .mpeg .3gp .swf
acl localhost src 127.0.0.1/255.255.255.255
http_access deny !plus MSN_Messenger
http_access deny !plus msnmessenger
http_access deny !plus msn_method msn_url
http_access deny !plus msn_port
http_access deny !plus hotmail
http_access deny !plus CONNECT msn_port
http_access deny red_local !plus bloqueados
http_access deny red_local !plus files
http_access allow red_local plus
http_access allow localhost
http_access deny all
Las iptables de la siguiente manera:
~$sudo iptables -t nat -A POSTROUTING -s 128.1.1.0/255.255.255.0 -o eth0 -j SNAT –to 192.168.1.1
~$sudo iptables -t nat -A PREROUTING -i eth1 -p tcp –dport 80 -j DNAT –to 192.168.1.1:3128
~$sudo iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j REDIRECT –to-port 3128
Pero no me funciona de manera transparente, tengo ke modificar las opciones del internet explorer o firefox y ponerle ke use el proxy manual 192.168.1.1 puerto 3128 y en la puerta de enlance de las tarjetas de red ponerle tambien 192.168.1.1
March 8, 2010 at 3:20 AM
Hola:
Me aparece una duda:
Yo en estos momentos poseo un DLink DIR-300, y un servidor Debian Lenny en AMD64, más los clientes con Wintendo, y las direcciones (incluyendo DNS’s) las asigna el Router con DHCP.
Mi idea es poner al servidor con SQUID en el DMZ.
Ahora bien la pregunta:
Después de instalar SQUID, ¿Quién debería resolver las direcciones, el servidor Linux o el Router?
De antemano muchas gracias por su pronta respuesta.
March 16, 2010 at 8:00 PM
Pregunto si este programa puede limitar el ancho de banda de los usuarios despues del proxy.
March 31, 2010 at 3:23 PM
Saludos
He estado tratando de instalar un servidor Proxy Transparente, y he buscado en varios foros sobre como instalarlo, y he probado muchas configuraciones para el squid y también sobre iptables, pero ninguna ha resultado, es por eso que acudo a los expertos para solicitarles me den una mano o sugerencias en esta configuración.
El asunto es que como son muchos pcs, se tomaría mucho tiempo en establecer la dirección del proxy y el puerto en cada una de los navegadores de esos pcs, y no se diga de las laptops, que hay que estar cambiando cuando se ingresa a la red y cuando se conectan a otra red particular o externa.
Es por eso que requiero instalar un proxy transparente, no sé en donde está el problema así que explico todo detallado de cómo están realizadas las configuraciones.
Explico mi escenario e incluyo un pequeño diagrama de mi red. en esta direccion http://www.dmonium.com/Red1.png
En la red están más de 400 pcs, entre fijas e inalámbricas, red utilizada clase B 172.16.0.0/22
Por lo que están divididas en subredes con VLANS por cada área y se utiliza un Switch Capa 3 CISCO 3560G, para interconectar cada sub redes
El Switch está configurado así:
interface GigabitEthernet0/1
description Puerto_de_Firewall
¡
Interface GigabitEthernet0/8
description BOD_TALL
switchport access vlan 30
switchport mode access
¡
Interface GigabitEthernet0/11
description ADM_PRO
switchport access vlan 60
switchport mode access
¡
interface GigabitEthernet0/36
description Puerto_de_Proxy
¡
Interface Vlan1
ip address 172.16.1.193 255.255.255.248
¡
Interface Vlan30
ip address 172.16.0.65 255.255.255.224
¡
Interface Vlan60
ip address 172.16.2.1 255.255.255.192
¡
Router rip
Version 2
Network 172.16.0.0
ip default-gateway 172.16.1.196
ip route 0.0.0.0 0.0.0.0 172.16.1.194
La tabla de vlans es la siguiente
VLAN Name Status Ports
1 default active Gi0/1, Gi0/36
30 BOD_TALL active Gi0/8
60 ADM_PRO active Gi0/11
Para cada subred en el switch esta creada una Vlan y asignada la primera ip disponible de esa subred a la interface de la VLan, y esta viene hacer la puerta de enlace de cada vlan.
Como el switch es de capa 3 y soporta protocolo rip v2, las subredes se comunican sin problema y el default-gateway del switch es la ip del proxy server.
Adicionalmente tengo una ruta estática para que todos los requerimientos adicionales los procese el firewall
El Servidor Proxy es un HP Proliant ML150, con Ubuntu Server 9.04, Kernel Linux 2.6.28-18-server on i686, la ip del servidor es 172.16.1.196 /255.255.255.248 en eth0, el Gateway para el servidor es 172.16.1.194, y dns el mismo 172.16.1.194
Contenido de SQUID 3.0.STABLE16
/etc/squid3/squid.conf
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563 8333 843 10000 2083 2096 8000 8014 # SSL_ports
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 10000 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 1443 #
acl Safe_ports port 85 #
acl Safe_ports port 8014 #
acl Safe_ports port 8333 #
acl Safe_ports port 8000 # Zimbra
acl sigef port 8080 #
acl CONNECT method CONNECT
acl horariou time MTWHFA 7:45-21:00
acl hgpt_net src 172.16.0.0/255.255.252.0
acl permitidos src “/etc/squid3/reglas/permitidos.txt”
acl castigado src “/etc/squid3/reglas/castigado.txt”
acl unico src “/etc/squid3/reglas/unico.txt”
acl privilegiados src “/etc/squid3/reglas/privilegiados.txt”
acl contenidos urlpath_regex “/etc/squid3/reglas/contenidos.txt”
acl correo url_regex “/etc/squid3/reglas/correo.txt”
acl porn url_regex “/etc/squid3/reglas/porn.txt”
acl sitios2 url_regex “/etc/squid3/reglas/sitios2.txt”
acl sitiosp url_regex “/etc/squid3/reglas/sitiosp.txt”
acl sitiosu url_regex “/etc/squid3/reglas/sitiosu.txt”
acl msn_messenger req_mime_type -i ^application/x-msn-messenger$
acl msn_url url_regex -i gateway.dll
acl msn_port port 1863
acl msn_method method POST
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow permitidos horariou all !porn
http_access allow privilegiados horariou sitios2
http_access allow hgpt_net horariou correo
http_access allow unico horariou sitiosu
http_access allow msn_messenger
http_access allow msn_method msn_url
http_access allow msn_port
http_access allow CONNECT msn_port
http_access deny castigado
http_access deny contenidos
http_access deny porn
http_access deny all
http_reply_access allow all
icp_access allow hgpt_net
icp_access deny all
htcp_access allow hgpt_net
htcp_access deny all
http_port 172.16.1.196:3128 transparent
cache_mem 128 MB
maximum_object_size_in_memory 200 KB
cache_dir ufs /var/spool/squid3 4096 32 512
maximum_object_size 81920 KB
access_log /var/log/squid3/access.log
cache_log /var/log/squid3/cache.log
cache_store_log /var/log/squid3/store.log
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern (cgi-bin|\?) 0 0% 0
refresh_pattern . 0 20% 4320
cache_mgr webmaster@tungurahua.gov.ec
cache_effective_user proxy
cache_effective_group proxy
httpd_suppress_version_string on
visible_hostname intranet
icp_port 0
error_directory /usr/share/squid3/errors/Spanish
dns_nameservers 172.16.1.194 172.16.1.133
coredump_dir /var/spool/squid3
En el archivo /etc/sysctl.conf la única línea habilitada es
net.ipv4.ip_forward=1
el resto de líneas está con # al inicio de cada una
y el contenido del archivo /etc/iptables.up.rules es
*filter
REROUTING ACCEPT [0:0]
OSTROUTING ACCEPT [0:0]
REROUTING ACCEPT [0:0]
OSTROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
*mangle
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
*nat
:OUTPUT ACCEPT [0:0]
-A PREROUTING -p tcp -m tcp -s 172.16.0.0/255.255.252.0 -i eth0 –dport 80 -j REDIRECT –to-ports 3128
COMMIT
Toda la red funciona sin ningún problema y los clientes navegan cuando se le pone la dirección ip del proxy y su puerto en el navegador, pero cuando se quita estas configuraciones no se puede navegar.
Se supone que cuando queremos navegar la pc se conecta a su puerta de enlace en la interface de la vlan dentro del switch, éste a su vez rutea por el default-gateway que viene hacer la ip del proxy-server y este a su vez tiene su Gateway apuntada al firewall.
Para mi parecer me falta algo adicional en la sección de la iptables
Espero que me ayuden con esto y obtener la solucion a mi problema,
Gracias
dmonium@hotmail.com
April 5, 2010 at 9:09 PM
nose que paso se borro el archivo errors del squid y cuando mmando a cargar service squid restart me envia un error que el archivo error no exsiste ayudamen a restaurar como ahgo porfa mi correo elprofe_182@hotmail.comen español que salga
April 8, 2010 at 2:25 PM
adicionalmente me falto indicar que si conecto una PC dentro de la VLAN donde esta el Proxy y a este pc le pongo como gateway la IP del Servidor Proxy, éste PC si navega normalmente sin establecer ningun parametro en los navegadores, osea que para esta VLAN si funciona el Proxy Transparente, pero para el resto de VLANs no
April 11, 2010 at 4:00 AM
Hola a todos. Tengo una pregunta… Y si la PC tuviera solo una tarjeta de red, se puede configurar tambien? En este caso como se hace?
Gracias.
April 11, 2010 at 4:02 AM
Me refiero a que si es posible consigurar un proxy transparente en un computador con Linux y solo una tarjeta de Red. Funcinaria tambien?
Gracias.
April 25, 2010 at 6:23 PM
con una interface no hay problemas, con 2 si, ya que hay que coger el trafico que entra por una, y despues del filtrado de peticiones, redirigirlo a la otra interface, y el trafico que recibes por la otra hacer lo mismo, cambiarlo para que salga a la lan local, que por cierto, alguien ha obtenido respuesta a sus dudas despues del tutorial?
April 28, 2010 at 9:01 AM
Luego, moficamos el archivo de configuración original (/etc/squid/squid.conf) y eliminamos todo lo que contenga. Luego ingresamos lo siguiente:
http_port 3128 transparent
cache_mem 100 MB
cache_dir ufs /var/spool/squid 150 16 256
acl red_local src 10.10.10.0/24
acl localhost src 127.0.0.1/32
acl all src all
http_access allow localhost
http_access allow red_local
Di ques si mejor borrar un archivo de configuracion que modificarlo, con un par de huevacos xD
June 29, 2010 at 5:02 PM
no se si es muy tarde pero para dmonium
ya verifico con rutas persistentes