Directorio de artículos
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
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
#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
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
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
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
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
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