首页 > 其他 > 详细

Squid三种代理及配置

时间:2015-06-05 22:51:26      阅读:313      评论:0      收藏:0      [点我收藏+]

1Squid是什么?
   Squid是一种用来缓冲Internet数据的软件。它是这样实现其功能的,接受来自人们需要
下载的目标( object)的请求并适当地处理这些请求。也就是说,如果一个人想下载一web
页面,他请求Squid为他取得这个页面。 Squid随之连接到远程服务器(比如: http//
squid.nlanr.net/)并向这个页面发出请求。然后, Squid显式地聚集数据到客户端机器,而且
同时复制一份。当下一次有人需要同一页面时, Squid可以简单地从磁盘中读到它,那样数
据迅即就会传输到客户机上。当前的Squid可以处理HTTPFTPGOPHERSSLWAIS等协
议。但它不能处理如POPNNTPRealAudio以及其它类型的东西。
2.squid代理的作用:
通过缓存方式为用户提供web访问加速
对用户的web访问进行过滤控制
3. 接下来我们主要探讨的是squid各种代理的定义
正向代理
a.  标准的代理缓冲服务器
  一个标准的代理缓冲服务被用于缓存静态的网页(例如: html文件和图片文件等)到本
地网络上的一台主机上(即代理服务器)。当被缓存的页面被第二次访问的时候,浏览器
将直接从本地代理服务器那里获取请求数据而不再向原web站点请求数据。这样就节省了宝
贵的网络带宽,而且提高了访问速度。但是,要想实现这种方式,必须在每一个内部主机
的浏览器上明确指明代理服务器的IP地址和端口号。客户端上网时,每次都把请求送给代理
服务器处理,代理服务器根据请求确定是否连接到远程web服务器获取数据。如果在本地缓
冲区有目标文件,则直接将文件传给用户即可。如果没有的话则先取回文件,先在本地保
存一份缓冲,然后将文件发给客户端浏览器。
b.  透明代理缓冲服务器
  透明代理缓冲服务和标准代理服务器的功能完全相同。但是,代理操作对客户端的浏览
器是透明的(即不需指明代理服务器的IP和端口)。透明代理服务器阻断网络通信,并且过
滤出访问外部的HTTP80端口)流量。如果客户端的请求在本地有缓冲则将缓冲的数据直
接发给用户,如果在本地没有缓冲则向远程web服务器发出请求,其余操作和标准的代理服
务器完全相同。对于Linux操作系统来说,透明代理使用 Iptables或者Ipchains实现。因为不需
要对浏览器作任何设置,所以,透明代理对于ISPInternet服务器提供商)特别有用。
反向代理:
a. 反向代理缓冲服务器
  反向代理是和前两种代理完全不同的一种代理服务。使用它可以降低原始WEB服务器的
