Como crear un servidor proxy con Squid en Ubuntu

7 10 2012
Squid Cache Logo

Squid Cache

Un servidor proxy tiene la misión de actuar de intermediario en el acceso de un recurso en internet. Suelen utilizarse como pasarelas que permitan acceder a páginas webs restringidas por país o dentro de una empresa, es decir, pueden trabajar como muro cortafuegos operando en la capa de red (actuando como filtro de paquetes, como es el caso de iptables) o bien desde la capa de aplicación controlando diferentes servicios.

Otra de sus funciones es actuar como caché de contenido de red (principalmente para el protocolo HTTP), proporcionando mayor proximidad de los clientes a un caché de páginas y archivos de forma que estos accedan con tiempos similares a los de una red local.

En este sentido el servidor de proxy cache Squid tiene un alto rendimiento además de soportar FTP o incluso HTTP sobre IPv4 e Ipv6. Todos los objetos cacheados por Squid permanecen en RAM, incluso consultas de búsquedas DNS. Es importante recalcar que Squid administra todas las peticiones bajo un único proceso asíncrono y no bloqueante. Por otro lado se ofrece soporte SSL y listas de control de acceso.

Proceso de interacción de un servidor proxy

Durante el proceso de interacción ocurre lo siguiente:

  1. Un cliente se conecta hacia un Servidor Proxy.
  2. El cliente solicita una conexión, archivo u otro recurso disponible en un servidor distinto.
  3. El Servidor Proxy proporciona el recurso ya sea conectándose hacia el servidor especificado o sirviendo éste desde un caché.
  4. En algunos casos el Servidor Proxy puede alterar la solicitud del cliente o bien la respuesta del servidor para diversos propósitos.

Este último punto 4, es que permite realizar muchas configuraciones personalizadas a los administradores de sistemas.

Instalación de Squid

En este artículo se instalará Squid 3.1. Para instalarlo en Ubuntu o Debian based:

1
sudo apt-get install squid3

Después se debe editar el fichero de configuración por defecto /etc/squid3/squid.conf

Por defecto el acceso http esta negado para todas las peticiones. Por ello debes buscar y borrar en el archivo la configuración:

1
http_access deny all

En su lugar se puede configurar una lista de acceso basada en rangos de IP al que se quiera permitir el acceso, por ejemplo:

1
2
acl our_networks src 123.123.123.0/24 213.213.213.0/24
http_access allow our_networks

De igual forma puedes comprobar que la directiva http_port este apuntando al puerto 3128 por defecto o cambiarlo al que necesites. Debes tener en cuenta que de acuerdo a las asignaciones hechas por IANA y continuadas por la ICANN desde el 21 de marzo de 2001, son los Puertos Registrados (rango desde 1024 hasta 49151)  y los recomendados para Servidores Proxies son el 3128 y 8080 a través de TCP.

También se pueden configurar varios:

1
2
http_port 3128
http_port 8080

O incluso especificando varias IPs:

1
2
http_port 192.168.1.254:3128
http_port 192.168.1.253:8080

Una vez configurado, es necesario reiniciar squid con:

1
sudo service squid3 restart

También existen otras opciones como recargar la configuración:

1
service squid reload

Parar el servicio:

1
service squid stop

O iniciarlo:

1
service squid start

Si tienes chkconfig (Sistemas basados en RedHat como Centos) puedes activarlo automáticamente en cada inicio del sistema con:

1
chkconfig squid on

Para comprobar si se está ejecutando correctamente:

1
sudo service squid3 status

Y si esta efectivamente escuchando en el puerto configurado:

1
netstat -tulpn | grep 3128

Si existe algun error grave, que no permita iniciar el servicio se debe examinar el contenido del fichero /var/log/squid/squid.out

Se puede acceder a los ficheros de log mediante:

1
sudo cat /var/log/squid3/access.log

O bien el fichero de cache:

1
sudo cat /var/log/squid3/cache.log

Para conocer la ip pública del proxy puede utilizarse:

1
curl ifconfig.me

Modificaciones de configuración básicas

Para mostrar las cadenas de las consultas http en el log, es necesario desactivar la directiva strip_query_terms (por defecto activa) en /etc/squid3/squid.conf:

strip_query_terms off

Por otro lado el parámetro cache_mem establece la cantidad de memoria RAM dedicada para almacenar los datos mas solicitados y datos en tránsito (con mayor prioridad de almacenamiento). Los datos son normalmente almacenados en bloques de 4 Kb. El valor por defecto es de 256 MB, pero puede especificarse una cantidad mayor si es necesario. Por ejemplo puede establecerse 2 GB de memoria:

1
cache_mem 2048 MB

Por defecto, si algo ocurre con la caché, como por ejemplo que el proceso se termine, se enviará un mensaje de aviso a la cuenta de email del webmaster en el servidor. Para configurarla pues cambiarse la directiva cache_mgr:

1
cache_mgr yo@midominio.net

Se puede especificar un lugar diferente para el registro de accesos con la directiva access_log:

1
access_log /var/log/squid/access.log squid

Para ver toda tu configuración squid, sin mostrar los comentarios, puedes usar:

1
cat /etc/squid/squid.conf | sed '/ *#/d; /^ *$/d'

O bien:

1
grep -v "^#" /etc/squid/squid.conf | sed -e '/^$/d'

Solución de errores

Si intentas conectar a tu servidor proxy y este no atiende tus peticiones, es posible que no hayas abierto los puertos en tu router. Se recomienda abrir el puerto TCP/UDP en el que este configurado Squid.

Fuentes y enlaces relacionados

- Sitio web Squid Cache

- Proyecto Squid en Launchpad

- Desarrollo del proyecto Squid con Bazaar

- RoadMap de Squid

- Manual Squid LinuxParaTodos

- UnixCraft: Setup a transparent proxy with Squid in three easy steps

Install Squid Proxy Server on CentOS / Redhat enterprise Linux 5

VN:F [1.9.22_1171]
Rating: 8.3/10 (3 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)


Free Station: plataforma para el desarrollo de sistemas de distribución de software libre en puntos de información

5 05 2011
Free Station logo

Free Station

Free Station o “Librenería“ es el software cliente y servidor que pretendo desarrollar como mi Proyecto de Fin de Carrera (PFC) en la UCLM bajo la dirección de mi director de proyecto Carlos González Morcillo

La librenería o FreeStation (en adelante FS) es un software para centros o puntos de acceso de distribución de información de software libre orientado a centros de enseñanza y universidades.

Estructura del sistema

El sistema estará compuesto por un armario de diseño con un ordenador empotrado con pantalla táctil y una cámara para reconocer movimientos y gestos. En dicho dispositivo se encuentra un software cliente que alberga repositorios de software modularizables configurados por el centro de enseñanza o universidad, con software como imágenes de distribuciones GNU/Linux, software específico para los alumnos o aplicaciones educativas para interactuar con el dispositivo.

El dispositivo puede incorporar una unidad de CD-ROM y USB con la que el usuario/docente puede grabar los datos proporcionados por el sistema en pocos segundos y hacerse una copia de todo software y contenido libre (documentación,multimedia, etc) disponible. Ademas el sistema cuenta con otra aplicación servidor, que distribuye diariamente a todos los clientes el software y los módulos actualizados.

POI y proceso de distribución

Los terminales de puntos de interés (del inglés POI o Point Of Interest) han avanzado significativamente con la tecnología de los últimos años, habilitando su integración en casi cualquier lugar con un uso sencillo. Esta tecnología integrada ha permitido la interacción en edificios con sus visitantes.

