关于 Squid 的简介及安装部署过程可以参考博文: Squid 代理服务器安装及部署 https://blog.51cto.com/14157628/2430239
传统代理的实现最为简单, 透明代理还需要结合默认默认路由, 防火墙策略等一起来完成.
构建传统代理
使用传统代理的特点在于: 客户机的相关程序 (如 IE 浏览器, QQ 聊天软件) 必须指定代理服务器的地址, 端口等基本信息.
案例环境
案例实施步骤大致分为:
1.Squid 服务器的配置;
2. 客户机的代理设置;
3. 验证代理服务器.
案例实施
关于搭建 web 服务器可以参考博文: CentOS 7 利用 Apache 搭建 Web 网站服务 https://blog.51cto.com/14157628/2419895
如果需要使用域名访问网站, 可以参考博文: CentOS 7 搭建 DNS 服务 https://blog.51cto.com/14157628/2417756
这里主要介绍 Squid 服务.
1.Squid 服务器的配置
配置 Squid 实现传统代理服务时, 需要注意添加 http_access allow all 访问策略, 以便允许任意客户机使用代理服务.
(1)修改 Squid 服务的配置文件
- [root[email protected] ~]# VIM /etc/squid.conf
- ............ // 省略部分内容
- http_access allow all // 必须放在 http_access deny all 之前
(2)重载 squid 服务
- [[email protected] ~]# squid -k reconfigure
- // 如果没有添加为系统服务, 使用这种方式重启 Squid 服务
2. 客户机的代理配置
(实验环境, 客户机不需要填写网关, dns 服务器地址)
客户机如果是 Windows 系统(针对 IE 浏览器), 需要:
客户机 (192.168.1.10) 测试访问(为了简单起见, 所以就先关闭防火墙)!
测试访问成功!
如果是 Linux 客户端, 则需要:
- [[email protected] ~]# 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
- [[email protected] ~]# source /etc/profile
客户机 (192.168.1.20) 测试访问:
测试访问成功!
3. 代理服务的验证
(1)查看 Squid 访问日志
[[email protected] ~]# tail -f /usr/local/squid/var/logs/access.log
(2)查看 Web 访问日志的新增记录
[[email protected] ~]# tail -f /var/log/httpd/access_log
传统代理测试完成!
构建透明代理
透明代理提供的服务功能与传统代理是一致的, 但是其 "透明" 的实现依懒于默认路由和防火墙的重定向策略, 因此更实用于局域网主机服务, 而不适合为 Internet 中的客户机提供服务.
案例环境
案例实施步骤大致分为:
1. 配置 Squid 支持透明代理及开启路由转发功能;
2. 设置 firewalld 的重定向策略;
3. 验证透明代理使用.
案例实施
1. 配置 Squid 支持透明代理
- [[email protected] ~]# VIM /etc/squid.conf
- .................. // 省略部分内容
- http_port 192.168.1.1:3128 transparent // 只在服务器其中一个 IP 地址上提供服务
- [[email protected] ~]# squid -k reconfigure
- // 重启 Squid 服务
- [[email protected] ~]# VIM /etc/sysctl.conf
- .................. // 省略部分内容填写以下内容
- net.ipv4.ip_forward = 1 // 开启路由转发
- [[email protected] ~]# sysctl -p // 立即生效
- net.ipv4.ip_forward = 1
2. 设置 firewalld 的重定向策略
由于 firewalld 的 external 区域的特性, 所以本次实验把局域网内部作为 external(外部区域).
防火墙做端口转发操作, 将访问本机 80,443 端口的请求转发到 3128 端口.
- [[email protected] ~]# systemctl start firewalld
- [[email protected] ~]# firewall-cmd --zone=external --add-interface=ens33
- // 定义 ens33 网卡所在区域
- [[email protected] ~]# firewall-cmd --zone=internal --add-interface=ens37
- // 定义 ens37 网卡所在区域
- [[email protected] ~]# firewall-cmd --zone=external --add-service=http
- [[email protected] ~]# firewall-cmd --zone=external --add-service=https
- [[email protected] ~]# firewall-cmd --zone=external --add-service=dns
- [[email protected] ~]# firewall-cmd --zone=external --add-port=3128/tcp
- // 添加服务及端口
- [[email protected] ~]# firewall-cmd --direct --add-rule ipv4 nat PREROUTING 0 -i ens33 -p tcp --dport 80 -j REDIRECT --to-ports 3128
- // 将 80 端口的请求转发到 3128 端口
- [[email protected] ~]# firewall-cmd --direct --add-rule ipv4 nat PREROUTING 0 -i ens33 -p tcp --dport 443 -j REDIRECT --to-ports 3128
- // 将 443 端口的请求转发到 3128 端口
- [[email protected] ~]# firewall-cmd --runtime-to-permanent
- // 防火墙配置永久生效
客户机访问测试(客户机需要填写网关, dns 服务器地址, 浏览器默认设置)
需要域名访问, 则需修改 DNS 区域配置对应的 IP 地址
Linux 客户端应使用命令清除变量信息.
[[email protected] ~]# unset HTTP_PROXY HTTPS_PROXY
3. 验证透明代理使用
透明代理跟传统代理验证方法一样.
[[email protected] ~]# tail -f /var/log/httpd/access_log
[[email protected] ~]# tail -f /usr/local/squid/var/logs/access.log
透明代理测试完成!
来源: http://www.bubuko.com/infodetail-3160059.html