目的:客户端根本无需知道有代理服务器存在,客户端不需要在浏览器或其他的客户端工作中做任何设置,代理服务器就可以自动拦截并处理所有的网络请求。
配置透明代理:
(1)三台虚拟机,一台做squid代理服务器(RHEL 7-2)(IP1:192.168.10.20/24,连接VMnet1,IP2: 202.112.113.112/24,VMnet8),安装双网卡,一台做linux操作系统的squids客户端(RHEL 7-1,IP:192.168.10.1/24,连接VMnet1),一台做互联网上的web服务器(RHEL 7-3,IP:202.112.113.113,连接VMnet8),然后squid代理服务器(RHEL 7-2)安装squid代理软件,安装前要查看三台虚拟机是否配置好yum源文件
配置yum源文件操作:
①在当前目录下创建一个挂载文件:
mkdir /iso
②把光驱设备挂载在创建的文件里
mount /dev/cdrom /iso
③配置yum源文件
vim /etc/yum.repo/dvd.repo
[dvd]
name=dvd
baseurl=file:///iso
gpgcheck=0
enabled=1
(2)对三台交换机配置好ip与网关,RHEL 7-1地址的网关是RHEL 7-2第一个网卡的ip地址,RHEL 7-2的第一个网卡的ip地址与网关一样,第二个网卡也一样,然后RHEL 7-3不用配置网关。
(3)在RHEL 7-3的操作:
①安装web:yum install httpd -y
②打开httpd服务:systemctl start httpd
③打开防火墙:systemctl start firewalld
④让防火墙永久放行httpd服务:firewall-cmd --permanent --add-service=http
⑤重载防火墙:firewall-cmd --reload
(4)在RHEL 7-2上的操作:
①安装iptables服务:yum install iptable iptables-service -y
②关闭firewalld服务:systemctl stop firewalld
③开启iptables服务:systemctl start iptables
④清空iptables的规则:iptables -F
⑤安装squid服务:yum install squid -y
⑥配置squid服务:
vim /etc/squid/squid.conf
#添加一行允许acl名为localnet的访问控制列表中,源ip地址为192.0.0.0/8网段的客户端访问:
acl localnet src 192.0.0.0/8
#允许名为localnet的访问控制列表中的客户端访问HTTP请求:
http_access allow localnet
#然后拒绝其他客户端访问:
http_access deny all
#设置代理服务器的http端口,并且使用透明代理模式,使用IP地址为192.168.10.20的:
http_port 192.168.10.20:3128 transparent
#将代理服务器的主机名设置为RHEL 7-2(不设置也行):
visible_hostname RHEL7-2
⑦开启squid服务:systemctl start squid
(5)将所有源IP地址为192.168.10.0/24的TCP协议、目标端口为80的流量重定向到3128端口:
iptables -t nat -I PREROUTING -s 192.168.10.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 3128
(6)在RHEL 7-1虚拟机上打开firefox浏览器,手动配置代理,将代理设置为“无代理”,在浏览器地址栏输入http://202.112.113.113,然后回车,如果出现网站的测试成功。
(7)在Web服务器端RHEL 7-3上查看日志文件:
vim /var/log/httpd/access_log # 如果行头出现202.112.113.112则透明代理实现成功!