Está en la página 1de 4

Websites para bajar diferentes componentes de software: Squid : http://www.squid-cache.org/ IRCache: http://www.ircache.net/ Gu a de Squid: http://www.buan!o.com.ar/"er#articu$o.htm$%n&' Shorewa$$ : http://www.shorewa$$.

net/

Proxy Transparente con Squid y Netfilter


Lo crean o no esta relativamente simple tarea puede provocar ms de un dolor de cabeza, ya que consta de varios componentes que deben entenderse al 100 ! "n principio, #ay ciertos conceptos que vamos a tener que aclarar, para poder entender correctamente qu$ si%nifica &Proxy Transparente'! "stos t$rminos, y su si%nificado, son los si%uientes(

Netfilter
)uncionalidad y esquema interno del N*cleo Linux en las versiones +!, y +!- que proveen )ire.all con conocimiento de "stado /Stateful )ire.all0! 1n fire.all #abilita la capacidad de aplicar pol2ticas sobre los paquetes, como por e3emplo &permitir acceso desde cualquier 4P al puerto 50 de la interfaz et#0', o tal vez &dene%ar el acceso al puerto ++, excepto a las 4P 1, + y 6'! La cuesti7n de conocimiento de estado est vinculada conque Netfilter mantiene una tabla de las conecciones entrantes y salientes, y de esta forma nos permite armar re%las en base a parmetros como conecci7n establecida, relacionada o nueva! Por e3emplo, supon%an que de 5 a 18#s se permiten nuevas conecciones salientes #acia 4nternet! Pasado este #orario podr2amos armar una re%la que especifique que solamente las conecciones re$acionadas o estab$ecidas( pero no nue"as puedan se%uir saliendo a 4nternet! 9e esta forma, la descar%a de un arc#ivo continuar #asta su fin, incluso pasado este #orario, pero no se podr in%resar a nuevos sitios! :;u$ tiene esto que ver con un Proxy Transparente< Simple( Netfilter tambi$n permite aplicar ciertas re%las de redireccionamiento, no solo las clsicas de &=>"PT=?' y &?">@=A=?'! "n resumen, vamos a tener que aplicar un par de re%las de Netfilter /quiz a la mayor2a les suene mas por su con3unto de utilidades, 4ptables0 para lo%rar nuestro acometido! Les recomiendo la lectura de los art2culos sobre 4ptables de la primer $poca de Linux 1S"?S, divididos en 6 partes!

Proxy

Buc#a %ente confunde el t$rmino Proxy con el de Cate.ay /o &puerta de enlace predeterminada', se%*n la traducci7n de cierta empresa de soft.are privativo0! "n toda red T>PD4P, por e3emplo en una red privada 18+!1-5!0!0 >lase > /Bscara +EE!+EE!+EE!0 o FD+,F0, se necesita un %ate.ay si es que deseamos lle%ar a otras redes, como 4nternet! 9ic#o Cate.ay poseer la cantidad de interfaces necesarias y rutas establecidas y pol2ticas de acceso que permitirn o no el acceso a ciertos destinos desde esta red interna! Por supuesto, en este caso #ablamos de acceso &transparente' /por as2 decirlo0 a la red destino en cuesti7n! "sto si%nifica que el Cate.ay no tiene en cuenta el protocolo de aplicaci7n /@TTP, )TP, etc0 o me3or dic#o que &no los entiende ni tiene en cuenta excepto por puerto

de ori%en o destino'! Por e3emplo, se puede asumir que en el puerto 50 de cierta 4P de destino #abr un servicio que entienda @TTP!!! pero el %ate.ay no puede ase%urarlo! 1n proxy act*a como %ate.ay pero a un nivel ms alto, en la llamada &capa de aplicaci7n'! Si%nifica que entiende @TTP, )TP, u al%*n otro protocolo de alto nivel, y que acepta por parte de un cliente /de la red interna, por e3emplo0 solicitudes vinculadas a dic#o protocolo! "l proxy realizar, a su vez, la solicitud al servidor de destino, tomar el resultado y lo devolver! =l tener conocimiento del protocolo se pueden aplicar re%las muc#o ms interesantes, como restricciones basadas en contenido, partes del nombre de un sitio, usuario, %rupo al que un usuario pertenece, 4P de ori%en, etc! Squid es un proxy de @TTP y )TP, y a su vez provee la funcionalidad de >ac#e( %uarda copias de las p%inas y arc#ivos visitados! 9e esta forma, cada vez que un usuario vuelve a acceder a cierto sitio, s7lo el contenido que #aya cambiado ser transferido, lo%rando una reducci7n de la utilizaci7n del anc#o de banda disponible!

N=T

>orresponde a Net.orG =ddress Translation o Traducci7n de 9irecci7n de ?ed! Las direcciones 4P de una red privada no son direccionables en 4nternet, por lo que el Cate.ay suele aplicar lo que se llama comunmente &enmascaramiento' /Basqueradin%0 de la 4P de ori%en, reemplazando la interna por la correspondiente a la interfaz de red p*blica del Cate.ay! Por supuesto, se mantiene una tabla con los datos necesarios para poder relacionar las respuestas que proven%an de internet con su destino &real' en la red privada!

Transparente

