Aplicación de servidor proxy Squid (configuración de operación real en modo tradicional y modo transparente)

Prefacio

También conocido como CDN, el nombre completo de CDN es Content Delivery Network, es decir, red de entrega de contenido. CDN es una red virtual inteligente construida sobre la base de la red existente, apoyándose en servidores de borde desplegados en varios lugares, a través del balanceo de carga, distribución de contenido, programación y otros módulos funcionales de la plataforma central, para que los usuarios puedan obtener el contenido requerido cerca y reducir la congestión de la red. Mejore la velocidad de respuesta de acceso de los usuarios y la tasa de aciertos. Las tecnologías clave de CDN incluyen principalmente tecnología de almacenamiento y distribución de contenido.

Uno: Descripción general de Caching Proxy

1.1: El mecanismo de trabajo del proxy web

  • Almacene en caché los objetos de la página web para reducir las solicitudes repetidas

  • Todos sabemos que la información web solo se puede obtener accediendo a un servidor web. Si el número de visitas es de cientos o miles ... el servidor aún puede resistirlo. Si el número de visitas simultáneas es de decenas de miles, es posible que el servidor con mejor rendimiento no pueda soportarlo. Solicitud de acceso enorme. Entonces, para aliviar la presión sobre el servidor, existe un servidor proxy Squid. En otras palabras, el usuario no accede directamente al servidor web, sino que a través del servidor proxy squid, el proxy visita la web y la página web se almacena en caché en el proxy. De esta forma, el usuario evita acceder directamente al servidor web y reducirá en gran medida el retraso en el lado web provocado por un gran número de visitas.
    Inserte la descripción de la imagen aquí

1.2: Tipos básicos de agentes

  • Proxy tradicional: aplicable a Internet, el servidor debe especificarse claramente
  • Proxy transparente: el cliente no necesita especificar la dirección y el puerto del servidor proxy, pero redirige el acceso web al servidor proxy para su procesamiento a través de la ruta predeterminada y la política de firewall.

1.3: Los beneficios de usar un proxy

  • Mejorar la velocidad de acceso a la web
  • Ocultar la dirección IP real del cliente

Dos: construir una configuración experimental de calamar

2.1: Entorno experimental

  • Tres centos 7
    • Uno como servidor proxy Squid: 20.0.0.51
    • Uno como servidor web: 20.0.0.52
    • Uno como cliente: 20.0.0.20

2.2: Propósito experimental

  • Al mirar el archivo de registro, puede ver la conversión de la dirección, desde la IP del cliente a la dirección del servidor proxy squid, y luego ocultar la dirección IP de origen

2.3: Pasos experimentales

  • Preparar el paquete de calamares
  • Descomprime el paquete de instalación de Squid
tar zxvf squid-3.4.6.tar.gz -C /opt/
  • Instalar el entorno de compilación
[root@squid ~]# cd /opt/squid-3.4.6/
[root@squid squid-3.4.6]# yum install gcc gcc-c++ -y
  • Compilar e instalar
[root@squid squid-3.4.6]# ./configure --prefix=/usr/local/squid \  '安装路径'
--sysconfdir=/etc \  '配置文件目录'
--enable-arp-acl \   '开启ACL'
--enable-linux-netfilter \  '内核过滤'
--enable-linux-tproxy \'透明模式'
--enable-async-io=100 \'io优化吞吐量'
--enable-err-language="Simplify_Chinese" \
--enable-underscore \'支持下划线字符'
--enable-poll \'poll功能模块'
--enable-gnuregex '支持正则'
[root@squid squid-3.4.6]# make && make install
  • Optimización de rutas y creación de usuarios del programa
[root@squid squid-3.4.6]# ln -s /usr/local/squid/sbin/* /usr/local/sbin  '做软链接,优化路径'
[root@squid squid-3.4.6]# useradd -M -s /sbin/nologin/ squid  '创建程序用户'
[root@squid squid-3.4.6]# chown -R squid.squid /usr/local/squid/var  '修改目录属主,属组'
  • Modificar el archivo de configuración principal
[root@squid squid-3.4.6]# vim /etc/squid.conf
'在3128端口下添加'
cache_effective_user squid
cache_effective_group squid
  • Verifique la sintaxis de configuración del archivo e inicialice el directorio de caché
[root@squid squid-3.4.6]# squid -k parse   '检测语法'
[root@squid squid-3.4.6]# squid -z '初始化缓存目录'
[root@squid squid-3.4.6]# squid '启动服务'
  • Configurar el script de inicio de Squid
[root@squid squid-3.4.6]# cd /etc/init.d
[root@squid init.d]# vim squid
#!/bin/bash
#chkconfig: 2345 90 25
PID="/usr/local/squid/var/run/squid.pid"
CONF="/etc/squid.conf"
CMD="/usr/local/squid/sbin/squid"

