squid代理服务器

来源:互联网 发布:mac怎样下载bilibili 编辑:程序博客网 时间:2024/04/28 01:01

定义: 

代理服务器,简单的说就是代替客户向源站获取数据,缓存一份,然后再返还给客户(这里不包括反向代理)。


优点:

1.突破自身IP访问限制,访问国外站点。教育网、过去的169网等网络用户可以通过代理访问国外网站。

2.访问一些单位或团体内部资源,如某大学FTP(前提是该代理地址在该资源 的允许访问范围之内),使用教育网内地址段免费代理服务器,就可以用于对教育网开放的各类FTP下载上传,以及各类资料查询共享等服务。

3.突破中国电信的IP封锁:中国电信用户有很多网站是被限制访问的,这种限制是人为的,不同Serve对地址的封锁是不同的。所以不能访问时可以换一个国外的代理服务器试试。

4.提高访问速度:通常代理服务器都设置一个较大的硬盘缓冲区,当有外界的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时, 则直接由缓冲区中取出信息,传给用户,以提高访问速度。

5.隐藏真实IP:上网者也可以通过这种方法隐藏自己的IP,免受攻击。  

 

原理图:

 

代理服务器的类型:

1.正向代理:一个标准的代理缓冲服务被用于缓存静态的网页(例如:html文件和图片文件等)到本地网络上的一台主机上(即代理服务器)。当被缓存的页面被第二次访问的时候,浏览器将直接从本地代理服务器那里获取请求数据而不再向原web站点请求数据。这样就节省了宝贵的网络带宽,而且提高了访问速度。但是,要想实现这种方式,必须在每一个内部主机的浏览器上明确指明代理服务器的IP地址和端口号。客户端上网时,每次都把请求送给代理服务器处理,代理服务器根据请求确定是否连接到远程web服务器获取数据。如果在本地缓冲区有目标文件,则直接将文件传给用户即可。如果没有的话则先取回文件,先在本地保存一份缓冲,然后将文件发给客户端浏览器。

2.透明代理:透明代理缓冲服务和标准代理服务器的功能完全相同。但是,代理操作对客户端的浏览器是透明的(即不需指明代理服务器的IP和端口)。透明代理服务器阻断网络通信,并且过滤出访问外部的HTTP(80端口)流量。如果客户端的请求在本地有缓冲则将缓冲的数据直接发给用户,如果在本地没有缓冲则向远程web服务器发出请求,其余操作和标准的代理服务器完全相同。对于Linux操作系统来说,透明代理使用Iptables或者Ipchains实现。因为不需要对浏览器作任何设置,所以,透明代理对于ISP(Internet服务器提供商)特别有用。

3.反向代理:反向代理是和前两种代理完全不同的一种代理服务。使用它可以降低原始WEB服务器的负载。反向代理服务器承担了对原始WEB服务器的静态页面的请求,防止原始服务器过载。它位于本地WEB服务器和Internet之间,处理所有对WEB服务器的请求,组织了WEB服务器和Internet的直接通信。如果互联网用户请求的页面在代理服务器上有缓冲的话,代理服务器直接将缓冲内容发送给用户。如果没有缓冲则先向WEB服务器发出请求,取回数据,本地缓存后再发送给用户。这种方式通过降低了向WEB服务器的请求数从而降低了WEB服务器的负载。

 

三种类型代理服务器的配置方法:

1.正向代理:服务器只需要安装并启动squid服务,客户浏览器设置代理ip和端口,客户端不需要配置dns,需要配置默认路由。

2.透明代理:

 

a) 客户机配置好DNS服务器地址,网关以及去网关的路由即可。

dns 8.8.8.8

route add default gw 10.1.1.2

b) 网关能够连接外网,解析域名。配置防火墙策略,将源地址为10.1.1.0/24转化为网关eth1的地址,将所有目标地址转化为squid代理eth1的地址。

route add default gw 192.168.1.1

iptables -t nat -A POSTROUTING -s 10.1.1.0/24 -j SNAT --to-source 192.168.1.67

iptables -t nat -A PREROUTING -i eth0 -d 0.0.0.0/0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.61

c) 安装squid,在配置文件/etc/squid/squid.conf指定端口的语句后面加transparent 支持透明代理,启动squid。配置防火墙,将所有目标端口为80的重定向到3128端口。

iptables -t nat -A PREROUTING -s 192.168.1.0/24 -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128

 

3.反向代理:

下面截取一张反向代理的配置图

 

squid.conf配置文件:

 

#定义服务器地址和端口(做Proxy时最好用lan的ip来设定绑定端口,transparent表示支持透明代理)

http_port 192.168.1.253:3128 transparent

                                               

#定义服务器的名字

visible_hostname squid-proxy-server

 

#定义管理员邮件地址(在访问发生错误时,visible_hostname和cache_mgr这两个选项的值显示在错误提示页面内的相关位置)

cache_mgr lsp@163.com

 

#定义缓存内存空间

cache_mem 32 MB                                               

cache_swap_low 90                                            

cache_swap_high 95

 

#定义缓冲最大值的内容

maximum_object_size 4096 KB

#定义缓存目录

cache_dir ufs /var/spool/squid 100 16 256

 

#定义不缓的内容

hierarchy_stoplist cgi-bin ?

hierarchy_stoplist -i ^https:\\ ?

acl QUERY urlpath_regex -i cgi-bin \? \.asp \.php \.jsp \.cgi

acl denyssl urlpath_regex -i ^https:\\

no_cache deny QUERY

no_cache deny denyssl

 

ipcache_size 1024

ipcache_low 90

ipcache_high 95

fqdncache_size 1024

 

 

#日志

access_log /var/log/squid/access.log squid

cache_log /var/log/squid/cache.log

#cache_store_log /usr/local/squid/var/logs/store.log

cache_store_log none

 

#缓存取用户和组

cache_effective_user squid squid

 

#定义ACL

 

#sexurl.txt列出要过滤网站地址的关键字,每个关键字占一行,如www.sina.com(取sina)即可

#maclist.txt列出允许上网的主机的MAC地址,每个地址占一行,如00:50:56:C0:00:08

 

acl all src all                           #定义所有的地址

acl allow_lan src 192.168.1.0/24                        #允许局域网lan访问的acl

acl sexurl url_regex "/tmp/forbidurl.txt"      #定义过滤url

#acl allowedmac arp "/etc/squid/maclist.txt"

 

 

#定义访问策略

http_access deny virurl                                 #拒绝文件内的url

http_access allow allow_lan                             #允许局域网ip访问

http_access deny all                                    #拒绝其它未定义的规则

 

#http_access allow allowedmac        

 

 

 

0 0
原创粉丝点击