当前位置:首页 > CN2资讯 > 正文内容

利用Squid构建传统代理及透明代理

16小时前CN2资讯

关于Squid的简介及安装部署过程可以参考博文:Squid代理服务器安装及部署

传统代理的实现最为简单,透明代理还需要结合默认默认路由、防火墙策略等一起来完成。

构建传统代理

使用传统代理的特点在于:客户机的相关程序(如IE浏览器、QQ聊天软件)必须指定代理服务器的地址、端口等基本信息。

案例环境

案例实施步骤大致分为: 1.Squid服务器的配置; 2.客户机的代理设置; 3.验证代理服务器。

### 案例实施 关于搭建Web服务器可以参考博文:[CentOS 7 利用Apache搭建Web网站服务](https://blog.皇冠云.com/14157628/2419895) 如果需要使用域名访问网站,可以参考博文:[CentOS 7搭建DNS服务](https://blog.皇冠云.com/14157628/2417756) 这里主要介绍Squid服务。 #### 1.Squid服务器的配置 配置Squid实现传统代理服务时,需要注意添加http_access allow all访问策略,以便允许任意客户机使用代理服务。 (1)修改Squid服务的配置文件

[root@www ~]# vim /etc/squid.conf ………… //省略部分内容 http_access allow all //必须放在http_access deny all之前

(2)重载squid服务

[root@www ~]# squid -k reconfigure //如果没有添加为系统服务,使用这种方式重启Squid服务

#### 2.客户机的代理配置 (实验环境,客户机不需要填写网关、dns服务器地址) 客户机如果是Windows系统(针对IE浏览器),需要: ![](https://s1.皇冠云.com/images/blog/201908/17/4fbfd9b5b7e777c35de695988c0231ae.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ![](https://s1.皇冠云.com/images/blog/201908/17/af2aad48cbc2f595610a504c56d95178.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ![](https://s1.皇冠云.com/images/blog/201908/17/c2a483edfdd14743b8317fe2d1c9a3d9.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) 客户机(192.168.1.10)测试访问(为了简单起见,所以就先关闭防火墙)! ![](https://s1.皇冠云.com/images/blog/201908/17/448e70f6d9d7d99812904186c9680cd3.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ![](https://s1.皇冠云.com/images/blog/201908/17/e2430425bce234de0623807cc4ee69c2.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) 测试访问成功! 如果是Linux客户端,则需要:

[root@localhost ~]# vim /etc/profile …………………… //省略部分内容 HTTP_PROXY=http://192.168.1.1:3128 //为使用HTTP协议指定代理 HTTPS_PROXY=http://192.168.1.1:3128 //为使用HTTPS协议指定代理
FTP_PROXY=http://192.168.1.1:3128 //为使用FTP协议指定代理 NO_PROXY=192.168.2.,192.168.3. //对于两个局域网网段不使用代理 export HTTP_PORXY HTTPS_PORXY FTP_PROXY NO_PROXY [root@localhost ~]# source /etc/profile

客户机(192.168.1.20)测试访问: ![](https://s1.皇冠云.com/images/blog/201908/17/93c4824aa1909fd2e3b0c5ec57c6c956.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ![](https://s1.皇冠云.com/images/blog/201908/17/b32fa7cd12db301dfb7175d6a90fd054.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) 测试访问成功! #### 3.代理服务的验证 (1)查看Squid访问日志

[root@www ~]# tail -f /usr/local/squid/var/logs/access.log

![](https://s1.皇冠云.com/images/blog/201908/17/6f89228347c3e3fe2dd27a7e04d05f16.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) (2)查看Web访问日志的新增记录

[root@localhost ~]# tail -f /var/log/httpd/access_log

![](https://s1.皇冠云.com/images/blog/201908/17/7a7f5d29ad130a3799ebf198c927c677.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) 传统代理测试完成! ### 构建透明代理 透明代理提供的服务功能与传统代理是一致的,但是其“透明”的实现依懒于默认路由和防火墙的重定向策略,因此更实用于局域网主机服务,而不适合为Internet中的客户机提供服务。 #### 案例环境 ![](https://s1.皇冠云.com/images/blog/201908/17/ba1c6b24f57b472a62124276ef573972.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) >``` 案例实施步骤大致分为: 1.配置Squid支持透明代理及开启路由转发功能; 2.设置firewalld的重定向策略; 3.验证透明代理使用。

案例实施

1.配置Squid支持透明代理
[root@www ~]# vim /etc/squid.conf ……………… //省略部分内容 http_port 192.168.1.1:3128 transparent //只在服务器其中一个IP地址上提供服务 [root@www ~]# squid -k reconfigure //重启Squid服务 [root@www ~]# vim /etc/sysctl.conf ……………… //省略部分内容填写以下内容 net.ipv4.ip_forward = 1 //开启路由转发 [root@www ~]# sysctl -p //立即生效 net.ipv4.ip_forward = 1
2.设置firewalld的重定向策略

由于firewalld的external区域的特性,所以本次实验把局域网内部作为external(外部区域)。 防火墙做端口转发操作,将访问本机80、443端口的请求转发到3128端口。

[root@www ~]# systemctl start firewalld [root@www ~]# firewall-cmd --zone=external --add-interface=ens33 //定义ens33网卡所在区域 [root@www ~]# firewall-cmd --zone=internal --add-interface=ens37 //定义ens37网卡所在区域 [root@www ~]# firewall-cmd --zone=external --add-service=http [root@www ~]# firewall-cmd --zone=external --add-service=https [root@www ~]# firewall-cmd --zone=external --add-service=dns [root@www ~]# firewall-cmd --zone=external --add-port=3128/tcp //添加服务及端口 [root@www ~]# firewall-cmd --direct --add-rule ipv4 nat PREROUTING 0 -i ens33 -p tcp --dport 80 -j REDIRECT --to-ports 3128 //将80端口的请求转发到3128端口 [root@www ~]# firewall-cmd --direct --add-rule ipv4 nat PREROUTING 0 -i ens33 -p tcp --dport 443 -j REDIRECT --to-ports 3128 //将443端口的请求转发到3128端口 [root@www ~]# firewall-cmd --runtime-to-permanent //防火墙配置永久生效

客户机访问测试(客户机需要填写网关、dns服务器地址,浏览器默认设置) 需要域名访问,则需修改DNS区域配置对应的IP地址 Linux客户端应使用命令清除变量信息。

[root@localhost ~]# unset HTTP_PROXY HTTPS_PROXY
3.验证透明代理使用

透明代理跟传统代理验证方法一样。

[root@localhost ~]# tail -f /var/log/httpd/access_log [root@www ~]# tail -f /usr/local/squid/var/logs/access.log

透明代理测试完成!

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/24678.html

    分享给朋友:

    “利用Squid构建传统代理及透明代理” 的相关文章