case "$1" in
        start)
            netstat -natp | grep squid  &> /dev/null
            if [ $? -eq 0 ]
            then
 	echo "squid is running"
            else
 	echo "正在启动 squid..."
                $CMD
            fi
         ;;
         stop)
            $CMD -k kill  &> /dev/null
            rm -rf $PID &> /dev/null
         ;;
         status)
            [ -f $PID ] &> /dev/null
                if [ $? -eq 0 ]
                then
                    netstat -natp | grep squid
                else
                    echo "squid is not running"
                fi
          ;;
          restart)
             $0 stop  &> /dev/null
             echo "正在关闭 squid..."
                  $0 start &> /dev/null
             echo "正在启动 squid..."
          ;;
          reload)
              $CMD -k reconfigure
          ;;
          check)
              $CMD -k parse
          ;;
          *)
               echo "用法:$0{start|stop|status|reload|check|restart}"
          ;;
esac
  • Agregue permisos de script, agregue servicios y abra servicios
[root@squid init.d]# chmod +x squid
[root@squid init.d]# ls
functions  netconsole  network  README  squid
[root@squid init.d]# chkconfig --add squid
[root@squid init.d]# chkocnfig --level 35 squid on  '开机自启动'
[root@squid init.d]# service squid stop
[root@squid init.d]# netstat -ntap |grep 3128
[root@squid init.d]# service squid start
正在启动 squid...
[root@squid init.d]# netstat -ntap |grep 3128
tcp6       0      0 :::3128                 :::*                    LISTEN      47369/(squid-1)     

2.4: Configuración del modo proxy tradicional de Squid

  • Modificar el archivo de configuración principal
vim /etc/squid.conf
http_access allow all   
http_access deny all   '在这一行上添加'
'在3128端口下面加'
cache_mem 64 MB
reply_body_max_size 10 MB
maximum_object_size 4096 KB
  • Borrar reglas de firewall y establecer reglas de firewall
[root@squid init.d]# iptables -F
[root@squid init.d]# setenforce 0
[root@squid init.d]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
[root@squid init.d]# service squid reload    '重新加载服务'

2.5: Configuración del cliente

  • Necesidad de desarrollar la dirección y el puerto del servidor proxy

[Error en la transferencia de la imagen del enlace externo. El sitio de origen puede tener un mecanismo anti-hotlinking. Se recomienda guardar la imagen y subirla directamente (img-nLKRzg39-1599382323550) (C: \ Users \ kevin \ AppData \ Roaming \ Typora \ typora-user-images \ image-20200906153418000.png)]

Inserte la descripción de la imagen aquí

2.6: Servidor web y configuración

[root@web ~]# yum install httpd -y
[root@web ~]# systemctl start httpd
[root@web ~]# netstat -ntap | grep 80
[root@web ~]# cd /var/log/httpd/
[root@web httpd]# cat access_log   '查看日志'
  • El cliente accede a la dirección del servidor web para generar registros.

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

2.7: Configuración del modo transparente

  • Diagrama esquemático

Inserte la descripción de la imagen aquí

  • No es necesario especificar la dirección y el puerto en el modo transparente de configuración, que debe eliminarse aquí

Inserte la descripción de la imagen aquí

  • Configure tarjetas de red duales, configure los parámetros de la tarjeta de red, seleccione el modo de solo host
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp -p ifcfg-ens33 ifcfg-ens36
[root@localhost network-scripts]# vim ifcfg-ens36
IPADDR=20.0.10.1
  • Habilitar la función de enrutamiento y reenvío
[root@localhost network-scripts]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1
[root@localhost network-scripts]# sysctl -p
net.ipv4.ip_forward = 1
  • Configurar Squid para admitir un proxy transparente
[root@localhost network-scripts]# vim /etc/squid.conf
http_port 20.0.10.1:3128 transparent
[root@localhost network-scripts]# squid -k parse
  • Configurar reglas de firewall
[root@localhost network-scripts]# iptables -t nat -I PREROUTING -i ens36 -s 20.0.10.0/24 -p tcp --dport 80 -j REDIRECT --to 3128  '80表示http端口'
[root@localhost network-scripts]# iptables -t nat -I PREROUTING -i ens36 -s 20.0.10.0/24 -p tcp --dport 443 -j REDIRECT --to 3128   '443表示https的端口'
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT   '如过之前没有做过,需要敲,这边是基于上一个实验,不需要'
  • Servicio de recarga
[root@localhost network-scripts]# service squid reload
[root@localhost network-scripts]# netstat -ntap | grep squid
tcp        0      0 20.0.10.1:3128          0.0.0.0:*               LISTEN      47369/(squid-1)   
  • Ver registros del servidor web
    Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/m0_47219942/article/details/108433500
Recomendado
Clasificación