Squid三种代理模式详解,实验环境搭建详细步骤

百度是这样介绍它的:https://dwz.cn/ZAyBZjZ7

维基百科是这样介绍他它:https://en.wikipedia.org/wiki/SQUID

SQUID的代理模式

SQUID主要应用于
——代理上网(正向代理,透明代理)
——网站静态页面缓存加速(反向代理)

其中正向代理,透明代理,反向代理这三种代理模式也有所不同

首先先说三种代理模式的原理:
普通代理,也叫传统代理,正向代理,他的结构是这样的,客户端必须在自己的浏览器里指定代理服务器的ip地址和代理服务监听的端口号,才能通过SQUID代理服务器上网。

透明代理,本质作用是和普通代理是一样的,但是透明代理,客户端不需要在自己的浏览器里指定代理服务器的ip地址和代理服务监听的端口号,给客户端的感觉自己是直接和公网通信。 但是必须把网关地址指向代理服务器的内网接口ip地址。

反向代理,传统和透明是为客户端服务的,借助squid加快访问web服务的速度,或者是公司内部对员工上网行为做限制使用的,而反向代理模式下的squid的服务对象是web服务器,通过squid来隐藏真实web服务器IP,加快客户的访问速度,还有负载均衡的功能,

实验环境搭建测试

普通代理部署

3台centos 6.8服务器
——1台squid服务器      (eth0:192.168.10.10 eth1:10.10.10.10)
——1台内网客户机        (eth0:192.168.10.20)
——1台公网WEB服务器 (eth0:10.10.10.30)
配置公网web服务器,安装·Apache,并写一个网页测试一下(略...)
配置内网客户机
将默认路由指向squid的内网IP(eth0的IP)

[root@192.168.10.20 ~ ] # router add default gw 192.168.10.10

安装linux图形化和火狐浏览器用户接下来的测试

[root@192.168.10.20 ~ ] # yum groupinstall "X Windows System" "Desktop"
[root@192.168.10.20 ~ ] # yum install firefox

安装、配置ssquid服务器

[root@192.168.10.10 ~ ] # yum install squid

修改squid主配置文件/etc/squid/squid.conf 、在squid监听端口下加入,不写会报错,随意一个地址都可以

visible_hostname www.zheli.ink

编辑内核参数,开启路由转发

[root@192.168.10.10 ~ ] # vim /ext/sysctl.conf
net.ipv4.ip_forward = 1
[root@192.168.10.10 ~ ] # sysctl -p                 #刷新内核参数
[root@192.168.10.10 ~ ] # service squid restart     #重启SQUID

测试结果,客户机切换至图形化然后再用火狐浏览器上添加代理服务器

[root@192.168.10.10 ~ ] # init 5             #切换至图形化

访问web服务器的ip就能看见网页了,值得一提的是squid是具有缓存web服务器静态资源的功能的,因为这里的网站首页本身就是一个html的静态文件,当你第一次访问过后,squid服务器就已经把首页文件缓存到自己的磁盘上了也就是说即使现在把web服务器上的web服务关闭了,网页也可以通过squid的缓存正常访问的!

想在命令行终端使用SQUID需要在/etc/profile/环境变量的文件里添加一个环境变量

export HTTP_PROXY=http://192.168.10.10:3128

透明代理部署

3台centos 6.8服务器
——1台squid服务器      (eth0:192.168.10.10 eth1:10.10.10.10)
——1台内网客户机        (eth0:192.168.10.20)
——1台公网WEB服务器 (eth0:10.10.10.30)
配置公网web服务器,安装·Apache,并写一个网页测试一下(略...)
配置内网客户机

将默认路由指向squid的内网IP(eth0的IP)

[root@192.168.10.20 ~ ] # router add default gw 192.168.10.10

安装linux图形化和火狐浏览器用户接下来的测试

[root@192.168.10.20 ~ ] # yum groupinstall "X Windows System" "Desktop"
[root@192.168.10.20 ~ ] # yum install firefox