Hien, ya sabemos que es un Cate.ay, Netfilter y un Proxy! "l #ec#o de que sea transparente permite al administrador lo%rar que toda solicitud @TTP /puerto de destino 50Dtcp0 realizada por un cliente de la red interna sea automticamente rediri%ida al Proxy, evitando la salida directa! Los motivos para realizar $sto pueden depender del administrador, pero se%uramente ten%an que ver con pol2ticas de administraci7n de recursos, se%uridad, performance, etc! "sto se realiza, como ya di3imos, mediante re%las de redireccionamiento de Netfilter /aplicadas con la utilidad 4ptables0! "s importante aclarar que cierta funcionalidad del protocolo @TTP se pierde al utilizar un proxy transparente en vez de uno debidamente confi%urado en los clientes! Ia ms atll del prop7sito de $ste art2culo el explicar dic#os problemas! = modo %eneral podemos responder &probablemente no ten%as problemas notables'! La prctica ser lo me3or!

=#ora, el Squid

"n principio instalen el paquete Squid desde el sistema de administraci7n de paquetes de su distribuci7n favorita /emer%e, yast+, aptJ%et0 o ba3en la *ltima versi7n /ST=HL", o sino 9"I"L si quieren probar las versiones en a*n en proceso de desarrollo0 del sitio de Squid /ver recuadro0! "l proceso de confi%uraci7n no lo vamos a detallar, ya que ya lo #emos #ec#o en ediciones anteriores! 9e todas formas, el arc#ivo DetcDsquidDsquid!conf /o, si instalan de fuentes sin cambiar el parametro s)sconfdir del script configure*, D usrDlocalDsquidDetcDsquid!conf est impecablemente comentado, aunque en idioma 4n%l$s! "n el recuadro pueden encontrar la 1?L a una %u2a de confi%uraci7n!

1na vez confi%urado el Squid, debemos probarlo en formato &noJtransparente', confi%urando un nave%ador para que lo utilice! ?ecuerden que Squid utiliza el puerto 61+5Dtcp para recibir las solicitudes! Si funciona, podemos pasar a la si%uiente etapa( la transparentizaci7n de Squid!

Squid en el Bedio
"n principio, son s7lo , los parmetros los que debemos confi%urar! 1no de estos parmetros no lo encontrarn comentado y con un valor por defecto, sino que debern tipearlo completo! Los parmetros y sus correspondientes valores, son los si%uientes(
httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on

:;u$ si%nifica cada uno de ellos<


httpd#acce$#host ( Squid puede confi%urarse como cac#e, como acelerador de nave%aci7n o como ambos! "ste parmetro indica el nombre de #ost o 4P de un Squid confi%urado como acelerador! "n nuestro caso usaremos el valor &"irtua$', ya que vamos a usar el modo transparente! httpd#acce$#port : "ste es el puerto donde %eneralmente los servidores .eb esperan solicitudes! "n el caso de que usemos Squid como frente de un %rupo de servidores .eb locales, #abria que #acer que Squid escuc#e en el 50 y no en el 61+5, y que los servidores .eb escuc#en en otro puerto, y NK en el 50! httpd#acce$#with#pro+) : =l #abilitar #ttpdLaccelL#ost la funci7n de cac#e de3a de funcionar! Para que vuelva a funcionar, debemos forzarlo con el valor &on'! httpd#acce$#users#host#header : "n modo transparente, las solicitudes salientes al puerto 50 de al%un servidor externo son rediri%idas al puerto 61+5 del Cate.ay, en el que Squid espera solicitudes! Si no se #abilitara esta opci7n los sitios que mane3en sitios .eb virtuales, o sea, mas d eun sitio por direcci7n 4P, no ser2an correctamente cac#eados! La cabecera @ost definida en @TTP 1!1 siempre tiene como valor el nombre de @ost de la 1?L a donde estemos intentando nave%ar! Squid, si se #abilita este parmetro, la utiliza y nos entre%a el contenido requerido!

?e%las de Netfilter M 1ltimo paso


1na vez confi%urado Squid con las opciones de proxy transparente requeridas, tan solo nos queda armar la re%la de 4ptables necesaria! Si utilizan S#ore.all como soluci7n de )ire.all /muy buena, por cierto0, en su )=; y 9ocumentaci7n encontrarn como crear esta re%la desde su sistema de confi%uraci7n! /ver recuadro0! La re%la en cuesti7n es la si%uiente(
iptables -t nat -A PREROUT !" -i eth# -p tcp --dport 80 -$ RE% RE&T --toport '#(8

?ecuerden que el arc#ivo access!lo% /definido en squid!conf0 nos ir mostrando las solicitudes que se realizan, y as2 podremos verificar el correcto funcionamiento de la re%la de direccionamiento!

Kptimizaci7n Hsica
>omo una re%l m2nima de performance podemos setear( cache#store#$og al valor none ha$f#c$osed#c$ientes al valor off cache#swap#high al valor ,--. cache#swap#$ow al valor /-. 9e la misma forma se puede establecer correctamente el parmetro cac#eLdir con la si%uiente f7rmula( Siendo( x N TamaOoLdeLcac#eLenLPH y N TamaOoLdeLob3etoLpromedioLenLPH /aprox! 15Pb0 "l valor B9 ser ///x D y0 D +E-0 D +E-0 Q + La l2nea cac#eLdir, entonces, ser, por e3emplo, para -Cb de cac#e(
cache_dir u)s *var*cache*s+uid ,#-- #- (.,

Saludos, y #asta la pr7xima entre%aR "nv2en sus solicitudes a linuxStectimes!com


Arturo A. Busleiman 2004 e-mail: buanzo@buanzo.com.ar

"ste art2culo es de distribuci7n y modificaci7n libresT el autor mantiene el derec#o de copia!

También podría gustarte