• Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
Mi Blog
➤ Cómo configurar proxy SQUID en modo transparente

➤ Cómo configurar proxy SQUID en modo transparente

Un proxy, o servidor proxy, en una red informática, es un servidor —programa o dispositivo—, que hace de intermediario en las peticiones de recursos que realiza un cliente (A) a otro servidor (C). Por ejemplo, si una hipotética máquina A solicita un recurso a C, lo hará mediante una petición a B, que a su vez trasladará la petición a C; de esta forma C no sabrá que la petición procedió originalmente de A. Esta situación estratégica de punto intermedio le permite ofrecer diversas funcionalidades: control de acceso, registro del tráfico, restricción a determinados tipos de tráfico, mejora de rendimiento, anonimato de la comunicación, caché web, etc.

01.- CARACTERÍSTICAS

La palabra inglesa proxy significa procurador en español.

  • Comúnmente un servidor proxy, es un equipo informático que intercepta conexiones de red hechas desde un cliente a un servidor de destino.
    • El más popular es el servidor proxy de web. Interviene en la navegación por la web, con distintos fines: seguridad, rendimiento, anonimato, etc.
    • Existen proxys específicos para otros protocolos, como el proxy de FTP.
    • El proxy ARP puede hacer de enrutador en una red, ya que hace de intermediario entre ordenadores.
  • Proxy (patrón de diseño) también es un patrón de diseño (programación) con el mismo esquema que el proxy de red.
  • Un componente hardware también puede actuar como intermediario para otros.


Como se ve, proxy tiene un significado muy general, aunque siempre es sinónimo de intermediario. Cuando un equipo de la red desea acceder a una información o recurso, es realmente el proxy quien realiza la comunicación y a continuación traslada el resultado al equipo que la solicitó.

Hay dos tipos de proxys atendiendo a quién es el que quiere implementar la política del proxy:

  • Proxy local: En este caso el que quiere implementar la política es el mismo que hace la petición. Por eso se le llama local. Suelen estar en la misma máquina que el cliente que hace las peticiones. Son muy usados para que el cliente pueda controlar el tráfico y pueda establecer reglas de filtrado que por ejemplo pueden asegurar que no se revela información privada (Proxys de filtrado para mejora de la privacidad).
  • Proxy de red o proxy externo: El que quiere implementar la política del proxy es una entidad externa. Por eso se le llama externo. Se suelen usar para implementar cacheos, bloquear contenidos, control del tráfico, compartir IP, etc.

02.- VENTAJAS

En general, no solamente en informática, los proxys hacen posible:

  • Control: solamente el intermediario hace el trabajo real, por tanto se pueden limitar y restringir los derechos de los usuarios, y dar permisos únicamente al proxy.
  • Ahorro: solamente uno de los usuarios (el proxy) ha de estar preparado para hacer el trabajo real. Con estar preparado queremos decir que es el único que necesita los recursos necesarios para hacer esa funcionalidad. Ejemplos de recursos necesarios para hacer la función pueden ser la capacidad y lógica de cómputo o la dirección de red externa (IP).
  • Velocidad: si varios clientes van a pedir el mismo recurso, el proxy puede hacer caché: guardar la respuesta de una petición para darla directamente cuando otro usuario la pida. Así no tiene que volver a contactar con el destino, y acaba más rápido.
  • Filtrado: el proxy puede negarse a responder algunas peticiones si detecta que están prohibidas.
  • Modificación: como intermediario que es, un proxy puede falsificar información, o modificarla siguiendo un algoritmo.

03.- INCONVENIENTES

En general, el uso de un intermediario puede provocar:

  • Anonimato: si todos los usuarios se identifican como uno solo, es difícil que el recurso accedido pueda diferenciarlos. Pero esto puede ser malo, por ejemplo cuando hay que hacer necesariamente la identificación.
  • Abuso: al estar dispuesto a recibir peticiones de muchos usuarios y responderlas, es posible que haga algún trabajo que no toque. Por tanto, ha de controlar quién tiene acceso y quién no a sus servicios, cosa que normalmente es muy difícil.
  • Carga: un proxy tiene que hacer el trabajo de muchos usuarios.
  • Intromisión: es un paso más entre origen y destino, y algunos usuarios pueden no querer pasar por el proxy. Y menos si hace de caché y guarda copias de los datos.
  • Incoherencia: si hace de caché, es posible que se equivoque y dé una respuesta antigua cuando hay una más reciente en el recurso de destino. En realidad este problema no existe con los servidores proxy actuales, ya que se conectan con el servidor remoto para comprobar que la versión que tiene en caché sigue siendo la misma que la existente en el servidor remoto.
  • Irregularidad: el hecho de que el proxy represente a más de un usuario da problemas en muchos escenarios, en concreto los que presuponen una comunicación directa entre 1 emisor y 1 receptor (como TCP/IP).

04.- REQUISITOS

Para montar el proxy Squid3, necesitamos una serie de requisitos que detallaré a continuación:

  • Equipo con GNU/Linux Debian ( u otra distribución) y 2 interfaces de red. (Aunque podemos hacerlo con una sola interfaz, recomiendo aprender con 2 interfaces).
  • Instalar SQUID en el servidor GNU/Linux.
  • Disponer de equipos clientes con los que probar.

