Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Proxy Transparente
Proxy Transparente
net/
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
?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 ,#-- #- (.,