squid反向代理配置(一学就会的Squid三种代理模式)

Squid服务器简介

Squid服务器是基于Linux平台的代理服务器,简单易学,且服务器运行稳定高效,是一款优秀的开源软件。本文深入浅出,介绍Squid的三种工作模式,带大家一起感受下Squid的魅力。重点讲解Squid的三种工作方式:正向代理、透明代理、反向代理,以及它们之间的区别。本文没有涉及到繁杂的Squid访问控制列表,适合新手学习,以后有机会再给大家介绍Squid的高级应用,这篇文章权当抛砖引玉吧!

名词解释
  • 正向代理:客户端主机本身不能上网,通过Squid服务器,可以实现上网,这是Squid服务器最基本的代理方式。客户端在上网时,需要修改浏览器的属性,在“代理服务器”处填写Squid服务器的IP地址和服务端口(默认3128),就可以了
  • 透明代理:同样,客户都安本身也不能上网,也是通过Squid服务器代理上网,但和正向代理的区别是,客户端不需要额外设置,不需要修改浏览器属性,只要指定Squid服务器为“网关”就可以了,用户在上网过程中感觉不到通过Squid服务器的存在,“透明”一词形象的表述了这种代理方式。如果你有路由交换的知识,那更好理解了,Squid相当于一台网关路由器。
  • 反向代理:该代理方式和前面种方式有区别,强调的是外网访问内网,该方式描述了局域网内部有一台服务器(例如web服务器),且不具备上网能力,通过Squid反向代理,外网用户就把Squid服务器当作要访问的内网服务器,通过访问Squid,可以访问到局域网内部的指定服务器。
实验环境(正向代理和透明代理,这两种方式强调内网访问外网,所以实验环境相同)
  • Windows2008:网站(IIS-web)、60.60.60.60
  • CentOS7:代理服务器(squid)、192.168.0.1(内网接口)、60.0.0.1(外网接口)
  • Windows7:客户端、192.168.0.200

squid反向代理配置(一学就会的Squid三种代理模式)(1)

图1 Squid正向代理和透明代理

图1描述了网络拓扑图,可以看到内网主机需要通过代理服务器才能访问外网,正向代理和透明代理实验环境相同,都用这张图。

正向代理配置过程

squid反向代理配置(一学就会的Squid三种代理模式)(2)

图2 Squid服务器IP地址配置情况

图2描述了Squid服务器的IP地址,需要在该主机上添加双网卡,并设置相应IP,其中192.168.0.1作为内网地址,连接内网客户端,60.0.0.1作为外网地址,连接外网服务器。

安装squid指令:yum -y install squid

squid反向代理配置(一学就会的Squid三种代理模式)(3)

图3 squid.conf文件

图3描述了Squid服务器的主配置文件,/etc/squid/squid.conf,这里我只修改了一个地方,http_access deny all改为http_access allow all,基于安全原因,Squid代理服务器默认不代理任何客户端,通过以上语句的修改,Squid可以代理所有客户端。

squid反向代理配置(一学就会的Squid三种代理模式)(4)

图4 客户端IP地址配置

图4描述了windows7客户端的IP设置情况,注意,windows7本身是不具备上网权限的,我们如何在模拟环境下实现?只需要设置一个IP,并且不加网关就可以了!这里的理解很关键,不添加网关,表明该客户端是无法访问其它网段的,在实际环境中,就表示不能上网,我们只需要保证它有一个IP,并且能够访问到Squid服务器的内网端口就可以了,该主机上网的方式是通过代理服务器实现的。

squid反向代理配置(一学就会的Squid三种代理模式)(5)

图5 配置客户端浏览器属性

图5描述了客户端浏览器的配置过程,本案例以IE浏览器为例,指定代理服务器的内网地址(注意必须是内网地址,因为只有这个地址才能被客户端访问到),以及端口(Squid默认的伺服端口是tcp3128)。

squid反向代理配置(一学就会的Squid三种代理模式)(6)

图6 访问效果图

透明代理配置过程

squid反向代理配置(一学就会的Squid三种代理模式)(7)