Para este tutorial he usado VMWARE WORKSTATION (puedes usar VirtualBOX) para virtualizar el servidor GNU/Linux con 2 interfaces de 2 y dos subredes y un Windows 7 a modo de cliente en la VLAN de la LAN. Tú puedes hacer lo mismo y probar sin miedo antes de montar el servidor físico.

05.- ESQUEMA DE RED

Nuestro esquema de red será muy sencillo y podrá trasladarse a la realidad tanto en un ámbito doméstico como en un ámbito de PYMES. Nuestra red estará "segmentada" en 3 zonas:

  • Internet: Comprenderá el tramo entre Internet y nuestra interfaz pública de Internet. Podremos usar tanto DHCP como IP estática.
  • Tramo Router-Servidor Proxy: Tramos de red que une la interfaz "externa" de nuestro servidor Proxy y una de las bocas del Router que nos da acceso a Internet
  • LAN Clientes: Utilizaremos un direccionamiento diferente al que hemos puesto en el tramo entre el Router-Proxy.

Proxy Squid Transparente

Esquema de Red

06.- INSTALACIÓN DE SQUID3

El software que usaremos como Proxy será el archiconocido SQUID-CACHE. Actualmente se encuentra en la versión 3 y lo tenemos disponible en los repositorios oficiales GNU/Linux Debian. Instalaremos el programa con el siguiente comando:

apt-get -y update && apt-get -y install squid3

07.- CONFIGURACIÓN DE SQUID MODO TRANSPARENTE

Lo primero será realizar un backup de nuestro fichero de configuración de Squid por si lo necesitamos restaurar. Para hacer el backup simplemente lo copiamos:

cp /etc/squid3/squid.conf /etc/squid3/squid.conf.backup

Vamos a configurar nuestro Proxy con las siguientes políticas:

  • Puerto Squid: http_port 3128 transparent
  • Memoria asignada: cache_mem 64 MB
  • Directorio de storage: cache_dir aufs /var/spool/squid3 500 16 256
  • Declaramos nuestra red local: acl mired src 172.27.1.0/24
  • Declaramos nuestro localhost: acl localhost src 127.0.0.1/32
  • Prohibimos ciertas palabras: acl def_prohibidas url_regex "/etc/squid3/bloqueos/prohibidas"
  • Permitimos accesos desde mired y bloqueamos palabras: http_access allow mired !def_prohibidas
  • Permitimos accesos desde localhost: http_access allow localhost
  • Denegamos todo lo que no se haya permitido previamente: http_access deny all

Proxy Squid Transparente

Fichero squid.conf

Para que nos funcione el HTTPs será necesario añadir estas 2 líneas al fichero de squid.conf:

acl https port 443
http_access allow https

Hay que tener en cuenta que nuestro equipo cuenta con 2 interfaces de red: eth0 192.168.1.10/24 (Internet) y eth1 172.27.1.1/24 (LAN).

Proxy Squid Transparente

Direcciones IP de las interfaces del Proxy

En el fichero de "prohibidas" se irán poniendo las palabras que serán bloqueadas por el proxy. Cada palabra en una línea. (pej: sex, porn, fake, casino..)

Ahora lo único que tenemos que hacer es reiniciar/arrancar squid:

/etc/init.d/squid3 restart

08.- CONFIGURACIÓN DE IPTABLES EN EL PROXY

Activamos el IP FORWARDING en el servidor y hacemos que todo lo que salga desde la LAN hacia el exterior por el puerto 80 y 443 lo reenvie al 3218 de localhost para cachear. En este punto radica la "Magia" del proxy transparente donde los usuarios no deberán tocar nada en sus navegadores para navegar a través del Proxy Web. Esto es transparente para el usuario y no necesita hacer configuraciones especiales en su equipo:

root@lpr: echo 1 > /proc/sys/net/ipv4/ip_forward
root@lpr: iptables -t nat -A PREROUTING -p tcp -s 172.27.1.0/24 --dport 80 -j REDIRECT --to-port 3128
root@lpr: iptables -t nat -A PREROUTING -p tcp -s 172.27.1.0/24 --dport 443 -j REDIRECT --to-port 3128
root@lpr: iptables -t nat -A POSTROUTING -s 172.27.1.0/24 -d 0.0.0.0/24 -o eth0 -j MASQUERADE

09.- CONFIGURACIÓN DE LOS CLIENTES

En los equipos clientes, la ventana de usar Squid en Modo Transparente es que no debemos configurar la dirección de nuestro proxy, ya que esto se hará de forma automática y de forma transparente en el Proxy gracias a IPTables:

Proxy Squid Transparente

Configuración Proxy en los Clientes (Ninguna)

10.- COMPROBACIONES

Desde Firefox, instalamos el componente Firebug (Chrome trae el suyo propio instalado) y una vez instalado y reiniciado Firefox abriremos una Web cualquiera y pulsaremos F12. Se nos abrirá Firebug y debemos ir a la pestaña de RED->Todos. Pulsamos CTROL+F5 para recargar la página y veremos en la columna IP REMOTA quíen es el servidor que nos está entregando la página web. Si tu configuración es correcta, deberá salir la IP:PUERTO de tu servidor Proxy como en la ilustración siguiente:

Proxy Squid Transparente

Firebug en Firefox

Para comprobar si estamos usando la caché del proxy, podemos mirar en los logs de SQUID con tail -f /var/log/squid/access.log donde podremos ver principalmente los TCP_HIT y TCP_MISS de las peticiones realizadas por los clientes de la LAN.

