Squid加速原理
Squid是一个缓存internet数据的一个软件,它接收用户的下载申请,并自动处理所下载的数据。也就是说,当一个用户想要下载一个主页时,它向Squid发出一个申请,要Squid替它下载,然后Squid 连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid把保存的备份立即传给用户,使用户觉得速度相当快。
设置网卡
eth0(内网)
192.168.0.1/255.255.255.0
eth1(外网)
10.10.10.1(可自动获取)/25.525.255.0
安装squid
yum install squid
配置squid文档
vim /etc/squid/squid.conf
http_port 3128
cache_mem 64MB
maximum_object_size 4096KB
reply_body_max_size1024000 allow all
access_log /var/log/squid/access.log
visible_hostnameproxy.test.xom(可以不配置)
cache_effective_usersquid //设置缓存的有效用户
cache_effective_groupsquid //设置缓存的有效用户组
dns_nameservers192.168.0.254 //设置DNS服务器地址,一般可以不设置,默认使用服务器自己设置的dns
cache_mgr [url=mailto:[email protected]][email protected][/url]
http_access allow all
初始化目录
suqid -z
检查配置文档
squid -k parse
启动squid
service squid start
检查代理端口是否打开
netstat -nlp
如果打开了就会看到有3128
打开防火墙的3128端口
iptables -A INPUT -s 0/0 -p tcp --dprot 3128 -j ACCEPT
(或者直接关闭防火墙service iptables stop)
查看你的日志文档
#more /var/log/squid/access.log| grep TCP_MEM_HIT
该指令可以看到在squid运行过程中,有哪些文件被squid缓存到内存中,并返回给访问用户。
#more /var/log/squid/access.log| grep TCP_HIT
该指令可以看到在squid运行过程中,有哪些文件被squid缓存到cache目录中,并返回给访问用户。
#more /var/log/squid/access.log| grep TCP_MISS
该指令可以看到在squid运行过程中,有哪些文件没有被squid缓存,而是现重原始服务器获取并返回给访问用户
squid -k rotate 轮换squid的日志文件
/var/log/squid,Squid代理服务器日志文件
的增长速度是惊人的,很容易点球满磁盘空间导致系统不能正常工作,甚至是死机.为了解决日志文件增长太快的问题,squid采用了"轮换"的方法.在squid.conf中可以通过logfile_rotate来设置文件轮换的个数,如:
logfile_rotate 10 ,轮换的工作一般用crontab定时器完在周期性的日志轮换,例如每周六凌晨2:00进行日志轮换,则执行如下命令:crontab -e
0 2 * * 6 squid -k rotate
小贴士:Squid默认的错误提示信息为英文,对于英文不好的用户来说,实在不方便.在/etc/squid/squid.conf里添加如下:
error_directory /usr/share/squid/errors/zh-cn 即可显示中文的错误提示。
定义用户和网络流量出口
#定义用户组,并指定一个用户文件。
aclusergroup1 proxy_auth "/usr/local/squid/etc/ip1user"
# 后允许这个组的用户可以访问网络
http_access allow usergroup
#分配哪个组的用户走哪个出口ip
tcp_outgoing_address10.10.10.1usergroup
编辑完成后保存退出。
使用访问控制
上面详细讲述了ACL元素以及http_access访问控制列表的语法以及使用过程中需要注意的问题,下面给出使用这些访问控制方法的实例:
(1)允许网段192.168.0.0/24内的所有客户机访问代理服务器,并且允许在文件/etc/squid/guest列出的客户机访问代理服务器,除此之外的客户机将拒绝访问本地代理服务器:
acl clients src192.168.0.0/24
acl guests src “/etc/squid/guest”
acl all src 0.0.0.0/0.0.0.0
http_access allow clients
http_access allow guests
http_access deny all
其中,文件“/etc/squid/guest”中的内容为:
192.168.0.0/24
(2)允许域名为job.net、gdfq.edu.cn的两个域访问本地代理服务器,其他的域都将拒绝访问本地代理服务器:
acl permitted_domain src job.net gdfq.edu.cn
acl all src 0.0.0.0/0.0.0.0
http_access allow permitted_domain
http_access deny all
(3)使用正则表达式,拒绝客户机通过代理服务器访问包含有诸如“sexy”等关键字的网站:
acl deny_url url_regex -i sexy
http_access deny deny_url
(4)拒绝客户机通过代理服务器访问文件中指定IP或者域名的网站,其中文件/etc/squid/ deny_ip中存放有拒绝访问的IP地址,文件/etc/squid/deny_dns中存放有拒绝访问的域名:
acl deny_ip dst “etc/squid/deny_ip”
acl deny_dns dst “etc/squid/deny_dns”
http_access deny deny_ip
http_access deny deny_dns
(5)允许和拒绝指定的用户访问指定的网站,其中,允许客户1访问网站http://www.sina.com.cn,而拒绝客户2访问网站http://www.163.com:
acl client1 src 192.168.0.118
acl client1_url url_regex ^http://www.sina.com.cn
acl client2 src 192.168.0.119
acl client2_url url_regex ^http://www.163.com
http_access allow client1 client1_url
http_access deny client2 client2_url
(6)允许所有的用户在规定的时间内(周一至周四的8:30到20:30)访问代理服务器,只允许特定的用户(系统管理员,其网段为:192.168.0.0/24)在周五下午访问代理服务器,其他的在周五下午一点至六点一律拒绝访问代理服务器:
acl allclient src 0.0.0.0/0.0.0.0
acl administrator 192.168.10.0/24
acl common_time time MTWH 8:30-20:30
acl manage_time time F 13:00-18:00
http_access allow allclient common_time
http_access allow administrator manage_time
http_access deny manage_time
客户端在IE中配置代理测试
深入学习请访问:http://home.arcor.de/pangj/squid/index.html和百度文库
问题点:
登录不了QQ(提前禁用防火墙不会出现该情况)
打开防火墙tcp433、udp8000、tcp4000端口
登录QQ时使用代理的方式登录,如果只有一个浏览器(就是IE),网络设置选择“使用浏览器设置”,如果还有其他浏览器,选择“http代理”,地址是代理服务器的内网地址,端口3128