图7 squid.conf

图7中,修改http_port 3128,在后面添加“transparent”,开启Squid的透明代理模式

squid反向代理配置(一学就会的Squid三种代理模式)(8)

图8 ipables链配置

图8描述了iptables链的配置,这个是透明模式最重要的步骤,配置中,我清空了所有iptables链,添加了一条nat链,将局域网客户端请求80端口的数据包重新定向到3128端口,ens33是内网接口,这个口会接收到内网用户的上网请求(这里我默认上网行为就是访问网站,所以所有的行为目的端口默认定义为tcp80端口);ens36是外网接口,将所有来自局域网内部的数据包(源地址为192.168.0.0/24网段),向外网发送,并隐藏源ip地址(这里可以理解为内网地址是不能上网的,因为是私有地址,所以在出口处,需要把内网地址隐藏,并替换为公网IP)。

squid反向代理配置(一学就会的Squid三种代理模式)(9)

图9 客户端IP地址配置

图9是客户端的地址信息,注意和正向代理的区别,这里需要添加网关!表示当客户端需要上网时,数据包先发给网关,网关就是Squid服务器的内网接口IP,由Squid服务器处理上网请求。

squid反向代理配置(一学就会的Squid三种代理模式)(10)

图10 访问效果图

反向代理配置过程

实验环境

  • Windows2008:内网网站(IIS-web)、172.20.60.23
  • CentOS7:代理服务器(squid)、172.20.60.24(内网接口)、172.20.30.24(外网接口);DNS服务器(bind)
  • Windows7:外网客户端、172.20.30.23

squid反向代理配置(一学就会的Squid三种代理模式)(11)

图11 Squid反向代理

图11描述了Squid服务器反向代理的过程,外网用户直接访问Squid服务器,由Squid服务器代理,最终访问到web服务器。

squid反向代理配置(一学就会的Squid三种代理模式)(12)

图12 squid.conf

图12 squid.conf中描述了反向代理配置,其中cache_peer参数指定了内网服务器的IP(172.16.20.23)和访问名(name=nvsc);cache_peer_domain指定了访问该内网服务器的域名(www.nvsc.com),这里客户端是通过域名访问的,所以我还额外配置了DNS服务器。

squid反向代理配置(一学就会的Squid三种代理模式)(13)

图13 named.conf

squid反向代理配置(一学就会的Squid三种代理模式)(14)

图14 named.rfc

squid反向代理配置(一学就会的Squid三种代理模式)(15)

图15 正向文件和反向文件

图13、图14、图15描述了DNS服务器的配置过程,用的是CentOS下的Bind软件,强调客户端通过www.nvsc.com,可以访问到Squid服务器的公网ip:172.20.30.23,限于篇幅,Bind的设置不详细说明了。

squid反向代理配置(一学就会的Squid三种代理模式)(16)

图16 重启squid服务

squid反向代理配置(一学就会的Squid三种代理模式)(17)

图17 重启named服务

图16、图17描述了在配置完squid和bind之后,将两个服务重启,使其生效,状态都显示active(running)表示配置成功。

squid反向代理配置(一学就会的Squid三种代理模式)(18)

图18 内网web服务器地址

图18描述内网web服务器的地址,web服务器的搭建过程略

squid反向代理配置(一学就会的Squid三种代理模式)(19)

图19 外网客户端地址

图19描述外网客户端的IP地址,注意这里添加了DNS(该地址是Squid服务器的公网接口IP,模拟环境中,我把DNS和Squid做在同一台主机上了),需要通过域名访问服务器。

squid反向代理配置(一学就会的Squid三种代理模式)(20)

图20 访问效果图

图20描述外网用户通过域名访问Squid代理服务器,Squid代理服务器通过反向代理功能,使外网客户端成功访问到内网的web服务器。

总结

本案例中,将Squid三种常见的代理方式做了一一罗列,帮助初学者快速掌握Squid代理服务器的搭建,关于Squid其它部分的知识点,比如访问控制列表的使用,缓存的设置,绑定证书,将在后续文章中再给大家做详细介绍。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页