Menú
Es gratis
registro
casa  /  SOBRE/ Un ejemplo de calamar con dos configuraciones. Instalación y configuración de Squid en CentOS

Un ejemplo de calamar con dos configuraciones. Instalación y configuración de Squid en CentOS

Introducción

Muchos administradores se enfrentan al problema del uso inteligente del tiempo y canal para acceder a Internet, piensan en la posibilidad de ahorrar tiempo y dinero, en limitar la velocidad para cierto tipo de archivos o individuos, en fin de cuentas, en guardar todo lo que sea. asociado con ciertos aspectos del acceso a la red global de Internet.

Con la ayuda de este artículo, intentaré explicar de forma visual y clara la configuración del servidor proxy más común: Squid.

Configuración inicial de Squid para el acceso de usuarios

No entraremos en el proceso de instalación del servidor proxy Squid, sino que pasaremos directamente a configurarlo.

Lo más elemental que debemos hacer después de la instalación es permitir el acceso a los usuarios de nuestra red local. Para hacer esto, use los parámetros http_port, http_access. Además, crearemos una acl (lista de control de acceso) para nuestra red local.

Y entonces, necesitamos http_port en la medida en que nuestro servidor proxy Squid debe servir solo a las computadoras de nuestra red local y ser invisible para el mundo exterior para excluir la posibilidad de que "personas malas" en la red externa utilicen nuestro canal o tráfico, y si se encuentran "agujeros" en el código del proxy Squid, aprovéchelos.

El parámetro http_access se utiliza para permitir o denegar el acceso a recursos específicos, direcciones específicas o desde direcciones específicas, a sitios específicos, a través de protocolos específicos, puertos y todo lo que se especifica directamente usando Acl (listas de control de acceso).

Tabla N 1. Algunas subredes.

Rango de direcciones

Forma completa

Forma corta

192.168.0.1-192.168.0.254

192.168.0.0/255.255.255.0

192.168.0.0/24

192.168.20.1-192.168.20.254

192.168.20.0/255.255.255.0

192.168.20.0/24

192.168.0.1-192.168.254.254

192.168.20.0/255.255.0.0

192.168.20.0/16

10.0.0.1-10.254.254.254

10.0.0.0/255.0.0.0

10.0.0.0/8


Suponga que tiene una red con direcciones de 192.168.0.1 a 192.168.0.254, luego agregue una nueva Acl (consulte la tabla N1):

Acl LocalNet src 192.168.0.0/24

Suponga que tiene un servidor proxy Squid ubicado en 192.168.0.200 en el puerto 3128, luego escriba en el archivo de configuración:

Http_port 192.168.0.200:3128

Nuestra próxima acción será prohibir el uso de nuestro servidor proxy, excepto por parte de usuarios de nuestra red local:

Http_access permite LocalNet
http_access denegar todo

En este caso, la palabra permitir es un permiso y la palabra negar es una prohibición, es decir, permitimos el acceso al servidor proxy Squid desde las direcciones de nuestra red local y denegamos el acceso a todos los demás.

Tenga cuidado al especificar http_access ya que Squid los usa en el orden que usted especifique.

Exploración de ACL (listas de control de acceso)

El sistema de control de acceso del proxy Squid es muy flexible y extenso. Consiste en elementos con valores y listas de acceso que especifican permitir o denegar.

El formato Acl es el siguiente:

Lista de elementos de nombre acl

Formato de lista de acceso:

Http_access especificando acl_name

Veremos algunos de los elementos que el servidor proxy Squid le permite usar, con ejemplos, por supuesto:

* lista de src de nombre acl

Con la ayuda de este elemento (src), indicamos la dirección IP de la fuente, es decir, el cliente desde el que llegó la solicitud a nuestro servidor proxy.

En el siguiente ejemplo, permitiremos que Vasya Pupkin (Pupkin) y el departamento de programación (Progs) accedan a nuestro servidor proxy y denegarán a todos los demás:

Acl Progs src 192.168.0.1-192.168.0.9
acl Pupkin src 192.168.0.10
http_access permitir Progs
http_access permitir Pupkin
http_access denegar todo

* lista de dst de nombre de acl

Este elemento (dst) especifica la dirección IP de destino, es decir, la dirección IP del servidor al que el cliente del servidor proxy desea acceder.