安装、配置squid服务器

[root@192.168.10.10 ~ ] # yum install squid

修改主配置文件

透明模式因为客户机不用指定squid的代理IP所以squid就要在自己的配置文件里声明是用哪块网卡代理的请求,后面的transparent代表的是透明模式

编辑内核参数,开启路由转发

[root@192.168.10.10 ~ ] # vim /ext/sysctl.conf
net.ipv4.ip_forward = 1
[root@192.168.10.10 ~ ] # sysctl -p                      #刷新内核参数
[root@192.168.10.10 ~ ] # service squid restart          #重启SQUID

squid服务器防火墙配置

这条规则的作用在于:经过eth0网卡 这个网段 所有的80端口的请求,全部转发给3128端口

[root@192.168.10.10 ~ ] # iptables -t nat -I PREROUTING -i eth0 -s 192.168.10.0/24 -p tcp --dport 80 –j REDIRECT --to -ports 3128

重启squid

[root@192.168.10.10 ~ ] # service squid restart

然后各种测试,客户机是不用再搞那些代理设置了

squid限制客户机请求资源大小

将这一条写入squid的主配置文件客户机请求的资源就不能超过100MB了(写在visible_hostname下面)

reply_body_max_size 100 MB

反向代理部署

准备4台服务器

——1台squi d服务器       (eth0内网:192.168.10.10 eth1公网:10.10.10.10)
——1台内网web服务器   (eth0内网:192.168.10.20 )
——1台内网web服务器   (eth0内网:192.168.10.30 )
——1台外网客户机          (eth0公网: 10.10.10.30)

web服务器配置

web服务器20安装Apache,并写一个网站的首页文件,这里的web服务要将自己的网关配置为squid的eth0的IP

[root@192.168.10.20 ~ ] # router add default gw 192.168.10.10      #添加默认路由
[root@192.168.10.20 ~ ] # yum install httpd                         #安装Apache
[root@192.168.10.20 ~ ] # echo "123" > /var/www/html/index.html    #写一个网页
[root@192.168.10.20 ~ ] # service httpd restart                    #启动Apache
[root@192.168.10.20 ~ ] # curl 192.168.10.20                       #访问测试一下

web服务器30安装Apache,并写一个网站的首页文件,这里的web服务要将自己的网关配置为squid的eth0的IP

[root@192.168.10.30 ~ ] # router add default gw 192.168.10.10      #添加默认路由
[root@192.168.10.30 ~ ] # yum install httpd                        #安装Apache
[root@192.168.10.30 ~ ] # echo "456" > /var/www/html/index.html    #写一个网页
[root@192.168.10.30 ~ ] # service httpd restart                    #启动Apache
[root@192.168.10.30 ~ ] # curl 192.168.10.20                       #访问测试一下

配置、安装squid

[root@192.168.10.10 ~ ] # yum -y install squid

修改squid主配置文件,定位到59行左右,如下修改

[root@192.168.10.10 ~ ] #vim /etc/squid/squid.conf
http_access allow all                                            #放通任意外网地址的访问
http_port 10.10.10.10:80(squid外网口地址) vhost
visible_hostname www.zheli.ink
cache_peer 192.168.10.20 parent 80 0 originserver round-robin    # 节点以轮询的方式(实际上他只支持轮询)
cache_peer 192.168.10.30 parent 80 0 originserver round-robin    # 节点以轮询的方式(实际上他只支持轮询)

重启squid

[root@192.168.10.10 ~ ] #service squid restart

用客户机访问squid的公网IP测试,

代理功能,轮询负载均衡,没有问题

 

写完文章都快2点了,再不睡觉要猝死了,拜了个拜~~

Last modification:December 2nd, 2018 at 09:39 pm
如果觉得我的文章对你有用,请随意赞赏

One comment

  1. 奥兹说钱

    大佬威武!

Leave a Comment