Explique el servidor proxy Squid en detalle (cómo construir un proxy tradicional, un proxy transparente, control de ACL, análisis de registros de Squid, proxy de Squid)

1. Descripción general de Caching Proxy

1. El mecanismo de trabajo del proxy web

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

Inserte la descripción de la imagen aquí

2. Los 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 a través de la ruta predeterminada y la política de firewall.

3. Los beneficios de usar un proxy

Mejorar la velocidad de acceso a la web

Ocultar la dirección IP real del cliente

2. Cómo construir una agencia tradicional

Anfitrión dirección IP Software principal
Servidor proxy Squid 192.168.100.11 calamar
Servicio de sitio web 192.168.100.12 httpd
win10 192.168.100.13 Navegador

1. Instalar dependencias

yum install gcc gcc-c++ -y

2. Compile e instale el servicio Squid

tar xf squid-3.5.23.tar.gz
cd squid-3.5.23/

./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模式,开启epoll模式时提升性能
--enable-gnuregex       #支持正则表达式

make && make install

ln -s /usr/local/squid/sbin/* /usr/local/sbin/
useradd -M -s /sbin/nologin squid
chown -R squid.squid /usr/local/squid/var/

3. Modifique los archivos de configuración para optimizar los elementos de inicio

vim /etc/squid.conf
http_access allow all    #56行添加此项,表示允许所有IP访问
#http_access deny all   #注释原有的
http_port 3128
cache_effective_user squid     #添加指定用户squid
cache_effective_group squid   #添加指定组squid
coredump_dir /usr/local/squid/var/cache/squid

squid -k parse   //检查配置文件语法
squid -z   //初始化缓存目录
squid    //启动服务
netstat -ntap |grep 3128   #检测是否启动成功

4. Agregar servicio a la gestión de servicios

cd /etc/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

chmod +x /etc/init.d/squid

chkconfig --add squid
chkconfig --level 35 squid on

5. Configurar el proxy tradicional

vim /etc/squid.conf

http_port 3128
cache_effective_user squid
cache_effective_group squid
cache_mem 64 MB      #缓存空间大小定义为64 MB
reply_body_max_size 10 MB  #允许下载的最大文件大小,默认0表示不进行限制
maximum_object_size 4096 KB  #允许保存到缓存空间的最大对象的大小,以KB为单位,超过限制不会缓存,直接转到web端

[root@localhost ~]# iptables -F
[root@localhost ~]# iptables -F -t nat
[root@localhost ~]# setenforce 0
[root@localhost ~]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
[root@localhost ~]# systemctl restart squid

6. Instale el servicio httpd en el servidor web.

systemctl stop firewalld.service
yum -y install httpd
systemctl start httpd

# Visite el sitio web del cliente para ver si se accede normalmente
Inserte la descripción de la imagen aquí

#Compruebe el contenido del archivo de registro. En este momento, la IP visitante sigue siendo la IP del cliente.

[root @ localhost ~] # cat / var / log / httpd / access_log

Inserte la descripción de la imagen aquí

7. Configure el proxy squid, verifique el cambio de la IP de visita en el archivo de registro

Nota: (1) Primero borre la caché del navegador del cliente

(2) Configure manualmente el proxy: habilite el uso del servidor proxy: configure la dirección del proxy y guarde el puerto

(3) Visite el servidor apache nuevamente para verificar los cambios en el archivo de registro; la IP visitante que se muestra en este momento se convierte en la dirección del servidor proxy Squid
Inserte la descripción de la imagen aquí

3. Proxy transparente

在搭建的传统代理基础上做如下修改:
Squid 配置双网卡内网ens33  外网ens36
Anfitrión dirección IP
Servidor proxy Squid 192.168.50.11 (red interna), 192.168.100.11 (red externa)
Servicio de sitio web 192.168.100.12 (red externa)
Máquina de prueba 192.168.50.13 (intranet)

La máquina de prueba cuelga el proxy para acceder al sitio web

Servidor web

route add -net 192.168.50.0/24 gw 192.168.100.11

Servidor proxy Squid

vi /etc/sysctl.conf
net.ipv4.ip_forward=1		#开启路由功能

vim /etc/squid.conf

http_port 192.168.50.11:3128 transparent

service squid reload

iptables -t nat -I PREROUTING -i ens37 -s 192.168.50.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
 
iptables -t nat -I PREROUTING -i ens37 -s 192.168.50.0/24 -p tcp --dport 443 -j REDIRECT --to 3128

iptables -I INPUT -p tcp --dport 3128 -j ACCEPT

Accede a la web sin proxy
Inserte la descripción de la imagen aquí

4.control ACL

Squid proporciona un poderoso mecanismo de control de proxy. Al establecer razonablemente ACL (Lista de control de acceso, lista de control de acceso) y restringirla, puede filtrar en función de varias condiciones, como la dirección de origen, la dirección de destino, la ruta de la URL de acceso y el tiempo de acceso.

1. Modificar en el archivo de configuración

vim /etc/squid.conf
acl localhost src 192.168.50.13/32
http_access deny localhost
重启服务
systemctl restart squid

Visite nuevamente, aparece la siguiente interfaz

Inserte la descripción de la imagen aquí

Algunas otras restricciones

vi /etc/squid.conf
acl localhost src 192.168.100.13/32			#针对固定源IP地址
acl MYLAN src 192.168.100.0/24				#针对某一网段
acl destionhost dst 192.168.175.130/32		#针对具体的目标IP地址
acl MC20 maxconn 20							#访问的最大并发连接数量
acl BURL url_regex -i ^rtsp:// ^emule://	#正则表达式的访问协议
acl PURL urlpath_regex -i \.mp3$ \.mp4$ \.rmvb$		#访问的文件资源末尾
acl work time MTWHFAC 08:30-17:30			#访问时间

http_access deny destionhost   #拒绝列表(注意置顶)

Habilitar la gestión de la lista de objetos

mkdir /etc/squid     #启用对象列表管理

vim dest.list
   
   192.168.175.150
   192.168.175.140
   192.168.175.130   #目标web

vim /etc/squid.conf
   
   acl destionhost dst "/etc/squid/dest.list"


http_access deny destionhost   #拒绝列表(注意置顶)

5. Análisis de registros de calamar

1. Compile e instale el software sarg

[root@server1 ~]# yum install -y gd gd-devel
mkdir /usr/local/sarg

tar zxvf sarg-2.3.7.tar.gz -C /opt/

cd /opt/sarg-2.3.7

./configure --prefix=/usr/local/sarg \
--sysconfdir=/etc/sarg \
--enable-extraprotection            #额外安全防护

make && make install

2. Modifique el archivo de configuración

cd /etc/sarg/

vim sarg.conf
7/ access_log /usr/local/squid/var/logs/access.log    //指定访问日志文件
25/ title "Squid User Access Reports"      //网页标题
120/ output_dir /var/www/html/squid-reports    //报告输出目录
178/ user_ip no          //使用用户名显示
206/ exclude_hosts /usr/local/sarg/noreport   //不计入排序的站点列表文件
184/ topuser_sort_field connect reverse   //top排序中有连接次数、访问字节、降序排列 升序是normal
(注释掉)190/ user_sort_field reverse    //用户访问记录 连接次数、访问字节按降序排序
257/ overwrite_report no   //同名日志是否覆盖
289/ mail_utility mailq.postfix   //发送邮件报告命令
434/ charset UTF-8   //使用字符集
518/ weekdays 0-6   //top排行的星期周期
525/ hours 0-23   //top排行的时间周期
633/ www_document_root /var/www/html  //网页根目录

3. Modificar la prueba

#添加不计入站点文件,添加的域名将不被显示在排序中
touch /usr/local/sarg/noreport

ln -s /usr/local/sarg/bin/sarg /usr/local/bin/


[root@localhost sarg]# sarg 
SARG: 纪录在文件: 242, reading: 100.00%
SARG: 成功的生成报告在 /var/www/html/squid-reports/2018Jul21-2018Jul21

yum install httpd -y

systemctl start httpd
systemctl stop firewalld

http://192.168.175.128/squid-reports

周期性计划
crontab -e
*/1 * * * * /usr/local/bin/sarg			每分钟生成一次,用于测试