En el siguiente ejemplo, negaremos a Vasya el acceso a la subred 194.67.0.0/16 (por ejemplo, contiene el mismo aport.ru):

Acl Net194 dst 194.67.0.0/16
http_access deny Pupkin Net194

* lista de dominios dst de nombre acl

Con la ayuda de este elemento (dstdomain) indicamos el dominio al que quiere acceder el cliente del servidor proxy.

En el siguiente ejemplo, denegaremos a Vasya el acceso a los sitios warez nnm.ru y kpnemo.ru:

Acl SitesWarez dstdomain .nnm.ru .kpnemo.ru
http_access deny Pupkin SitesWarez

Si necesita especificar el dominio de origen, utilice srcdomain.

* acl name [-i] srcdom_regex list
* acl name [-i] dstdom_regex list

Estos elementos se diferencian de srcdomain y dstdomain solo en que utilizan expresiones regulares, que no consideraremos en este artículo, pero daremos un ejemplo:

Sitios AclRegexSex dstdom_regex sex
Acl SitesRegexComNet dstdom_regex .com $ .net $
http_access deny Pupkin SitesRegexSex
http_access deny Pupkin SitesRegexComNet

En este ejemplo, hemos denegado a Vasily Pupkin el acceso a todos los dominios que contienen la palabra sexo y a todos los dominios de las zonas.com y.net.

El modificador -i está diseñado para ignorar el caso de caracteres en expresiones regulares.

* acl name [-i] url_regex list

Con este elemento (url_regex) especificamos el patrón de expresiones regulares para la URL.

Un ejemplo de especificar archivos con la extensión avi que comienzan con la palabra sexo:

Acl NoAviFromSex url_regex -i sex. *. Avi $

En caso de que desee especificar un patrón solo para la ruta URL, es decir, excluyendo el protocolo y el nombre del host (dominio), utilice urlpath_regex.

Un ejemplo para especificar archivos de música:

* acl acl_name lista de puertos

Especificando el número de puerto de destino, es decir, el puerto al que quiere conectarse el cliente de nuestro servidor proxy.

Como ejemplo, prohibiremos que todos usen el programa Mirc a través de nuestro servidor proxy:

Puerto Acl Mirc 6667-6669 7770-7776
http_access deny all Mirc

* lista de proto acl acl_name

Especificando el protocolo de transmisión.

Como ejemplo, prohibamos al mencionado Vasya utilizar el protocolo FTP a través de nuestro servidor proxy:

Acl ftpproto proto ftp
http_access deny Pupkin ftpproto

* lista de métodos acl acl_name

Especificar el método de solicitud http por parte del cliente (GET, POST).

Tomemos una situación en la que a Vasya Pupkin se le debería prohibir ver su correo en el sitio web mail.ru, pero al mismo tiempo se le debería permitir caminar por el sitio sin prohibiciones, es decir, negarle a Vasya la capacidad de ingresar a su buzón. a través del formulario de inicio de sesión en el sitio:

Acl SiteMailRu dstdomain .mail.ru
método acl método POST
http_access deny Pupkin methodpost SiteMailRu

Restricciones de usuario

Muy a menudo en nuestro país surge la situación de que no hay suficiente canal de acceso a Internet global para todos los usuarios y existe el deseo de dar a todos el máximo, pero al mismo tiempo no dejar que el canal se "doble" por culpa de quienes gusta descargar archivos.

Las herramientas de proxy de Squid le permiten hacer esto de varias maneras:

    la primera forma es optimizar el almacenamiento en caché de objetos;

    el segundo es el límite de tiempo para ciertos usuarios, que no es del todo correcto;

    la tercera forma es limitar la velocidad para cierto tipo de archivos, usuarios y todo lo que definamos a través de Acl.

Límites de tiempo

Puede limitar los usuarios por tiempo de la siguiente manera:

Acl nombre hora días hh: mm-hh: mm

Dónde día: M - Lunes, T - Martes, W - Miércoles, H - Jueves, F - Viernes, A - Sábado, S - Domingo.

En este caso, hh: mm debe ser menor que HH: MM, es decir, puede especificar de 00: 00-23: 59, pero no puede especificar 20: 00-09: 00.