Proxy Squid Transparente

Logs de SQUID

Y con esto ya tenemos configurado nuestro servidor Proxy en MODO TRANSPARENTE.

ENJOY!


Raúl Prieto Fernández

Sitio Web: /

Si quieres ir rápido, ve solo. Si quieres llegar lejos, ve acompañado.

Comentarios  

sazo
+1 # sazo 26-11-2016 20:32
hola muy buen post solo tengo algunas dudas cuando das el tamaño de la cache pones 500 esos son megas o en que unidad se mide? :P y la otra las demas lineas del squid.conf las borraste o solo modificaste estas lineas escritas? se que me lio un poco pero sabes como hacer catching de youtube me interesa mucho este tema :) gracias por compartir tus conocimientos
Responder
Ral Prieto Fernndez
# Raúl Prieto Fernández 26-11-2016 20:43
Hola Sazo:

Muchas gracias por tus comentarios.

La unidad de medida para la caché son MegaBytes, a continuación se indican el número de directorios para el primer nivel y finalmente el número de directorios para el segundo nivel.

El fichero de squid.conf hice una copia de seguridad de él, y comencé a crear el fichero desde 0 con los parámetros que ves en el tutorial.

Espero haberte ayudado. :lol:

Un saludo
Responder
jimmy
# jimmy 27-11-2016 18:14
:sad: Hola queria saber como configuraste las tarjetas de red mas detalladamente ya que no le he entendido ,espero que me contestes gracias.
Responder
jimmy
# jimmy 27-11-2016 18:16
:sad: Buen post , queria saber como configuraste las tarjetas de red , saludos .
Responder
Ral Prieto Fernndez
# Raúl Prieto Fernández 27-11-2016 18:33
Hola Jimmy:

Realmente la parte de configuración de las interfaces de red no está explicada en este tutorial. Entiendo que, si alguien quiere configurar alto "tan avanzado" como un Proxy Squid debería saber como se configuran las interfaces de red. De todas formas te voy a explicar como se configuran a mano en cualquier distribución.

El equipo tiene 2 interfaces, eth0 y eth1. Eth0 es la que "Conecta con Internet" y eth1 es la de la LAN interna (basándome en el esquema del principio del tutorial).

La configuración sería la siguiente para eth0:
ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up
route add default gw 192.168.1.1 dev eth0


La configuración sería la siguiente para eth1:
ifconfig eth1 172.27.1.1 netmask 255.255.255.0 up

Si necesitas DNS en el servidor, que entiendo que si:

echo "nameserver 8.8.8.8" >> /etc/resolv.conf
echo "nameserver 8.8.4.4" >> /etc/resolv.conf

Por supuesto, puedes usar herramientas gráficas para estas configuraciones como NetworkManager.

Espero haberte ayudado.

Un saludo y gracias por visitar mi blog.
Responder
jimmy
# jimmy 27-11-2016 21:09
Gracias Hermano , soy principiante aun y creeme me esta dando mucho trabajo hacer esto :c gracias por ayudarme
Responder
Ral Prieto Fernndez
# Raúl Prieto Fernández 27-11-2016 22:11
Hola:

De nada, siempre me gusta ayudar a la gente. Cualquier duda que tengas, no dudes en comentarlo.

Un saludo
Responder
edilberto tah uh
# edilberto tah uh 18-01-2018 20:44
hola soy nuevo en esto del proxi cache, queria ver si alguien me ayuda a iniciar con la configuracion de la misma en mi servidor

agradezco quien me pueda ayudar
Responder
Ral Prieto Fernndez
# Raúl Prieto Fernández 19-01-2018 13:21
Hola Edilberto:

¿Que duda tienes en concreto? En este artículo está todo explicado paso a paso :)

un saludo
Responder
Merkhyn Leonardo Man
# Merkhyn Leonardo Man 02-12-2016 15:54
Hola, me ayudó bastante tu tutorial. Ahora una pregunta, como haría para configurar el caso de que no quisiera que ingresen a ciertas páginas?? Muchas gracias
Responder
Ral Prieto Fernndez
# Raúl Prieto Fernández 02-12-2016 17:03
Hola:

Si lo que quieres hacer es bloquear determinadas páginas es muy sencillo. Supongamos que queremos bloquear *.facebook.com y *.thepiratebay.org (subdominios incluidos).

Necesitarás:

1.- Crear un fichero de texto plano con las direcciones que queremos bloquear, una por cada línea:

.facebook.com
.thepiratebay.org

Puedes crear dicho fichero -por ejemplo- en /etc/squid/listas/direcciones-bloqueadas

2.- Configurar/Añadir una lista de control (ACL) para el fichero creado en el fichero de configuración de squid.conf:

acl direcciones-bloqueadas dstdomain "/etc/squid/listas/direcciones-bloqueadas"


3.- Añadir la regla de control para que bloquee todas las direcciones incluidas en dicha lista:

http_access allow localnet !direcciones-bloqueadas


4.- Reiniciar Squid

Un saludo
Responder
Andre
# Andre 04-12-2016 21:29
Hola necesito implementar control de contenido para mi isp- de 12.000 paginas web, tengo 400 usuarios .. cual es la maquina o servidor recomendado para esto, voy a utilizar squid... mil gracias por tu amable respuesta
Responder
Ral Prieto Fernndez
# Raúl Prieto Fernández 05-12-2016 09:47
Hola Andre:

Lo primero que hay que tener en cuenta a la hora de montar un servidor Proxy con Squid es que éste trabaja con objetos en memoria para acelerar la entrega de contenido y contenido en disco que es menos accedido que el de la memoria RAM.

Revisando varios sites de Internet
, para unos 400 usuarios usando Proxy Squid las recomendaciones que he visto (y que me parecen acertadas) son las siguientes:

1.- RAM , Mínimo 16GB. Moderado 32GB y lo más optimo +64GB.

2.- Procesador: Mínimo Quad Core recomendado Octa core ó superior.

3.- Almacenamiento: En función de tus necesidades, 2x1TB SAS 15K o 2x1TB SSD.

4.- Interfaces de red, por supuesto si dispones de presupuesto, tarjetas de Fibra de 10Gb en bonding active-pasive.


Respecto a los discos, debes tener en cuenta que puedes montarlos en RAID0,RAID1,RAID5 para aumentar la velocidad y/ó acceso de lectura/escritura. Squid permite poner en el fichero de configuración varios directorios de almacenamiento de la caché, por lo que no necesitas configurar RAID si no quieres, pero es recomendable poner dos discos de 1TB mejor que 1 disco de 2TB.

Un saludo y espero que te sirva para orientarte.

Un saludo
Responder
Leonardo
# Leonardo 11-12-2016 23:40
Ya configure todo pero me tira un error con el certificado SSL en mis clientes :( que pude haber hecho mal??
Responder
Ral Prieto Fernndez
# Raúl Prieto Fernández 14-12-2016 15:08
Hola:

Para la parte de https es necesario añadir al fichero de squid.conf la siguiente configuración:

acl https port 443
http_access allow https


Pruébalo y me comentas.

un saludo
Responder
FONEO CO foneo
# FONEO CO foneo 27-12-2016 00:40
Gracias Raúl por la explicación, tengo una pregunta, en un escenario donde tengo muchos usuarios conectados por sus smartphones a la red WiFi de un evento, Squid no aplicaría? (me refiero a que como indicas, los clientes deberán preconfigurar apuntando a la IP del transparent proxy y su puerto). Mi objetivo es tener un cache para optimizar el costoso ancho de banda y mejorar los tiempos de respuesta hacia portales sociales donde los usuarios se conectan, como facebook, twitter, instagram y snapchat, pero no se si por dhcp pueda entregar ese dato cuando el smartphone se asocia a los APs.
Responder
Ral Prieto Fernndez
# Raúl Prieto Fernández 27-12-2016 08:08
Hola:

Concretamente revisando tu mensaje y el artículo, he detectado que el Punto 9 estaba mal.

La gran ventaja de usar Squid en Modo Transparente es que los clientes conectados a la red no deben configurar absolutamente nada.

Por tanto, esto vale perfectamente para el escenario que quieres montar con clientes WiFi.

El esquema de tu red podría ser algo asi:

[ Clientes Wi-Fi ] ---> [ Proxy Squid + DHCP ] ----> [ Router Internet ] ----> Internet


El servidor DHCP puedes ponerlo en el mismo Squid o dejar el que tengas configurado en el Router de Internet.

Sin duda, puedes acelerar la navegación de páginas Web como Facebook, Twitter,etc ... para los clientes de tu red. Las imágenes y los ficheros estáticos se cachearán y se servirán a una velocidad muchísimo mayor.

Cualquier duda me dices, yo he realizado el mismo escenario que planteas durante bastante tiempo ;)

Un saludo
Responder
grupo carma
# grupo carma 28-12-2016 02:10
Buenas amigo vi que todos te felicitan una pregunta quisiera saber si funciona de la misma manera en Windows gracias de antemano
Responder
Ral Prieto Fernndez
# Raúl Prieto Fernández 28-12-2016 16:57
Hola:

Nunca he instalado Squid en Windows, pero el concepto es exactamente el mismo que en GNU/Linux. El problema es que se instala y se arranca de formas totalmente diferentes a como se hace en GNU/Linux.

He visto varios vídeos bastante buenos donde explican como instalarlo y configurarlo sobre Windows, a ver si te sirven:

https://www.youtube.com/watch?v=0_rvIeUuSW8

https://www.youtube.com/watch?v=1VZgkqLz8XI

Si tienes problemas, puedo hacer un nuevo tutorial para instalarlo en Windows (cuando tenga un rato libre).

Un saludo.
Responder
Frann
# Frann 30-03-2017 12:55
:-) amigo como haria yo en el caso de tener que instalar o distribuir una cantidad de internet a juegos online y otra cantidad a navegación como YouTube y eso t agradecería q me indiques esa parte gracias de antemano
Responder
Ral Prieto Fernndez
# Raúl Prieto Fernández 15-05-2017 08:41
Hola Frann: No entiendo del todo tu pregunta, ¿podrías ser mas específico?

Un saludo
Responder
uriel reyes
# uriel reyes 14-05-2017 01:40
disculpa en donde se hace la configuracion de las iptables se habre algun archivo o se crea uno nuevo , disculpa mi ignorancia soy nuevo en esto
Responder
Ral Prieto Fernndez
# Raúl Prieto Fernández 15-05-2017 08:51
Las reglas de Iptables del Paso8 son reglas creadas "en caliente", es decir, que aplican solamente mientras el equipo esté arrancado y no se reinicie.