负载。反向代理服务器承担了对原始WEB服务器的静态页面的请求,防止原始服务器过载。
它位于本地WEB服务器和Internet之间,处理所有对WEB服务器的请求,组织了 WEB服务器
Internet的直接通信。如果互联网用户请求的页面在代理服务器上有缓冲的话,代理服务
器直接将缓冲内容发送给用户。如果没有缓冲则先向 WEB服务器发出请求,取回数据,本地
缓存后再发送给用户。这种方式通过降低了向 WEB服务器的请求数从而降低了 WEB服务器的
负载。
4.  Squid 主要组成部分
服务名: squid
主程序: /usr/sbin/squid
配置目录: /etc/squid
主配文件: /etc/squid/squid.conf
监听tcp端口号: 3128
默认访问日志文件: /var/log/squid/access.log
5.squid 常用配置选项(/etc/squid/squid.conf)
http_port 3128 (还可以只监听一个一个ip http_port 192.168.0.1:3128)
cache_mem 64MB#缓存占内存大小
2/6
maximum_object_size 4096KB#最大缓存块
reply_body_max_size 1024000 allow all #限定下载文件大小
access_log /var/log/squid/access.log #访问日志存放的文件
visible_hostname proxy.test.xom #可见的主机名
cache_dir ufs /var/spool/squid 100 16 256
usf:缓存数据的存储格式
/var/spool/squid 缓存目录
100 : 缓存目录占磁盘空间大小( M
16 :缓存空间一级子目录个数
256 :缓存空间二级子目录个数
cache_mgr webmaster@test.com #定义管理员邮箱
http_access deny all #访问控制
6. 好了介绍了那么多下面我们来对squid几种代理进行简单配置:
标准的代理缓冲服务器的配置:
a.squid服务器上的配置
准备环境:软件包: squid(任意版本)
双网卡: eth0:192.168.1.1 eth1:10.106.34.12
如图:
vim /etc/squid/squid.conf
http_port 3128
access_log /var/log/squid/access.log
http_access allow all
b.一切配置以后:
squid z 初始化缓存
squid k parse 检查语法
service squid start 启动squid
chkconfig squid on 加入开机启动
netstat nltp 查看3128端口是否打开
c.客服端的配置:
ip : 192.168.1.12 gw:192.168.1.1
然后打开浏览器工具选项连接局域网设置代理服务器
地址: 192.168.1.1 端口: 3128
一切搞定之后在浏览器输入http//www.google.cn即可访问,上网了 easy吧!
透明代理缓冲服务器的配置:
a. aquid服务器上的配置与标准的代理缓冲服务器几乎一样
差别就是: http_port 192.168.1.12:3128 transparent
b.添加iptables规则:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 3128
iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -I PREROUTING -d 172.16.110.23 -p tcp --dport 88 -j REDIRECT --to-ports
80
squid k parse
service squid reload
c.客服端不需要在浏览器中指定代理服务器的地址,端口
但需设置上网的DNS
好了经过上三个步骤你就可以上网了
访问控制
应用访问控制的方式
3/6
定义acl列表
acl 列表名称 列表类型 列表内容
针对acl列表进行限制
http_access allowdeny 列表名
拒绝某个ip地址
acl dy_ip src 192.168.1.103/32
http_access deny dy_ip
拒绝某个网段
acl dy_ip src 192.168.1.0/24
acl dy_ip src 192.168.1.0/24 192.168.10.0/24
acl dy_ip src 192.168.1.0-192.168.10.0/24
http_access deny dy_ip
通过文件拒绝某个ip的访问
acl guests src /etc/squid/guest
http_access deny guests
/etc/squid/guests内容
192.168.1.131
拒绝端口号
acl d_p port 80
acl d_p port 1-1024
http_access deny d_p
允许域名为 uplooking.com域访问本地代理服务器
acl permitted_domain src uplooking.com
http_access allow permitted_domain
拒绝访问域
acl B dstdomain www.squid-cache.org
http_access deny B
服务
acl FTP proto FTP
http_access deny FTP
time
CodeDay
4/6
SSunday
MMonday
TTuesday
WWednesday
HThursday
FFriday
ASaturday
DAll weekdays (M-F)
时间跨越子夜,你需要把它们分成两个ACL来写,或者使用否定机制来定义非忙时。例如:
acl Offpeak1 20:00-23:59
acl Offpeak2 00:00-04:00
http_access allow Offpeak1 ...
http_access allow Offpeak2 ...
另外,你可以这样写:
acl Peak 04:00-20:00
http_access allow !Peak ...
不应该在同一个time ACL里放置多个日期和时间范围列表。例如,假如你输入:
acl Blah time M 08:00-10:00 W 09:00-11:00,实际能做到的是: acl Blah time MW 09:00-11:00,
解析仅仅使用最后一个时间范围。正确的写法是,将它们写进两行:
acl Blah time M 08:00-10:00
acl Blah time W 09:00-11:00
控制访问包含sexy字段的网址
acl deny_url url_regex -i sexy
http_access deny deny_url
拒绝某些字段结尾的网址
acl RealFile urlpath_regex -i \.rmvb$ \.rm$
http_access deny RealFile
解释一下含义
acl kaixin_net dstdomain .kaixin.com
acl adv_net src 192.168.0.2-192.168.0.20/255.255.255.255
acl mynetwork src 192.168.0.0/24
acl kaixin_time time MTWHF 7:00-9:30
acl all src 0.0.0.0/0.0.0.0
http_access allow adv_net kaixin_time kaixin_net
http_access deny mynetwork kaixin_time kaixin_net
http_access allow all
练习
允许网段10.0.0.124/24以及192.168.10.15/24内的所有客户机访问代理服务器,并且允许在
文件/etc/squid/guest列出的客户机访问代理服务器,除此之外的客户机将拒绝访问本地代理
服务器:
Acl sip src 10.0.0.0/24 192.168.10.0/24
5/6
Acl sip2 src /etc/squid/guest
Http_access allow sip
Http_access allow sip2
Http_access deny all
允许域名为 job.netgdfq.edu.cn的两个域访问本地代理服务器,其他的域都将拒绝访问本地
代理服务器:
拒绝客户机通过代理服务器访问文件中指定IP或者域名的网站,其中文件/etc/squid/ deny_ip
中存放有拒绝访问的IP地址,文件/etc/squid/deny_dns中存放有拒绝访问的域名:
Acl dip dst /etc/squid/deny_ip
Acl ddomain dstdomain /etc/squid/deny_dns
Http_access deny dip
Http_access deny ddomain
允许所有的用户在规定的时间内 (周一至周四的8302030)访问代理服务器,只允许特
定的用户 (系统管理员,其网段为: 192.168.10.0/24)在周五下午访问代理服务器,其他的在
周五下午一点至六点一律拒绝访问代理服务器:
Acl allip src 0.0.0.0/0.0.0.0
Acl times time MTWH 8:30-20:30
Acl adv_net src 192.168.10.0/24
Acl time2 time F 13:00-18:00
Http_access allow allip times
Http_access allow adv_net time2
Http_access deny allip time2
向代理缓冲服务器配置
注意:反向代理和透明代理不能同时使用
步骤:
a. Squid服务器的设置,修改/etc/squid/squid.conf
同样反向代理aquid服务器上的配置与标准的代理缓冲服务器几乎一样
不同之处: http_port 10.106.34.1280 vhost
Cache_peer 192.168.1.12 parent 80 0 originserver weight=5 max-conn=30
上一行的解释:定义web服务器 web服务器地址 服务器类型 http端口  icp端口  [可选项]
squid k parse
service squid reload
b. 客服端的设置(注意:这时的客服端就是web服务器)
开启 web服务
好了通过以上配置外网即可访问你的web服务器了
一对一反向代理
Internet client ----------------- squid server ------------------ internal static web server
1.1.1.2 1.1.1.1 192.168.0.254 192.168.0.2
1. squid 打开转发功能
2. squid要监听80端口
3. squid http_access allow all
6/6
配置过程
Http_port 80
cache_peer 192.168.1.105 parent 8888 0 originserver
cache_peer Web服务器地址 服务器类型 http端口  icp端口  [可选项]
cache_peer 指定真正WEB服务器的位置
parent 服务器类型对应到目标主机的缓存级别,上游Web主机一般使用 parent(父服务
器)
icp端口用于连接相邻的ICPInternet Cache Protocol)缓存服务器(通常为另一台Squid
机),如果没有,则使用 0
originserver 表示该服务器作为提供Web服务的原始主机,
weight=n指定服务器的优先权重, n为整数,数字越大优先级越高(缺省为 1);
max-conn=n指定反向代理主机到该web服务器的最大连接数。
第二种SQUID 反向代理,一对多WEB SERVER做负载均衡
192.168.0.2
/
Client ---squid server-----| ------ | -  192.168.0.3
1.1.1.1 \
192.168.0.4
Squid server的两个IP1.1.1.1 192.168.0.254

Squid三种代理及配置

原文:http://duyue9522.blog.51cto.com/2825745/1659004

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!