Prohibamos a todos los mismos Vasya tener acceso a Internet de 10 a 15 horas todos los días:

Hora de Acl Hora de la calabaza 10: 00-15: 00
http_access deny Pupkin TimePupkin

Si desea permitir que Vasya use el programa Mirc de 1 pm a 2 pm, escriba:

Hora de Acl Hora de la calabaza 13: 00-14: 00
http_access permite Pupkin TimePupkin Mirc
http_access deny Pupkin Mirc

Pero, ¿y si necesita prohibir o permitir ciertos días de la semana? Squid también le permite hacer esto, por ejemplo, de 1 pm a 2 pm los lunes y domingos:

Hora de Acl Hora de Pupkin MS 13: 00-14: 00

Como puede ver, no tiene nada de complicado.

Límites de velocidad

El control de velocidad del servidor proxy Squid se realiza mediante grupos. Una piscina es una especie de barril con cerveza, en el que la cerveza se vierte constantemente hasta el borde, y los clientes la vierten en sus vasos u otros recipientes para un mayor consumo interno según sea necesario a través de sus grifos personales.

Las piscinas se regulan mediante tres parámetros: delay_class, delay_parameters, delay_access. El número de piscinas se especifica mediante el parámetro delay_pools.

Las piscinas pueden ser de tres clases:

    Todo el flujo de cerveza está limitado a un grifo (para toda la red).

    Todo el flujo de cerveza se limita a un grifo, pero el grifo se divide en grifos (por IP).

    Todo el flujo de cerveza está limitado a un grifo, pero el grifo se divide en grifos (por subredes), que también se dividen en mini grifos (por IP).

Formatos:

Delay_pools número de_pools_declarados
delay_access pool_number action acl_name

La acción se puede permitir o negar. Al mismo tiempo, este pool actúa sobre aquellos a quienes está permitido y no afecta a aquellos a quienes está prohibido. Si se especifica permitir todo, y luego denegar Pupkin, esta clase seguirá afectando a Pupkin, porque La dirección IP de Pupkin declarada en acl Pupkin se incluye en la lista de todas las direcciones de acl. Por favor, tenga esto en mente.

Delay_class pool_number pool_class
delay_parameters pool_number parámetros

Las opciones varían según la clase de piscina:

para primera clase:

Delay_parameters 1 byte_per_all_network

para la segunda clase:

Delay_parameters 1 per_All_net per_client

para la tercera clase:

Delay_parameters 1 per_all_net per_subnet per_client

Por ejemplo, tenemos un canal de 128 Kbit (en promedio 15 Kbytes por segundo) y deseamos que Vasya (Pupkin) dé solo 4 Kbytes / seg (un vaso pequeño para todo sobre todo), al departamento de programación (Prog) para dar solo 10 Kbytes / seg y para cada uno solo 5 Kb / seg (solo dos vasos), limite todos los demás a 2 KB / seg para cada uno y 10 Kb / seg para todos, y limite los archivos mp3 (multimedia) a 3 KB / seg para todo (porque todo el barril de cerveza es un grifo tan pequeño). Entonces escribimos:

Acl Prog src 192.168.0.1-192.168.0.9
acl Pupkin src 192.168.0.10
acl LocalNet src 192.168.0.0/255.255.255.0
acl media urlpath_regex -i .mp3 $ .asf $ .wma $

Delay_pools 4
# primer límite mp3
delay_class 1 1
delay_parameters 1 3000/3000
delay_access 1 permitir medios
delay_access 1 denegar todo
# limita a la pobre Vasya
delay_class 2 1
delay_parameters 2 4000/4000
delay_access 2 permitir Pupkin
delay_access 2 denegar todo
# limitar el departamento de programación
delay_class 3 2
delay_parameters 3 10000/10000 5000/5000
delay_access 3 permitir Prog
delay_access 3 denegar todo
# y ahora restringimos el resto (segunda clase de la piscina)
delay_class 4 2
delay_parameters 4 10000/10000 2000/2000
delay_access 4 deny media
delay_access 4 deny Pupkin
delay_access 4 deny Prog
delay_access 4 permitir LocalNet
delay_access 4 denegar todo

