服务器的工作流程 

第一步。客户端想服务器发送的请求到达代理服务器

第二步。代理服务器把请求转发给客户端真正需要连系的服务器。

第三步。服务器想代理服务器返回请求。

第四步。代理服务器把响应返回给客户端。

实例应用一

正向代理实现

squid代理服务器的安装于访问控制(默认端口3128

实例环境:vmware联网模式均为桥接切能够相互通信。

a.代理服务器redhat5.4 ip192.168.1.27 b.客户机xp ip192.168.1.29

拓扑图如下:

1.[root@localhost ~]# mount /dev/cdrom /mnt/cdrom

2.[root@localhost Server]# rpm -ivh squid-2.6.STABLE21-3.el5.i386.rpm

3.[root@localhost Server]# vim /etc/squid/squid.conf

http_accessdeny all修改为http_access allow all                                            

4.[root@localhost Server]# service squid start

5.基于单个ip地址或者ip地址段通过匹配源ip地址限制访问

acl badip src 192.168.1.28/32

acl badips src 192.168.1.30-192.168.1.40/32来源控制单个ip32掩码

#如果是网段的话格式是: 192.168.1.0/24 掩码是24

http_access deny badip

http access denybadips

检测语法 squid –k parse

service squid restart

客户机配置及验证:

使用浏览器访问如下

可以看到访问被拒绝了

把客户机的ip改为 192.168.1.30-40/24 的网段也是如此

改为192.168.1.29可以看到能够正常访问

查看日志:

[root@localhost ~]# tail -f /var/log/squid/access.log

6.通过匹配目的ip地址的限制访问                                       

验证如下:            

日志如下:

7.基于服务器所属的域,与客户请求url匹配

验证如下;

查看日志如下:                                                                                                      

8.基于时间段来控制上网时间

worktime time MTWHF 08:00-18:00

http_access deny worktime                                                                             

修改服务器时间可以实现访问

date 120318092012月日小时分年

9.基于网址来实现过滤

acl aclname url_regex [-i] ^http://………-I 忽略大小写关键字

aclbadurl url_regex –i sina

http_access deny badurl

重新启动                                                              

10.基于内容:

基于内容例如:不显示图片

http_access deny badcontnet                                                                                

验证如下:                                        

可以看到所有的图片都显示不出来了。呵呵,本实例结束。

应用实例二透明代理

透明代理服务器一般为内网的计算机提供外网的访问服务不需要客户端做任何测试,当客户端的数据包到达出口路由器时,可以被路由器重定向到本地代理服务器的代理商端口,然后由本地代理服务器对数据进行处理

网络环境如下:

1.redhat 代理服务器eth0 bridged模式 ip地址为192.168.1.27作为外网接口(保证这个接口能够连接到外网)

eth1host-only模式ip地址为192.168.2.27作为内网接口

2.xp作为内部网络测试机ip192.168.2.28 host-only模式上网。

拓扑图如下:

具体步骤如下

3.使squid支持数据包转发

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

执行sysctl -p 使设置生效

4.实现dns解析通过

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -p udp --dport 53 -j SNAT --to 192.168.1.27

5.编辑/etc/squid/squid.conf

http_port 192.168.2.27:3128 transparent 

http_access allow all

6.路由前对端口的重定向

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128

7.查看

8.启动squid服务后,正确测试

应用实例三。反向代理

反向代理服务器又称为 WEB 加速服务器,它位于 WEB 服务器的前端,充当WEB 服务器的内容缓存器。

实验环境;

a.redhat 代理服务器eth0 bridged模式 ip地址为192.168.1.27作为外网接口(保证这个接口能够与外网pc机相互通讯)

eth1host-only模式ip地址为192.168.2.27作为内网接口

b.web服务器ip192.168.2.28 host-only模式上网。

实验最终目的:外网测试机通过访问代理服务器的外网端口即(192.168.1.27)来访问内部的web站点(192.168.2.27

具体步骤:

1.配置web站点如下

2.修改/etc/squid/squid.conf文档,添加修改如下内容;

http_port 192.168.1.27:80 vhost 

cache_peer 192.168.2.28 parent 80 0 originserver

http_access allow all 

3.外网客户机机测试(192.168.1.28) 

哈哈,可以看到通过访问代理的外网端口就可以访问内网的web站点了,本实验结束。