Squid代理服务器
创新互联专注于海拉尔网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供海拉尔营销型网站建设,海拉尔网站制作、海拉尔网页设计、海拉尔网站官网定制、微信小程序定制开发服务,打造海拉尔网络公司原创品牌,更为您提供海拉尔网站排名全网营销落地服务。
Squid代理服务器工作在应用层,主要提供缓存加速,应用层过滤控制等功能。
Squid代理的工作机制:
当客户机通过代理来请求web页面时,指定的代理服务器会先检查自己的缓存,如果缓存中有数据则直接反馈给客户机,如果没有则由代理服务器向internet发送访问请求,然后返回web页面时,先缓存起来,然后反馈给客户机。
Squid代理的基本类型:
传统代理:普通的代理方式,客户机需手动指定代理地址和工作端口
透明代理:客户机不需要指定代理地址和工作端口,而是通过默认路由,防火墙策略将web访问重定向交给代理服务器处理
搭建squid代理服务器:
v 编译安装squid
# tar xzvf squid-3.4.6.tar.gz
# cd squid-3.4.6
#./configure --prefix=/usr/local/squid --sysconfdir=/usr/local/squid/etc --enable-arp-acl --enable-linux-netfilter --enable-linux-tproxy --enable-async-io=100 --enable-err-language="Simplify_Chinese" --enable-underscore --enable-poll --enable-gnregex
注释:
--prefix:指定安装路径
--sysconfdir:指定配置文件路径
--enable-arp-acl :可以在规则中设置直接通过客户端MAC进行管理,防止客户端使用IP欺骗
--enable-linux-netfilter:可以使用iptables的内核过滤
--enable-linux-tproxy:支持透明模式
--enable-async-io:异步I/O,提升存储性能,指定缓存空间大小
--enable-err-language:错误信息显示的语言
--enable-underscore:允许URL中有下划线
--enable-poll:使用Poll模式,提升性能
--enable-gnregex:使用GNU正则表达式
#make && make install
v 创建命令链接文件,使命令方便调用
#ln -s /usr/local/squid/sbin/* /usr/local/sbin/
v 创建用户和组,授予安装目录相关权限
#useradd -M -s /sbin/nologin squid
#chown -R squid.squid /usr/local/squid/var
#vim /usr/local/squid/etc/squid.conf
visible_hostname ren
coredump_dir /usr/local/squid/var/cache/squid
cache_dir cache_effective_user squid
cache_effective_group squid ufs /usr/local/squid/var/cache/squid 100 16 256
cache_effective_user squid
cache_effective_group squid
Cache mem 512MB
http_port 1.1.1.0/24:3128 transparent
注释:
visible_hostname:给一个主机名
coredump_dir:表示缓存的文件位置
cache_effective_group squid ufs:指定缓存文件的大小
cache_effective_user :指定运行squid程序缓存的用户
cache_effective_group squid:指定运行squid程序缓存的组
Cache mem :在物理内存中可用的值
http_port 1.1.1.0/24:3128 transparent :设置该网段让其支持透明代理
v 初始化squid代理
#squid -k parse
# squid -z
v 启动squid代理
#squid
代理实现方式:
传统代理:在客户机的浏览器中输入要代理的地址端口
透明代理:修改配置文件让其支持透明代理,然后通过iptables防火墙将规则重定向到代理服务器中即可,动作:REDIRECT
例:#iptables -t nat -A PREROUTING -i eth2 -s 1.1.1.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
#iptables -t nat -A PREROUTING -i eth2 -s 1.1.1.0/24 -p tcp --dport 443 -j REDIRECT --to 3128
#unset HTTP_PROXY HTTPS_PROXY
ACL访问控制
我们可以通过squid定义自己的访问控制列表,格式:acl列表名称 列表类型 列表内容
常用的访问控制列表里类型
列表类型 | 列表内容 | 含义 |
Src | 192.168.1.1 192.168.1.0/24 192.168.1.1-192.168.1.10 | 基于源IP地址,网段,IP地址范围过滤 |
Dst | 1.1.1.1 1.1.1.0/24 www.a.com | 基于目标IP地址,网段,主机名过滤 |
Port | 80 443 8080 21 20 | 基于目标端口过滤 |
Dstdomain | .qq.com | 基于目标域过滤 |
Time | MTWHF 8:30-17:30 | 基于星期,M表示星期一,T表示星期二,W表示星期三,H表示星期四,F表示星期五 |
Maxconm | 20 | 每个客户机的并发连接数 |
Url_regex | Url_regex -i ^a:// | 目标资源的URL地址,-i表示忽略大小写 |
Urlpath_regex | Urlpath_regex -i \.mp3$ | 目标资源的整个URL路径,-i表示忽略大小写 |
例:#vim /etc/squid.conf
Acl xiao url_regex -i ^http://
http_access deny MYLAN xiao表示只要是http://开头的URL都拒绝访问