概述

Squid作为应用层代理服务软件,主要提供缓存加速和应用层过滤控制的功能。本次实验使用的是Squid 4.1版本,和以往版本有较多不同,经过几天的摸索,终于成功实现了传统代理、透明代理及反向代理等功能。

代理的工作机制

代理服务器(Proxy Server)是个人网络和Internet服务商之间的中间代理机构,负责转发合法的网络信息,对转发进行控制和登记。其最基本的功能就是连接,此外还包括安全性、缓存,内容过滤,访问控制管理等功能。当客户机通过代理请求Web页面时,执行的代理服务器会先检查自己的缓存,当缓存中有客户机需要访问的页面,则直接将缓存服务器中的页面内容反馈给客户机;如果缓存中没有客户机需要访问的页面,则由代理服务器想Internet发送访问请求,当获得返回的Web页面以后,将页面数据保存到缓存中并发送给客户机。

代理的基本类型

根据实现的方式不同,代理服务可以分为传统代理和透明代理两种常见的代理服务。

1、传统代理:普通代理服务,必须在浏览器、QQ聊天工具,下载团建等程序中手动设置代理服务器的地址和端口,然后才能使用代理服务来访问网络,对于网页浏览器,访问网站时的域名解析请求也会发送给指定的代理服务器。

2、透明代理:提供与传统代理相同的功能和服务,其区别在于客户机不需要指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将Web访问重定向,实际上仍然交给代理服务器来处理。重定向的过程对客户机“透明”的,用户甚至不知道自己在使用代理服务,所以称为“透明代理”。使用透明代理时,网页浏览器访问网站时的域名解析请求将优先发给DNS服务器。

官网下载地址: http://www.squid-cache.org/Versions/v4/

安装squid

[root@squid ~]# wget http://www.squid-cache.org/Versions/v4/squid-4.10.tar.xz
[root@squid ~]# tar xvf squid-4.10.tar.xz
[root@squid ~]# cd squid-4.10/
[root@squid squid-4.10]# ./configure --prefix=/usr/local/squid \
> --enable-linux-netfilter \   #使用内核过滤
> --enable-linux-tproxy \      #支持透明代理(这个很重要,否则后面透明代理无法实现)
> --enable-async-io=100 \      #异步IO,提升存储性能
> --enable-err-language="Simplify_Chinese" \   #错误信息的显示语言
> --enable-underscore \        #允许URL中有下划线
> --enable-poll \              #使用Poll()模式,提升性能
> --enable-gnuregex            #使用GNU正则表达式
[root@squid squid-4.10]# make && make install
[root@squid squid-4.10]# cd /usr/local/squid/
[root@squid squid]# useradd -M -s /sbin/nologin squid
[root@squid squid]# chown -R squid.squid var/

初始化缓存

[root@squid squid]# ./sbin/squid -z
2020/03/10 21:49:30| Created PID file (/usr/local/squid/var/run/squid.pid)
[root@squid sbin]# 2020/03/10 21:49:30 kid1| Set Current Directory to /usr/local/squid/var/cache/squid
2020/03/10 21:49:30 kid1| Creating missing swap directories
2020/03/10 21:49:30 kid1| /usr/local/squid/var/cache/squid exists
2020/03/10 21:49:30 kid1| Making directories in /usr/local/squid/var/cache/squid/00
2020/03/10 21:49:30 kid1| Making directories in /usr/local/squid/var/cache/squid/01
2020/03/10 21:49:30 kid1| Making directories in /usr/local/squid/var/cache/squid/02
2020/03/10 21:49:30 kid1| Making directories in /usr/local/squid/var/cache/squid/03
2020/03/10 21:49:30 kid1| Making directories in /usr/local/squid/var/cache/squid/04
2020/03/10 21:49:30 kid1| Making directories in /usr/local/squid/var/cache/squid/05
2020/03/10 21:49:30 kid1| Making directories in /usr/local/squid/var/cache/squid/06
2020/03/10 21:49:30 kid1| Making directories in /usr/local/squid/var/cache/squid/07
2020/03/10 21:49:30 kid1| Making directories in /usr/local/squid/var/cache/squid/08
2020/03/10 21:49:30 kid1| Making directories in /usr/local/squid/var/cache/squid/09
2020/03/10 21:49:30 kid1| Making directories in /usr/local/squid/var/cache/squid/0A
2020/03/10 21:49:30 kid1| Making directories in /usr/local/squid/var/cache/squid/0B
2020/03/10 21:49:30 kid1| Making directories in /usr/local/squid/var/cache/squid/0C
2020/03/10 21:49:30 kid1| Making directories in /usr/local/squid/var/cache/squid/0D
2020/03/10 21:49:30 kid1| Making directories in /usr/local/squid/var/cache/squid/0E
2020/03/10 21:49:30 kid1| Making directories in /usr/local/squid/var/cache/squid/0F
2020/03/10 21:49:30| Removing PID file (/usr/local/squid/var/run/squid.pid)
[root@squid squid]# ./sbin/squid