SI lo que quieres es que sean permanentes, depende también de la distribución que uses. Por ejemplo en Red Hat tienes que meter las reglas en un formato determinado en /etc/sysconfig/iptables

Si usas otra distribución tienes que mirar como es, pero yo suelo crearme un script .sh donde meto las reglas tal y como las escribo en el shell y lo cargo en el arranque. (esta parte depende de la distribución).

Para guardar las reglas activas (en el formato esperato por iptables) que hay es con el siguiente comando: iptables-save > fichero_salida

Por ejemplo en Red Hat sería:

iptables-save > /etc/sysconfig/iptables
systemctl restart iptables ó /etc/init.d/iptables restart

Prueba a ver y me comentas, si quieres puedo buscarte algún tutorial sencillo en función de tu distribución.

Un saludo
Responder
jose cuevas
# jose cuevas 16-05-2017 03:26
Muchas gracias por el aporte amigo.

quiero implementar servidores squid en cada una de
las celdas de un wisp. sin embargo , tengo la duda
de que si mi cache esta ... bueno , "cacheando". me meto en tail -f /var/log/squid/access.log y no me sale ni HIT ni MISS. simplemente me sale el trafico de los puertos..
sin embargo no he probado la configuracion del todo como tu la has puesto ahi. pues aun no la he puesto modo transparente, simplemente configure el browser para que utilice el proxy que esta en mi lan (para hacer pruebas).
ademas , me extraña que en los logs solo salga el trafico de mediante el protocolo TCP, quisiera saber si el trafico UDP corre normal.
gracias
Responder
Ral Prieto Fernndez
# Raúl Prieto Fernández 23-05-2017 12:38
Hola José:

Podrías poner aquí tu configuración de Squid, las reglas de Iptables que tienes configuradas y tu direccionamiento de red para hacerme una idea de como tienes montada la red?

Squid en modo No-Transparente es sumamente sencillo de montar.

Un saludo
Responder
kcdy
# kcdy 24-05-2017 22:01
saludos mi roblema es que no puedo limitar las ip algo mal puesto que no consigo ver ahora, me podrias ayudar
podria mandarte el squid.conf
Responder
Ral Prieto Fernndez
# Raúl Prieto Fernández 07-06-2017 21:55
Hola:

Ya he visto que has contactado conmigo a través de mi email y me has enviado el squid.conf. Le doy un repaso y te conecto a través del correo electrónico.

Un saludo
Responder
Roberto Galvan
# Roberto Galvan 26-06-2017 07:16
Hola qué tal, una pregunta ya un poco fuera del tutorial. Yo creo un archivo de configuración y agregó los usuarios con nombre y contraseña para conectar con el squid.... ¿hay forma de monitorear a los usuarios activos? Lo comento ya que podría darse el caso de que se lleguen a pasar el usuario y contraseña y pueda haber múltiples usuarios usando la misma cuenta. Intenté hacerlo por IP pero es dinámica. Gracias
Responder
Ral Prieto Fernndez
# Raúl Prieto Fernández 26-06-2017 09:13
Hola Roberto:

La verdad es que nunca me he visto en la necesidad de saber que usuarios están conectados al proxy. He estado revisando un poco en Google y a lo mejor alguna de estar herramientas te sirve (algunas analizan logs y otras parecen en tiempo real):

Firewall Analyzer (Squid Proxy Log Analyzer) Generates Squid Reports
https://www.manageengine.com/products/firewall/squid-proxy-report.html

Web administration console for Squid 3.2x
https://ubuntuforums.org/showthread.php?t=1927505

MYSAR
https://sourceforge.net/projects/mysar/

SARG
https://www.tecmint.com/sarg-squid-analysis-report-generator-and-internet-bandwidth-monitoring-tool/

Si alguno de ellos te sirve dímelo, que también me interesa saber cual de ellas cumple tus expectativas :D
Responder
Nicola Salgado
# Nicola Salgado 31-07-2017 08:03
Hola Raul

Muy buen tutorial.

Sabes como puedo hacer para que funcione squid en modo transparente con 1 tarjeta de red.
La verdad me gustaria tener un esquema en el cual si el servidor squid esta apagado, siempre los usuarios podran navegar, pero sin filtro.
Y si el servidor vuelve a encender automaticamente como esta confirgurado transparente empieza a filtrar el contenido.
Responder
Ral Prieto Fernndez
# Raúl Prieto Fernández 16-08-2017 12:30
Hola nicola:

Perdona la tardanza por responder :)

Squid lo puedes configurar con una única tarjeta sin problemas. Lo ideal es con 2, pero puedes hacerlo con una sola adaptando la configuración de "2 tarjetas" a una una ethernet, es muy sencillo.

Pero el problema viene del lado de los PCs clientes. Lo que tu quieres ( según he entendido) es que los clientes naveguen a través del proxy transparente si el proxy transparente está encendido.

Se me ocurren 2 ideas de hacerlo:

1.- Añadir 2 "default gateways" en los equipos clientes pero con métricas diferentes. Las puertas de enlace serían, la IP del Proxy y la del router de Internet. La del proxy tendría mas prioridad, por lo que siempre intentaría salir primero por dicha IP si está activa y tiene conectividad a Internet. Leyendo por intenet, esto a veces da problemas, pero es viable y factible. Busca por "multiple gateways metric windows" en Google y verás como se hace.