A menudo surge la pregunta, ¿cuál es la mejor manera de utilizar un canal tan pequeño para que se divida automáticamente entre todos los que están descargando algo actualmente? Hay una respuesta inequívoca a esta pregunta: no es posible hacer esto usando el servidor proxy Squid, pero aún puede hacer algo:

Delay_class 1 2
delay_parameters 1 -1 / -1 5000/15000
delay_access 1 permitir LocalNet
delay_access 1 denegar todo

Por lo tanto, asignamos el canal máximo para toda nuestra red y en las subredes (-1 significa ilimitado), y cada usuario recibe una velocidad máxima de 5 Kb / s después de descargar los primeros 15 KB de un documento a la velocidad máxima.

Por lo tanto, el cliente no consumirá todo el canal, sino que recibirá rápidamente los primeros 15 KB.

Optimización del almacenamiento en caché de objetos Squid

Hay muchos tipos de archivos que no se actualizan con la frecuencia suficiente para permitir que el proxy responda a los encabezados de los servidores web en los que el objeto no se puede almacenar en caché o, sorprendentemente, acaba de cambiar. Ésta es una situación bastante común.

Para resolver tales situaciones, el parámetro refresh_pattern en el archivo de configuración del servidor proxy Squid está diseñado, pero completamente con fórmulas, etc. no lo consideraremos.

Refresh_pattern [-i] string MINV porcentaje parámetros MAXW

Este parámetro se utiliza para determinar la antigüedad del objeto (leer el archivo) en la caché, si debe actualizarse o no.

MINV (tiempo mínimo): el tiempo en minutos cuando un objeto en la caché se considera nuevo.

MAXV (tiempo máximo): tiempo máximo en minutos, cuando el objeto se considera fresco.

Los parámetros son uno o más de los siguientes parámetros:

    override-expire: ignora la información de caducidad de actualización del objeto y usa MINV.

    override-lastmod: ignora la información sobre la fecha de modificación del archivo y usa MINV.

    reload-into-ims - en lugar de solicitar una solicitud del cliente "no almacenar documentos en caché" (sin caché) envíe una solicitud "Si se cambió de" (If-Modified-Since)

    ignorar-recargar - ignorar las solicitudes del cliente "no almacenar documentos en caché" (sin caché) o "recargar documento" (recargar).


Y así llegamos a lo más importante. Bueno, ¿cuáles son los tipos de archivos que se actualizan con menos frecuencia? Por regla general, se trata de varios archivos de música e imágenes.

Establezcamos la frescura de los objetos, para esto, para imágenes y archivos de música, indicaremos, digamos por ejemplo, hasta 30 días (43.200 minutos):

Refresh_pattern -i .gif $ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i .png $ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i .jpg $ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i .jpeg $ 43200 100% 43200 override-lastmod override-expire
actualizar_patrón -i .pdf $ 43200 100% 43200 anular-lastmod anular-caducar
refresh_pattern -i .zip $ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i .tar $ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i .gz $ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i .tgz $ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i .exe $ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i .prz $ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i .ppt $ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i .inf $ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i .swf $ 43200 100% 43200 anular-lastmod anular-caducar
refresh_pattern -i .mid $ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i .wav $ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i .mp3 $ 43200 100% 43200 override-lastmod override-expire

Los ajustes que se muestran arriba son solo un ejemplo, para entender la esencia.

Ahora puede verificar la eficiencia de su servidor proxy, seguramente aumentará.

Conclusión

Squid Proxy no es solo un proxy común, hay otros. Pero como muestran las estadísticas, la mayoría usa este servidor proxy en particular, pero al mismo tiempo, muchos principiantes todavía tienen problemas con la configuración.

Hoy vamos a hablar de servidores proxy.

Un servidor proxy es algo que proporciona acceso para varias computadoras de una red a otra (pero no debe confundirse con los enrutadores; son cosas completamente diferentes, un servidor proxy funciona a nivel de aplicación). La tarea más común de un servidor proxy es proporcionar acceso a Internet para las PC que no lo tienen a través de una PC que tiene acceso a la red global. Consideremos este problema en el caso de usar una computadora con Windows como puerta de entrada a Internet.