修改配置文件

默认配置文件在/usr/local/squid/etc目录下squid.conf

acl localnet src 0.0.0.1-0.255.255.255    # RFC 1122 "this" network (LAN)
acl localnet src 10.0.0.0/8        # RFC 1918 local private network (LAN)
acl localnet src 100.64.0.0/10        # RFC 6598 shared address space (CGN)
acl localnet src 169.254.0.0/16     # RFC 3927 link-local (directly plugged) machines
acl localnet src 172.16.0.0/12        # RFC 1918 local private network (LAN)
acl localnet src 192.168.0.0/16        # RFC 1918 local private network (LAN)
acl SSL_ports port 443
acl Safe_ports port 80        # http
acl Safe_ports port 21        # ftp
acl Safe_ports port 443        # https
acl Safe_ports port 70        # gopher
acl Safe_ports port 210        # wais
acl Safe_ports port 1025-65535    # unregistered ports
acl Safe_ports port 280        # http-mgmt
acl Safe_ports port 488        # gss-http
acl Safe_ports port 591        # filemaker
acl Safe_ports port 777        # multiling http
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localnet
http_access allow localhost
#允许所有
http_access allow all
#http端口
http_port 0.0.0.0:8080
#https端口SSl
https_port 0.0.0.0:443 cert=/usr/local/squid/squid_ym68.crt key=/usr/local/squid/squid_ym68.key
#缓存目录
cache_dir ufs /usr/local/squid/var/cache/squid 1024 16 256
coredump_dir /usr/local/squid/var/cache/squid
refresh_pattern ^ftp:        1440    20%    10080
refresh_pattern ^gopher:    1440    0%    1440
refresh_pattern -i (/cgi-bin/|\?) 0    0%    0
refresh_pattern .        0    20%    4320
#额外提供给squid使用的内存
cache_mem 64 MB
#设置squid磁盘缓存最大文件,超过4M的文件不保存到硬盘
maximum_object_size 4 MB
#设置squid磁盘缓存最小文件
minimum_object_size 0 KB
#设置squid内存缓存最大文件,超过4M的文件不保存到内存
maximum_object_size_in_memory 4096 KB
#管理员邮箱
cache_mgr admin@lolicp.com
#log轮循 60天
logfile_rotate 60
#cache目录使用量大于95%时,开始清理旧的cache
cache_swap_high 95
#cache目录清理到90%时停止。
cache_swap_low 90
#主机名
visible_hostname squid.lolicp.com
#运行用户
cache_effective_user squid
#运行组
cache_effective_group squid
#以下是高匿的设置
request_header_access Via deny all
request_header_access X-Forwarded-For deny all
END

本文标题:Squid4.10安装部署

本文作者:宇宙最帅的男人

本文链接:https://lolicp.com/linux/20211520.html

版权声明:转载或者引用本文内容请注明来源及原作者,本文著作权归 (lolicp.com) 所有。

除非另有说明,本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

最后修改:2024 年 10 月 28 日
如果觉得我的文章对你有用,请随意赞赏