2.- La segunda es, en los equipso clientes hacer un pequeño script en Shell/Batch que se ejecute cada minuto y haga Ping (u otra prueba como una descarga de internet). La primera prueba sería con la Default_Gateway configurada con la IP del SQUID, intentar descargar algo, si falla, el script cambia la ip Default_Gateway a la del Router ...

A ver si con estas pistas te ayudo, pero lo que planteas, se puede hacer 100% :D

un saludo
Responder
Yaciel
# Yaciel 22-08-2017 14:36
Hola y saludos, me gustaría un poco de ayuda para configurar squid si está dentro de sus posibilidades... weno la cosa es asi...
tengo un server montado con windows server 2016 y un dominio configurado (AD), mas un server de correo montado en MDaemon v13. Lo que quiero es aprender squid de cero pues nunca he trabajado con el y quiero hacer un par de cosas COMO: hacer que los usuarios del dominio se puedan auntenticar con sus cuentas de dominio en squid, crear reglas para denegar acceso a redes sociales, limitar la velocidad de descarga de los usuarios, prohibir la descarga de archivos muy pesados como ISOs pues mi conexion es muy mala entre otro par de reglas. Si me pudiera ayudar sería su fan #1 jajaja nah!!! jajaja se lo agradecería un montón... weno man gracias de antemano
Responder
Ral Prieto Fernndez
# Raúl Prieto Fernández 23-08-2017 18:42
Hola Yaciel:

Gracias por visitar y comentar en mi página.

Nunca he necesitado la integración de usuarios de un dominio Windows con Squid, por lo que directamente no puedo ayudarte, pero buscando por internet he visto que es "bastante sencillo" tirando de la autenticación de Kerberos en Linux y hay bastantes manuales paso a paso por internet. Por ejemplo aquí tienes un ejemplo para CentOS/RHEL: https://opensourceeducation.net/squid-proxy-server-windows-active-directory-authentication-rhel-centos-6-x.

Permitir/Aceptar el tráfico a determinadas páginas es sumamente sencillo con las ACLs (Access Control List) donde se le especifica quien puede ver qué contenido. Por ejemplo, si quieres bloquear el acceso a Facebook:

Abre el fichero de configuración de Squid /etc/squid3/squid.conf
y añade esto:
acl bad_url dstdomain "/etc/squid3/sitios-bloqueados.acl"
http_access deny sitios-bloqueados

Luego en /etc/squid3/sitios-bloqueados.acl añade los dominios que quieras bloquear , acepta espresiones regulares:
.google.com
.msn.com
.app.facebook.com
.facebook.com
.instargram.com

Busca en internet "bloquear paginas con squid" y verás que todo se hace con las ACLs. Hay millones de ejemplos.


A Squid puedes decirle qué quieres cachear y que no, y por supuesto que tamaño.

Por ejemplo con la directiva maximum_object_size 5 MB estamos indicando que solo guarde ficheros que ocupen hasta 5MB, los de mayor tamaño nunca los cacheará.

Si quieres que los ficheros *.iso no se cacheen, tambien puedes hacerlo. Por ejemplo con:

acl DENYISO urlpath_regex \.iso
no_cache deny DENYISO

Te recomiendo echarle un vistazo a la web de Squid, ya que alli viene "todo" ;)

www.squid-cache.org/

Un saludo
Responder
john
# john 16-10-2017 03:49
que se supone que es acl mired
Responder
Ral Prieto Fernndez
# Raúl Prieto Fernández 16-10-2017 08:38
Hola John:

Es la forma de declarar una red para luego usarla en una regla de control. En este caso "acl mired src 172.27.1.0/24" estamos creando una red llamada mi red, con ese direccionamiento a la cual podremos llamar en una regla ALLOW o PERMITR haciendo referencia a no nombre "mired".

Puedes ponerle cualquier nombre, lo lógico es que sea algún nombre identificativo, por ejemplo "oficina", "casa" , "laboratorio1" etc etc ..

Un saludo
Responder
Sebastian
# Sebastian 05-12-2017 21:37
Hola te hago una consulta, yo ya tengo mi red consolidada con sequreisp, mi red es 192.168.1.1/24 Y quiero tener squid3 transparente en el ip 192.168.1.2. Mi pregunta es si yo les cambió el DNS primario a mis clientes 192.168.1.1 por 192.168.1.2 el caché funciona?
Espero que entiendas mi pregunta
Responder
Ral Prieto Fernndez
# Raúl Prieto Fernández 07-12-2017 09:25
Hola Sebastián:

Pues si tu servidor de DNS es 192.168.1.1, y a tus clientes le cambias la IP de su DNS de 192.168.1.1 a 192.168.1.2, lo que no irán son las resoluciones de nombres DNS.

Tienes 3 opciones (que se me ocurran ahora mismo):

1.- Montar un servidor de DNS con BIND (por ejemplo) en el equipo 192.168.1.2 y de esta forma que 192.168.1.2 sea capaz de resolver DNS tanto locales como de Internet.
2.- Hacer REDIRECT de las peticiones que lleguen al puerto 53 de 192.168.1.2 que las reenvie al 192.168.1.1. Esto se hace con iptables y sería algo asi (ojo, no lo he probado pero creo que está bien)

iptables -t nat -A PREROUTING -i ethX -p udp --dport 53 -j DNAT --to 192.168.1.1
iptables -t nat -A PREROUTING -i ethX -p tcp --dport 53 -j DNAT --to 192.168.1.1