Para resolver este problema, puede usar soluciones propietarias con una interfaz visual, por ejemplo, UserGate. Pero no pude hacer que funcione correctamente en una PC con Windows 7 y se paga :) Por lo tanto, creo que la mejor solución es la Calamar que obtuvimos de * nix. Puede descargar esta creación en: Squid 2.7 (la última versión en el momento de escribir este artículo)

Descargue y descomprima, preferiblemente en la raíz del disco. No intente ejecutar nada desde allí, este programa no tiene GUI, y no se deje intimidar por eso :)
A continuación, abra la consola - Win + R / сmd / vaya a la carpeta con el calamar instalado (además, escribiré para la ruta de instalación c: \ squid)

C: \
cd c: \ calamar \ sbin

Ahora necesita instalar el calamar como un servicio de Windows con el comando:

calamar -i -f c: /squid/etc/squid.conf -n Squid27

Donde Squid27 es el nombre del servicio, que en principio puede ser cualquiera válido.

Ahora necesita editar el archivo de configuración squid.conf, que se encuentra en la carpeta c: / squid / etc /, le aconsejo que haga una copia de seguridad del archivo original. A continuación, borramos todo el texto de este archivo y escribimos lo siguiente:

http_port 3128
acl localnet src 192.168.3.0/255.255.255.0
acl localhost src 127.0.0.1/255.255.255.255
acl todo src 0.0.0.0/0.0.0.0
http_access permitir localnet
http_access permitir localhost
http_access denegar todo

cache_log ninguno
cache_store_log ninguno

donde

  • http_port 3128 - el número de puerto en el servidor a través del cual trabaja el squid, es decir, en la configuración del cliente indicaremos la dirección del servidor y este puerto;
  • acl localnet src 192.168.0.0/255.255.0.0- esta línea indica el rango de direcciones IP para las que es posible conectarse a nuestro proxy. La máscara se puede especificar como / 8, / 16, / 24 (para 255.0.0.0, 255.255.0.0, 255.255.255.0, respectivamente) y localnet es el nombre. De hecho, con esta línea declaramos una variable con la que trabajaremos más. la siguiente línea declara de manera similar la variable all, donde se especifican todas las ip existentes;
  • http_access permitir localnet - con esta línea permitimos el acceso desde la ip especificada en la variable localnet a nuestro proxy;
  • http_access denegar todo - Prohibimos que todos los demás accedan al proxy. Estos permisos funcionan de arriba a abajo, por lo que esta línea debe aparecer en último lugar. De lo contrario, nadie llegará al proxy :)
  • cache_log ninguno - obligatorio, como la siguiente línea, para que los registros no crezcan a gigabytes)
También puede agregar los siguientes parámetros:
  • cache_mem 32 MB: determina el tamaño del caché adicional del calamar en la RAM;
  • cache_dir ufs c: / squid / var / cache 100 16256- determina la ruta a la carpeta de caché, su tamaño en MB (100) y la cantidad de subcarpetas (por qué esto último, todavía no lo entiendo :))
Ahora necesita eliminar el ".default" en el nombre del archivo mime.conf en la misma carpeta, o simplemente crear un archivo de texto vacío con ese nombre. Esto es necesario para formar la caché. En la consola, escribimos el comando (estando en la carpeta sbin):

calamar -z -f c: \ calamar \ etc \ calamar.conf

Entonces, en principio, estamos listos para lanzar nuestro proxy. Escribimos en la línea de comando (o puede ir a Servicios y ejecutar con el mouse :)

inicio neto Squid27

Detener:

parada neta squid27

Reconfiguración:

squid -n Squid27 -f con: /squid/etc/squid.conf -k reconfigure

Todavía puede hacer muchas cosas en este proxy, por ejemplo, establecer restricciones para diferentes usuarios en el tiempo, en la velocidad, prohibir el acceso a ciertos sitios, etc., etc. Pero este artículo no incluye una descripción de todo esto, como el material se encuentra fácilmente en Internet.

Actualizamos el sistema:

Agrega una regla a firewalld:

firewall-cmd --permanent --add-port = 3128 / tcp

* donde 3128 - el puerto en el que se configurará nuestro servidor proxy.

y reinicie firewalld:

firewall-cmd --reload

Instalación y configuración de Squid

Instale el servidor proxy con el siguiente comando:

mmm instalar calamar

