¿Te has preguntado qué es un proxy? ¿Para qué sirve un proxy? ¿Que ventajas e inconvenientes tendremos al utilizar un proxy? ¿Qué diferencia hay entre utilizar un proxy o un sistema de NAT? En este artículo respondemos estas preguntas y aclararemos todos estos conceptos.
Un proxy es un equipo (ordenador, router, firewall o appliance dedicado) que se encarga de hacer intermediario entre una conexión de un cliente con un servidor. El caso más habitual un ordenador que para conectar a una página web, no realiza la conexión HTTP directamente con el destino, sino que lo hace con el proxy, y este a su vez realiza la conexión con el servidor destino. Cuando el proxy tiene los datos de la respuesta, se la envía al ordenador cliente.
Es decir, que un proxy evita la conexión directa entre origen y destino, actuando de intermediario en esta conexión y es el que intercambia la información tanto con el origen como con el destino. Esto, claramente, tiene algunas ventajas pero también algunos inconvenientes.
Ventajas de un proxy
Las posibles ventajas de utilizar un servicio de proxy son las siguientes:
- Ahorro de datos: al utilizar un servidor proxy, se puede realizar un cacheado de los datos intercambiados para que las siguientes peticiones de la misma información, no sea necesario pedir los datos de nuevo al destino. Es decir, cuando un usuario se conecta a una página web, el proxy almacena esta página y la sirve directamente a los siguientes usuarios que acceden a ella sin necesidad de pedirla de nuevo al servidor destino.
- Anonimato: al utilizar un proxy, se puede ocultar la información sobre el equipo/usuario origen que está haciendo una petición, porque al destino llega la petición desde el proxy, y no desde el equipo origen.
- Control/Filtrado de contenido: al utilizar un servidor proxy, se pueden crear reglas para permitir o rechazar peticiones a determinados destinos. Por ejemplo, es habitual en una oficina querer denegar el acceso a determinadas páginas web no relacionadas con el ámbito laboral.
Desventajas de un proxy
- Control/Filtrado de contenido: Si, esto mismo también puede ser una desventaja para el usuario final porque sus comunicaciones pueden estar filtradas, analizadas o incluso modificadas en tránsito por el proxy.
- Servicios no disponibles: Algunos servicios o protocolos pueden tener problemas para funcionar con un proxy, ya que pueden necesitar puertos que no estén disponibles o funcionalidad que no permita ser realizada por el proxy.
- Privacidad: debemos tener en cuenta que todos los datos intercambiados pueden ser almacenados por este proxy, y esto puede suponer un riesgo para la privacidad de las comunicaciones.
Modos de funcionamiento de un proxy
Un proxy puede funcionar de muy diversos modos, y hay algunos conceptos relacionados con su funcionamiento que describimos a continuación:
- Proxy transparente: en este modo de funcionamiento, los clientes web (por ejemplo) no necesitan ser configurados expresamente para utilizar el proxy. Para que todo el tráfico HTTP o HTTPS pase por el proxy, se utiliza un equipo de red que redirecciona todo el tráfico HTTP/HTTPS de los usuarios a este proxy, y por tanto los usuarios pueden no saber de la existencia de este servicio de proxy.
- Proxy anónimo: esta característica del proxy permite ocultar la IP del cliente origen. Hemos comentado esta característica desde el principio, pero no en todos los tipos de proxy se cumple esta característica.
- Proxy inverso: este tipo de proxy se utiliza por delante de un determinado servidor o conjunto de servidores que ofrecen un determinado servicio. Este servidor proxy obtiene la información que solicitan los clientes sobre estos servidores, y devuelve la información al cliente. En estos casos es habitual utilizar servidores tipo apache, nginx, tomcat o servicios similares.
- Proxy caché: esta es la funcionalidad que permite al servidor proxy almacenar información que solicitan los clientes, para enviárselas directamente en posteriores solicitudes similares a las anteriores sin necesidad de pedir los datos de nuevo al servidor destino. Esto permite ahorrar en comunicaciones, y habitualmente mejorar los tiempos de respuesta.
Proxy vs NAT
En ocasiones se confunde el concepto de Proxy con un servicio de NAT (Network Address Translation), pero son muy distintos. En un proxy, como hemos comentado, hay un equipo que recibe una petición HTTP (por ejemplo) y para poder responderla abre una conexión HTTP nueva contra el servidor de destino. Es decir, hay una conexión TCP y HTTP entre equipo origen y proxy, y otra conexión TCP diferente desde proxy al servidor destino.
En cambio, NAT funciona sobre una conexión TCP determinada en la que cambia algunos parámetros de esta conexión al pasar por un equipo de red intermedio. Un caso habitual, es una red local que utiliza direcciones IP privadas que para salir a Internet necesitan reemplazar su dirección IP origen, por una dirección IP pública. En este caso puede haber un router, firewall o equipo similar que hace esta traducción de direcciones a nivel TCP/IP.
Además en el caso de implementar NAT, el equipo que hace el NAT, no opera en capa de aplicación HTTP, sino que solo opera a nivel TCP/IP cambiando esta dirección IP origen por una pública.
Cómo implementar un servicio de proxy
Dependiendo de los requisitos técnicos y las necesidades, hay muchas formas de implementar un servicio de proxy. Algunas de ellas son:
- Proxy web: para implementar un proxy para tráfico HTTP, descrito durante este artículo, se puede utilizar software tradicional como Apache, Nginx, HAProxy, IIS, Squid, Varnish, …
- Proxy transparente: para implementar un servicio de proxy transparente se puede utilizar WinGate, o Cisco WCCP
- Proxy inverso: También Nginx, Apache o Varnish permiten implementar proxy inverso