3.- Dejar que todo lo que vaya al 192.168.1.1 pase por el proxy 192.168.1.2 sin ninguna política de cacheo, redirección ni nada por el estilo. De esta forma las recolusiones siemper las hará 192.168.1.1 pero todo se cacheará en 192.168.1.2.

Recuerda que tienes que tener el ip_forwardding activado.

Un saludo
Responder
Sebastian
# Sebastian 07-12-2017 13:39
Muchas gracias Raúl, en estos días lo pruebo y te comento como me fue
Responder
Aldo
# Aldo 15-02-2018 18:49
Hola Raúl

Excelente tutorial.

Quiero realizar un firewall con Squid para evitar que en la oficina se conecten algunas páginas, me gustaría saber cuáles serían las especificaciones necesarias del equipo para realizarlo.

De antemano gracias
Responder
Ral Prieto Fernndez
# Raúl Prieto Fernández 16-02-2018 08:45
Hola Aldo:

Pues en función del tamaño de tu oficina los requerimientos podrán varíar, pero para una oficina pequeña-mediana debes tener en cuenta que:

1.- Procesador (Mínino Mínimo Intel i5, Recomendado Intel i7 o Xeon)

2.- Memoria RAM (Mínimo 8GB, recomendado 16GB)

3.- Discos SSD para el S.O. Si quieres tener mucha mucha caché, puedes meter un disdo HDD normal de 2-4Teras y guardar la cache solo en ese disco.

4.- Ethernet: Recomendado Red Gigabit ( si tu red lo soporta)

En función de tu presupuesto, con estas indicaciones crqo eue puede servirte. Los puntos mas importantes son la RAM, y el SSD.

Un saludo
Responder
Aldo
# Aldo 16-02-2018 18:43
Gracias por su pronta respuesta,

En muchos tutoriales y o páginas comentan que con una máquina pequeña se puede realizar el proxy.

Hablo.en cuento a características.

Pero gracias por su repuesta
Responder
Ral Prieto Fernndez
# Raúl Prieto Fernández 18-02-2018 09:53
Hola Aldo:

La respuesta corta es : si. Se puede montar un proxy con un equipo poco potente. Todo depende del rendimiento que necesites y del tráfico que haya en tu red.

Se puede montar un Proxy incluso en una RaspberryPi ;)


Un saludo
Responder
Rogelio
# Rogelio 03-04-2018 15:32
Que configuracion deberia hacer en mi servidor para que permita y resuelva peticiones a determinados rango de puertos udp de una direccion ip en especifico. Gracias de antemano
Responder
Ral Prieto Fernndez
# Raúl Prieto Fernández 03-04-2018 15:56
Hola Rogelio:

Pues la pregunta es tan amplia y con tan poco detalle que no se exactamernte cual es tu duda en concreto. De todas formas te respondo de una forma un poco genérica.

Si quieres permitir que un equipo permita el tráfico a través de él, desde una IP a otra IP remota y a determinados puertos UDP, con iptables sería asi:

iptables -t filter -A FORWARD -p udp -s IP_LOCAL_PC -d IP_REMOTA --dport INICIO:FIN -j ACCEPT

Ejemplo:
iptables -t filter -A FORWARD -p udp -s 192.168.1.1 -d 194.179.1.100 --dport 5000:6000 -j ACCEPT

[EQUIPO_LOCAL]----->[FIREWAL_LINUX]---->[EQUIPO REMOTO_UDP]

Tambien puedes meterlo en la tabla NAT, en POSTROUTING .... pero necesitaria todo el detalle de lo que necesitas.

Saludos
Responder
Rogelio
# Rogelio 03-04-2018 16:26
El problema es que quiero permitir los puertos para poder conectarme a steam pero es necesario que esten abiertos ciertos puertos UDP y squid solo procesa peteciones TCP segun tengo entendido, quiero que estos puertos esten abiertos para mi direccion ip.
Responder
Ral Prieto Fernndez
# Raúl Prieto Fernández 04-04-2018 10:53
Hola Rogelio:

Yo haría lo siguiente:

1.- Editar squid.conf y "quitar" del rango de IPs la IP del equipo que necesita conectarse a Internet Steam, de esta forma las políticas de squid no aplicarán a esa IP.

2.- Editar las reglas de Iptables del paso 8 para que las que hacen REDIRECT TCP, no apliquen a esa ip del equipo de la LAN que necesita conectarse a Internet. Puedes usar !ip_nodo.

3.- Tienes que mantener la regla de MASQUERADE de IPtables para que el equipo en cuestión, pueda conectarse a Steam haciendo NAT en el equipo GNU/Linux.


De esta forma el equipo en cuestión, podrá navegar por internet y conectarse a cualquier sitio sin que Squid lo tenga en cuenta o filtre sus peticiones.

Un saludo y suerte
Responder
Rogelio
# Rogelio 04-04-2018 15:33
Muchisimas Gracias. Saludos
Responder
Natur
# Natur 07-05-2018 13:15
Estoy haciendo una practica con tu tutorial para un proyecto y tengo problemas de ssl sobre la redireccion de los puertos pues me meto en google.es o cualquier pagina que tenga protocolo https y me da este mensaje de error "ssl_error_rx_record_too_long" y creo que es debido por que los protocolos https no se pueden o deben redireccionar. o eso creo.
Responder
Natur
# Natur 07-05-2018 13:20
Cuando desde el cliente intento ingresar en alguna pagina web me da este fallo
"ssl_error_rx_record_too_long"
o no redirecciono bien los archivos o no tengo ni idea a todo esto. estoy haciendo el proxy para un proyecto de fin de ciclo y estoy empleando una raspberry funciona bastante bien.
Responder
Ral Prieto Fernndez
# Raúl Prieto Fernández 08-05-2018 08:54
Hola Natur:

En cuanto tenga un rato pruebo Squid en modo transparente y HTTPS y te comento.

En mi otro artículo https://www.raulprietofernandez.net/blog/gnu-linux/como-configurar-proxy-squid-en-modo-no-transparente, https funciona correctamente ne modo NO trsnaparente.

Pero en este caos, imagino que haya que redireccionar tambien el 443 con IPtables y a lo mejor hacer algo con algún certificaso SSL.

En cuando pueda lo pruebo y te respondo en este hilo.

Saludos
Responder
Natur
# Natur 08-05-2018 09:16
Muchas gracias. Si el modo no transparente lo pruebo y funciona a la perfeccion. el problema es que estoy creando un ldap para varios clientes y la forma mas comoda de configurar un proxy es haciendo que sea transparente ya que si tengo que ir equipo por equipo configurando el navegador tardo demasiado. algo ley tambien debido a que se ha de crear un certificado ssl y con ese certificado que creas con Squid lo pasas a todos los clientes, eso ya es mas facil por que con un script lo puedes enviar de forma masiva.
Responder
Victor
# Victor 30-05-2018 05:53
Buenas noches disculpen tal ves es un poco basica mi pregunta pero bueno, he instalado squid y configurado en un centos 5.4 , instale wine y ultrasurf, lo que pretendo hacer es compartir el internet de ultrasurf con squid, hago lo mismo en una maquina con windows XP con FreeProxy y ultrasurf y puedo compartirlo sin problema pero no se como hacerle en linux
Responder
Ral Prieto Fernndez
# Raúl Prieto Fernández 04-06-2018 16:11
Hola Victor:

Desgracidamente no puedo ayudarte con tu configuración "tan rara" :lol: . La verdad es que: jamás habría pensado en hacer una combinación de Linux+Squid+Ultrasurf :)

¿Que cosas necesitas y no puedes hacer directamente con Squid?

Saludos
Responder
ivan dario
# ivan dario 10-07-2018 00:34
iptables -t nat -A POSTROUTING -s 172.27.1.0/24 -d 0.0.0.0/24 -o eth0 -j MASQUERADE

en esta linea a que hace referencia MASQUERADE
Responder
Ral Prieto Fernndez
# Raúl Prieto Fernández 12-07-2018 18:23
Hola Ivan:

Lo que significa esa línea es que todos los paquetes que vengan desde la LAN 172.27.1.0/24 y con cualquier destino (y que pasen por el Linux), serán enviados por la interfaz eth0 de equipo Linux y se le cambiará la IP a cada paquete, por la IP que tenga eth0 del Linux.

Básicamente esto se le denomina "hacer NAT", es exactamente lo mismo que hace un Router de ADSL/Fibra. Los equipos "de casa" salen a Internet con la IP pública del Router.

Saludos
Responder
ivan dario
# ivan dario 13-07-2018 23:22
entiendo
pero MASQUERADE a que hace referencia al nombre del la tarjeta de red
Responder
Ral Prieto Fernndez
# Raúl Prieto Fernández 16-07-2018 08:40
Hola ivan:

Con "-j MASQUERADE" indica la acción que queremos realizar con un determinado tráfico. Las posibles acciones son: ACCEPT, DROP, REJECT, LOG, DNAT y MASQUERADE.

En este ejemplo, "-o eth0" indica la interfaz por donde se van a redirigir los paquetes.

Saludos
Responder
ivan dario
# ivan dario 23-07-2018 15:02
hola Raul cordial saludo

por favor me puede colaborar con la configuracion de las tarjetas de red en vmware yo la estengo configuradas la wan con ip estatica pero la lan no me deja ponerle ip estatica me genera error, le coloco manual y funciona pero a la maquina virtual cliente no me da acceso a internet

gracias por su colaboracion
Responder

Escribir un comentario

Información básica sobre Protección de Datos

Responsable: Raúl Prieto Fernández +info

Finalidad: Moderar los comentarios a los artículos publicados en el blog. +info

Legitimación: Consentimiento del interesado +info

Destinatarios: No se comunicarán datos a persona u organización alguna. +info +info

Derechos: Tiene derecho a Acceder, rectificar y suprimir los datos, así como otros derechos, como se explica en la información adicional. +info

Plazo de conservación de los datos: Hasta que no se solicite su supresión por el interesado.

Información adicional: Puede consultar la información adicional y detallada sobre Protección de Datos Personales en mi página web raulprietofernandez.net +info

     

Código de seguridad
Refescar


LOGIN / ENTRAR

BUSCAR EN EL BLOG

TWITTER TIMELINE

Booking.com

ENCUESTA

¿Cual es el mejor Sistema Operativo?

Como es lógico, esta web utiliza cookies propias y de terceros para elaborar información estadística y mostrar publicidad personalizada a través del análisis de tu navegación, conforme a la política de cookies.

  Si continúas navegando, aceptas su uso.