Y abra el archivo de configuración para editarlo:

vi /etc/squid/squid.conf

Si la red de equipos cliente difiere del estándar (192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8), debe agregarlo a acl, por ejemplo:

acl localnet src 217.66.157.0/24

oa través de un archivo:

acl localnet src "/ etc / squid / acl_localnet"

* se requieren cotizaciones
** después de que necesite crear un archivo / etc / squid / acl_localnet y enumere las direcciones IP permitidas en cada línea.

Para permitir todo el tráfico, agregue la siguiente línea:

http_access permitir todo

* es importante que sea más alto que el prohibitivo - http_access denegar todo

Configure un directorio para la caché:

cache_dir ufs / var / spool / squid 4096 32256

* donde ufs- sistema de archivos (ufs para SQUID es el más adecuado); / var / spool / calamar- directorio de almacenamiento en caché; 4096 - la cantidad de espacio en megabytes que se asignará a la caché; 32 - el número de catálogos de primer nivel que se crearán para la asignación de caché; 256 - el número de catálogos de segundo nivel que se crearán para la asignación de caché.

Ahora creamos una estructura de carpetas para el caché con el siguiente comando:

Y ya puedes empezar con calamares:

systemctl start squid

No olvide habilitar su inicio automático:

systemctl habilitar calamar

Examen

Entramos en los ajustes del navegador y configuramos el uso de un servidor proxy. Por ejemplo, en Mozilla Firefox, la configuración debe establecerse de la siguiente manera:

* donde 192.168.163.166 - la dirección IP de mi servidor proxy.

Ahora abrimos el sitio 2ip.ru. Después de cargarlo, veremos la dirección IP externa; debe corresponder a la red desde la que se ejecuta el SQUID configurado.

Proxy transparente

El proxy transparente le permite utilizar automáticamente un servidor proxy sin configurar el navegador de su computadora. Es posible que los usuarios ni siquiera sepan que el tráfico atraviesa el calamar.

vi /etc/squid/squid.conf

Encontramos la línea:

Y lo traemos de la siguiente forma:

http_port 3128 transparente

Y reinicia el calamar:

systemctl reiniciar calamar

Calamar + HTTPS

No tuve que configurar https especialmente para squid en CentOS 7, todo funcionó de forma predeterminada.

Autorización de inicio de sesión y contraseña

Abriendo el archivo de configuración:

vi /etc/squid/squid.conf

Pegue lo siguiente:

auth_param programa básico / usr / lib64 / squid / basic_ncsa_auth / etc / squid / auth_users
auth_param basic niños 25
auth_param basic realm SQUID PROXY
auth_param basic credentialsttl 3 horas
acl auth_users proxy_auth REQUERIDO

* donde / usr / lib64 / squid / basic_ncsa_auth- ubicación de ncsa_auth (dependiendo del sistema, puede estar en un directorio diferente); / etc / squid / auth_users- archivo con inicios de sesión y contraseñas; niños 25 permite 25 conexiones simultáneas; PROXY DE CALAMAR- una frase de saludo arbitraria; credentialsttl 3 horas mantendrá la sesión durante 3 horas, después de lo cual deberá volver a ingresar su nombre de usuario y contraseña.

http_access deny! Safe_ports

Agregar:

http_access permitir auth_users

Cree un archivo con los usuarios y cree el primer par de nombre de usuario y contraseña:

htpasswd -c / etc / squid / auth_users user1

* si el sistema devuelve el error " bash: htpasswd: comando no encontrado»Instale htpasswd con el comando yum instalar httpd-tools

Crea un segundo usuario:

htpasswd / etc / squid / auth_users user2

Y reinicia el calamar:

systemctl reiniciar calamar

Interfaz de red saliente

Nuestro servidor puede tener varias direcciones IP externas. De forma predeterminada, todas las solicitudes salientes funcionarán a través de la interfaz con la puerta de enlace predeterminada. Para poder trabajar con squid a través de diferentes interfaces, agregamos a la configuración.

Squid es un servidor proxy popular que se utiliza principalmente para almacenar en caché el contenido web solicitado con frecuencia para mejorar los tiempos de respuesta de la página, así como para filtrar el tráfico de la red. Es compatible con muchos protocolos diferentes, como HTTP, FTP, TLS, SSL, Internet Gopher y HTTPS. También puede resultar muy útil en conexiones lentas a Internet. Squid se desarrolló originalmente como un demonio de Unix, pero se lanzaron varios puertos para Windows. Squid tiene la licencia GNU General Public License.