En determinadas instituciones como colegios, institutos, universidades, ayuntamientos u oficinas de turismo es común ver pequeños puntos donde se encuentran terminales mostrando información a los transeúntes. Algunos terminales incorporan la interacción mediante teclado, ratón o incluso de forma táctil, pero la interacción puede ser mucho más completa.

En la panorámica del proceso de distribución de información o más concretamente del proceso de distribución software, la tendencia actual marca la utilización de las redes tecnológicas. La potencia actual de las mismas las caracteriza de arquitecturas que aprovechan la evolución de contenidos y ventajas que satisfacen la necesidades de información de los usuarios.

Componente social

Combinando el componente social de un objeto que se encuentra en el exterior con la inmensidad de contenidos que pueden ofrecer una red tecnológica es posible realizar una distribución de contenidos uniforme orientada adocencia, turismo o cualquier sector que requiera de un despliegue de contenidos.La distribución de software conlleva una responsabilidad asociada al marco de la legalidad.

Beneficios y problemas jurídicos

Cualquier software dispone de una licencia que habilita una serie de acciones permitidas, como es la distribución. En lo particular, pueden surgir problemas jurídicos derivados si un POI no se cuenta con la debida autorización. Luego estableciendo una determinada base tecnológica con tendencia en la distribución de software libre, las problemáticas legales en este aspecto suelen ser nulas o muy reducidas.

Por otro lado, la distribución de software beneficia al usuario final ya que la compra individual supone requerir o disponer de unos costes asumibles por cada software particular. La independencia de elección entre un gran catálogo de software ahorra tiempo al usuario en la búsqueda y obtención del mismo.

Este enfoque añade una serie de ventajas asociadas, como la alta disponibilidad de nuevas versiones y actualizaciones de seguridad. En el caso del Software Libre, estas características de alta disponibilidad pueden traducirse igualmente en la personalización de distribuciones para diversos colectivos de usuarios. Estos paquetes de contenido específicos (formados por software, documentación y ficheros multimedia) pueden ser adaptados a necesidades concretas (docentes, de investigación o profesionales), ahorrando gran cantidad de tiempo al usuario final.

Conclusión y cierre

El desarrollo y progresos de mi PFC, será documentado y comentado mediante mi blog personal, como próposito de ejercicio de difusión y creación posterior de la memoria final del proyecto. Todas las aportaciones, comentarios, críticas constructivas son bien recibidos.

VN:F [1.9.22_1171]
Rating: 6.0/10 (2 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)


Como añadir entorno grafico a un servidor CentOS

10 09 2010

Para propósitos de desarrollo, a veces es necesario convertir un servidor CentOS sin interfaz gráfica, a uno con interfaz gráfica o GUI.

En general, no recomiendo hacer esto en servidores de producción, hospedaje, etc, sino por ejemplo para hacer pruebas en una máquina virtual como puede ser VirtualBox y además de montar la imagen del servidor, tener una interfaz gráfica, para probar aspectos de lado del cliente.

La opción más fácil es que yum nos gestione una lista de aplicaciones seleccionadas por la distribución para realizar este entorno gráfico. Antes de nada, es importante comprobar los paquetes que serán instalados, por si alguno puede entrar en conflicto o no deseas instalarlo. Para ello, es posible crear una lista con:

1
# yum groupinfo 'GNOME Desktop Environment'

Para obtener la lista de paquetes del entorno de escritorio de Gnome. Y para el sistema de ventanas X Window:

1
# yum groupinfo 'X Window System'

Ahora para instalar es simplemente cambiar groupinfo por groupinstall:

1
2
# yum groupinstall 'GNOME Desktop Environment'
# yum groupinstall 'X Window System'

Reinicia tu máquina y tras iniciar tu sesión de consola escribe “startx” para pasar a modo gráfico.

VN:F [1.9.22_1171]
Rating: 7.9/10 (24 votes cast)
VN:F [1.9.22_1171]
Rating: +1 (from 1 vote)





Cargado con 272 consultas en 0,943 segundos