#周期性计划任务执行每天生成报告crontab
sarg -l /usr/local/squid/var/logs/access.log -o /var/www/html/squid-reports/ -z -d $(date -d "1 day ago" +%d/%m/%Y)-$(date +%d/%m/%Y)

Luego use el cliente para visitar http://192.168.100.11/squid-reports

Inserte la descripción de la imagen aquí

6.proxy de calamar

Proxy inverso, de hecho, el cliente desconoce el proxy, porque el cliente puede acceder sin ninguna configuración, solo necesitamos enviar la solicitud al servidor proxy inverso, y el servidor proxy inverso selecciona el servidor de destino para obtener los datos. Al regresar al cliente, el servidor proxy inverso y el servidor de destino son servidores externos, exponiendo la dirección del servidor proxy y ocultando la dirección IP del servidor real.

Debido a que httpd ocupa el puerto 80, el servicio httpd en el servidor squid debe estar cerrado

1. Introducción

La tradición y la transparencia son para el cliente, utilizando Squid para acelerar el acceso a los servicios web, o las restricciones internas de la empresa sobre el comportamiento de los empleados en Internet. El objeto de servicio de Squid en el modo de proxy inverso es un servidor web. Squid oculta la IP del servidor web real, acelera el acceso de los clientes y tiene una función de equilibrio de carga.
La configuración del proxy inverso requiere tres pasos para completar:

  • Resolución de DNS
  • Configuración SQUID
  • Reenvío de puertos

2. Planificación de proyectos

Un servidor squid
Dos servidores web, web1: 192.168.100.12 web2: 192.168.100.13
Un cliente win10

3. Implementación del servidor web

//安装httpd
yum install httpd -y

//设置网页内容
echo "this is test02 web" > /var/www/html/index.html    #web1换一下数字
route add -net 192.168.50.0/24 gw 192.168.100.11  #静态路由

//开启web服务
systemctl start httpd

4. Configuración del proxy Squid

//设置防火墙规则
systemctl start firewalld
iptables -L    #查看防火墙规则
iptables -F
iptables -t nat -F
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT

vim /etc/squid.conf
#去掉透明代理设置反向代理
http_port 192.168.100.11:80 accel vhost vport

#节点服务器1最大访问30,权重1,别名web1
cache_peer 192.168.100.12 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1
#节点服务器2最大访问30,权重1,别名web2
cache_peer 192.168.100.13 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
#访问yun.com匹配web1,web2节点
cache_peer_domain web1 web2 www.yun.com

service squid restart

5. Configurar hosts en el cliente

vi / etc / hosts

192.168.100.11 www.yun.com

Visite www.yun.com

Dos páginas alternas

Supongo que te gusta

Origin blog.csdn.net/boyuser/article/details/109597365
Recomendado
Clasificación