Este tutorial le mostrará cómo instalar Squid en Ubuntu 16.04. Simplemente siga estas instrucciones en secuencia y la instalación de squid ubuntu no causará ningún problema. Squid es un programa bastante multifuncional y no podremos cubrir todas sus funciones en este artículo, pero intentaremos cubrir las principales para que puedas personalizarlo y utilizarlo por completo. Empecemos por la instalación.

Hay varias formas de instalar Squid en Ubuntu, una de las más comunes es desde los repositorios oficiales usando la utilidad apt.

Primero, abra una terminal con el atajo de teclado Ctrl + Alt + T y actualice el índice del paquete:

Después de actualizar la lista de paquetes, puede proceder a instalar el servidor proxy, simplemente ejecute el comando:

sudo apt instalar calamar

Luego, la utilidad le preguntará si necesita continuar con la instalación, ingrese Y y espere a que finalice la descarga e instalación:

Luego puede continuar con la configuración.

Configurando Squid

El archivo de configuración del servidor se encuentra en el directorio / etc / squid. Dependiendo de la versión de Squid, el nombre de la carpeta y el archivo en sí pueden diferir, por ejemplo, /etc/squid3/squid.conf o /etc/squid/squid.conf. Todas las configuraciones están en este archivo. Echemos un vistazo.

vim /etc/squid3/squid.conf

Cuando se abra el archivo, verá algo similar:

El archivo contiene varias opciones de configuración, así como mucha documentación sobre su uso. No tocaremos muchos de ellos, pero consideraremos los principales.

Control de acceso

Primero, necesitamos configurar las reglas para el acceso de los clientes a nuestro servidor proxy. Squid fue diseñado para ser un programa de organización e incluso si lo usa en casa, la configuración de Squid 3 también debe realizarse.

La lista acl se utiliza para esto. esta es una lista regular de objetos, ahora no significa nada en absoluto. Estas pueden ser direcciones IP, puertos, etc. Luego le diremos al programa qué hacer con esta lista, permitir o denegar el acceso. La sintaxis para crear una lista acl es la siguiente:

acl nombre_lista tipo_lista elemento_lista

Puede haber varias cadenas de este tipo con el mismo nombre y tipo, y de ellas se obtiene una lista. El nombre de la lista puede ser arbitrario, lo usaremos más adelante. El tipo de lista es mucho más interesante. Puede ser uno de:

  • src- dirección IP de donde se origina la conexión, dirección del cliente;
  • dst- dirección IP del destino de la conexión, la dirección del servidor al que el cliente desea acceder;
  • dstdomain- dominio de destino de la conexión;
  • srcdomain- dominio del cliente;
  • arp- dirección MAC de la tarjeta de red del cliente;
  • hora- el momento en que se realiza la conexión;
  • Puerto- el puerto al que el cliente intenta acceder;
  • proto- el protocolo utilizado para establecer la conexión;
  • método- método de transferencia de datos, por ejemplo, GET - transferencia de datos HTTP, POST - transferencia de datos de formulario en HTTP, CONNECT - solicitud de conexión al servidor;
  • http_status- respuesta del servidor;
  • navegador- navegador del cliente;
  • url_regex- dirección URL a la que están intentando acceder.

Estos no son todos los tipos de listas, pero son suficientes para empezar, y hay información más detallada en el mismo archivo de configuración.

Agregue una lista para acceder al servidor desde la red local:

acl localnet src 192.168.0.0/16

Creemos una lista Safe_ports para permitir el tráfico a los puertos de los principales servicios de red, así como a los puertos no registrados por encima de 1024:

acl Safe_ports puerto 80 # http
acl Safe_ports puerto 21 # ftp
acl Safe_ports puerto 443 # https
acl Safe_ports puerto 70 # gopher
acl Safe_ports puerto 210 # wais
acl Safe_ports puerto 1025-65535 # puertos no registrados
acl Safe_ports puerto 280 # http-mgmt
acl Safe_ports puerto 488 # gss-http
acl Safe_ports puerto 591 # filemaker
acl Safe_ports puerto 777 # multiling http

