一 Squid简介
代理缓存服务器:接收到用户请求后,自动下载指定资源并存储到本地服务器,以后用户请求相同资源时,直接把存储在本地服务器的资源直接传给用户。
Squid服务程序支持HTTP、FTP、SSL等多种协议的数据缓存,支持ACL权限列表和ARL访问权限列表功能的内容过滤和权限管理功能。
Squid可以部署代理缓存服务,有效提高访问静态资源效率(用户),降低原服务器负载(服务器)。禁止用户访问存在威胁或不适宜网站资源,保证内网安全,整体提高客户机访问速度。
Squid作用分为正向代理和反向代理。
正向代理:标准代理模式与透明代理模式(用于企业局域网)
将网站数据缓存在服务器本地,提供数据资源在此被访问的效率,节省网络带宽资源,限制访问页面。
标准正向代理模式:用户必须在上网时指定代理服务器的IP地址与端口。
透明正向代理模式:用户不需要指定代理服务器,代理服务对用户透明。
反向代理:(用于大型网站结构中
)
降低对网站服务器的负载,用于回复用户对静态网站的请求,降低原始服务器的访问。
二 Squid的相关文件简介
(yum install squid 安装squid服务)
/user/bin/squid 主服务程序
/etc/squid/ 配置文件目录
/etc/squid/squid.conf 主配置文件
/var/log/squid/access.log 访问日志文件
/var/log/squid/cache.log 缓存日志文件
/etc/squid/squid.conf 主配置文件参数
参数(部分参默认隐藏,需自行添加) |
作用 |
http_port 3128 |
监听端口 |
cache_mem 64M |
内存缓存区大小 |
cache_dir ufs /var/spool/squid 2000 16 256 |
硬盘缓存大小(2000M) |
cache_effective_user squid |
设置缓存有效用户 |
cache_effective_group squid |
设置缓存有效用户组 |
dns_nameservers IP 地址 |
服务器默认DNS地址(一般不设) |
cache_access_log /var/log/squid/access.log |
访问日至保存路径 |
cache_log /var/log/squid/cache.log |
缓存日志文件保存路径 |
visible_log msun.com |
设置Squid服务主机名称 |
三 代理缓存服务搭建
1.正向代理
主机 |
IP |
代理缓存服务器(linux) |
外网:192.168.1.168(桥接模式) 内网:192.168.10.66(主机模式) |
客户端(windose) |
192.168.10.88 |
(内网192.168.10网段不能上网,外网192.168.1网段可以上网)
1.标准正向代理
1.windose客户端
配置IP192.168.10.88,现在windose不能正常上网(电脑连接着网段为192.168.1能上网的路由器)
进入浏览器(搜狐),进入网络选项中选择代理如下
2.linux代理服务器
1.网络配置
2.防火墙设置
firewall-cmd --add-port=3128/tcp --perment
firewall-cmd --reload
3.重启并设置自启(默认squid配置文件可以直接用)
systemctl restart squid 重启
systemctl enable squid 自启
(OK!现在客户端就可以正常上网)。
2.透明正向代理
1.windose客户端
IP配置
(浏览器记得还原)
2.linux代理服务器
1.配置squid
vim /etc/squid/squid.conf(添加 transparent) (squid -k parse 判断配置文件正确性)
http_port 3128 transparent
systemctl restart squid 重启squid
2.防火墙配置(80端口要开启)
firewall-cmd --permanent --add-masquerade 允许伪装
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.10.0/24 masquerade'
firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=3128:toaddr=192.168.1.168 端口转发,使用squid服务
firewall-cmd --reload
(经测试,windose访问出现问题,可ping通192.168.10.66无法ping通192.168.1.168 后令开启一台虚拟机,环境设置同windose,访问成功 。。 (建议直接用俩个台linux虚拟机测试))
3.反向代理(取消正向代理的转发策略,并记得关闭http服务)
1.vim /etc/squid/squid.conf
(106.184.1.125 为要访问网站 )
2.客户端
用户要访问106.184.1.125 直接访问192.168.10.66就行。
4.ACl访问限制
定义语法:
acl aclname acltype string
acl aclname acltype "file"
具体定义:
来源地址
acl aclname src ip-address/netmask
acl aclname src addr1-addr2/netmask
目标地址
acl aclname dst ip-address/netmask
访问端口指定
acl aclname port 80 1024
acl aclname port 80-1024
访问网站关键字限制
acl aclname url_regex [-i] patter
定义代理服务协议
acl aclname proto HTTP FTP
指定请求方法
acl aclname method DET POST
acl匹配规则自上而下
eg1:(限制squid访问ip仅为192.168.1.188)
acl client src 192.168.1.188
http_access allow client
http_access deny all
eg2:(禁止访问带"linux"关键词网站)
acl deny_keyword url_regex -i linux
http_access deny deny_keyword
eg3:(禁止访问百度)
acl deny_url url_regex http://www.baidu.com
http_access deny deny_url
eg4:(禁止代理服务器下载mp3与rarh后缀文件)
acl deny_file urlpath_regex -i \.mp3$ \.rar$
http_access deny deny_file