Creemos dos listas más: SSL_ports y connect, para permitir el uso del método connect solo para conexiones ssl. Esto evitará que el cliente utilice otros proxies además del nuestro:

acl SSL_ports puerto 443

método de conexión acl CONNECT

Como dije, estas listas por sí solas no significan nada y no afectan el funcionamiento del servidor de ninguna manera. Para aplicar la lista, debe utilizar la directiva http_access. Su sintaxis es:

http_access action list_name

La acción se puede permitir o negar. ahora deniegue el acceso a todos los puertos excepto los especificados en Safe_ports:

http_access deny Connect! SSL_ports

Ahora permitamos el acceso desde esta computadora (la lista localhos acl está predefinida):

http_access permitir localhost

Permitamos el acceso desde la red local:

http_access permitir localnet

Y prohibiremos todo lo demás:

http_access denegar todo

Otros ajustes

El control de acceso es uno de los componentes más importantes, pero la configuración de squid ubuntu no está completa aquí. Hay muchos más parámetros interesantes, solo cubriremos algunos de ellos:

http_port: establece la dirección IP y el puerto en el que se ejecutará el programa. Puede ejecutar un proxy solo en esta computadora con la siguiente construcción:

http_port localhost: 3218

O en la red local:

https_port: establece la dirección IP y el puerto en el que se aceptarán las conexiones https. No cubriremos el trabajo con https en este artículo.

cache_mem- la cantidad de memoria que se asigna para el almacenamiento en caché de objetos.

cache_dir: le permite configurar la carpeta para almacenar el caché. De forma predeterminada, todo el caché se almacena en la RAM. Sintaxis:

cache_dir sistema de archivos carpeta size_v_mb L1 L2

L1 y L2: el número de subcarpetas de primer y segundo nivel. El sistema de archivos determina cómo se escriben los datos en el disco. Por ejemplo:

cache_dir aufs / var / spool / squid 100 16256

coredump_dir- directorio donde se guardará el volcado de memoria en caso de error.

actualizar_patrón es un parámetro muy interesante que le permite extender la vida útil de los objetos en la caché. La sintaxis es:

actualizar_patrón -i expresión regular tiempo_mínimo por ciento max_time parámetros

  • expresión regular- especifica los objetos a los que se debe aplicar el parámetro;
  • tiempo_mínimo- tiempo en minutos mientras el objeto se considera fresco;
  • max_time- tiempo máximo en minutos mientras el objeto está fresco;

los parámetros pueden ser los siguientes:

  • anular-caducar- ignorar el encabezado de expiración;
  • anular-lastmod- ignorar la última fecha de modificación del archivo;
  • recargar en ims- en lugar de no almacenar en caché, envíe una solicitud If-Modified-Since;
  • ignorar-recargar- ignorar las solicitudes de los clientes, no almacenar en caché.

Por ejemplo:

refresh_pattern -i \ .gif $ 43200 100% 43200 override-lastmod override-expire

Es posible que necesite otras configuraciones después de que se complete la instalación de squid ubuntu. Pero están más allá del alcance de este artículo. Ahora guarde sus cambios, cierre el archivo y vuelva a cargar Squid:

reinicio de squid3 del servicio sudo

Si este comando devuelve un error, pruebe con otro:

reinicio del calamar del servicio sudo

Queda por comprobar el funcionamiento de nuestro servidor proxy. Esto se puede hacer con cualquier navegador. Abra la configuración de su navegador y configure el proxy. Le mostraré cómo hacer esto en Mozilla Firefox. Si tiene otro navegador, por ejemplo, Google Chrome, creo que puede averiguar cómo está configurado el proxy allí.

Configuración del lado del cliente

Abra su navegador, vaya a Personalización --> Adicionalmente --> Red... Entonces presione Ajustes En el capítulo Conexión y seleccione configurar el proxy manualmente:

En campo Proxy HTTP especifique la dirección IP de la máquina en la que se instaló el servidor Squid y, en el campo del puerto, el número de puerto 3128. Este puerto se usa por defecto en Squid, pero puede cambiar el número de puerto con / etc / squid / squid. conf