关于Squid的概述及传统代理的配置可以参考上篇博文:Centos 7安装Squid代理服务及构建传统代理

一、透明代理

透明代理提供的服务功能与传统代理时一致的,但是其“透明”的实现依赖于默认路由和防火墙的重定向策略,因此更适用于局域网主机服务,而不适合Internet中。

开始配置透明代理服务器:(环境是接上一篇博文环境做的,不懂的可以先参考上一篇博文)

1、配置httpd服务器

1)httpd服务器将网卡调为VM2网卡

Centos7安装Squid代理服务及配置透明代理

[root@centos03 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32    <!--修改httpd服务的IP地址、添加网关-->
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
NAME=ens32
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.200.30
NATEMASK=255.255.255.0
GATEWAY=192.168.200.10     
[root@centos03 ~]# systemctl restart network        <!--重启网卡服务-->

2、配置Squid服务器

1)squid代理服务器关机添加VM2网卡开机即可

Centos7安装Squid代理服务及配置透明代理

[root@centos02 ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens32 
/etc/sysconfig/network-scripts/ifcfg-ens34    
<!--复制一块新的网卡配置文件-->
[root@centos02 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens34      
<!--修改新的网卡配置文件-->
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
NAME=ens34     <!--修改名字为ens34-->
DEVICE=ens34  <!--修改名字为ens34-->
ONBOOT=yes
IPADDR=192.168.200.10   <!--配置IP地址-->
NATEMASK=255.255.255.0
[root@centos02 ~]# systemctl restart network    
                                      <!--重新启动网卡服务-->
[root@centos02 ~]# ping 192.168.200.30     
           <!--ping命令测试和httpd服务器是否通信-->
PING 192.168.200.30 (192.168.200.30) 56(84) bytes of data.
64 bytes from 192.168.200.30: icmp_seq=1 ttl=64 time=0.350 ms
64 bytes from 192.168.200.30: icmp_seq=2 ttl=64 time=0.564 ms

3、配置Linux客户端

[root@centos01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32    <!--修改网卡配置文件-->
GATEWAY=192.168.100.20     <!--添加网关-->
[root@centos01 ~]# systemctl restart network<!--重新启动网卡服务 -->
[root@centos02 ~]# vim /etc/sysctl.conf   <!--开启路由功能-->
net.ipv4.ip_forward = 1 
[root@centos02 ~]# sysctl -p    <!--验证路由是否开启成功-->
net.ipv4.ip_forward = 1
[root@centos01 ~]# ping 192.168.200.30  <!--测试是否全网互通-->
PING 192.168.200.30 (192.168.200.30) 56(84) bytes of data.
64 bytes from 192.168.200.30: icmp_seq=1 ttl=63 time=0.463 ms
64 bytes from 192.168.200.30: icmp_seq=2 ttl=63 time=0.484 ms

4、Squid服务器配置防火墙规则

[root@centos02 ~]# iptables -F     <!--清除系统自动防火墙-->
[root@centos02 ~]# iptables -t nat -F  <!--清除系统自动防火墙-->
[root@centos02 ~]# iptables -t nat -L  <!--查看防火墙规则-->
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
[root@centos02 ~]# iptables -t nat -I PREROUTING -i ens32 -s
192.168.100.0/24 -p tcp --dport 80 -j REDIRECT --to 3128  
<!--将192.168.100.0网络的80端口映射到外网的3218端口-->
[root@centos02 ~]# iptables -t nat -I PREROUTING -i ens32 -s
192.168.100.0/24 -p tcp --dport 8080 -j REDIRECT --to 3128  
<!--将192.168.100.0网络的8080端口映射到外网的3218端口-->
[root@centos02 ~]# iptables -t nat -I PREROUTING -i ens32 -s
192.168.100.0/24 -p tcp --dport 443 -j REDIRECT --to 3128   
<!--将192.168.100.0网络的443端口映射到外网的3218端口-->
[root@centos02 ~]# iptables -t nat -I PREROUTING -i ens32 -s
192.168.100.0/24 -p tcp --dport 21 -j REDIRECT --to 3128   
<!--将192.168.100.0网络的21端口映射到外网的3218端口-->
[root@centos02 ~]# iptables -t nat -L   <!--查看规则是否生效-->
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
REDIRECT   tcp  --  192.168.100.0/24     anywhere             tcp dpt:ftp redir ports 3128
REDIRECT   tcp  --  192.168.100.0/24     anywhere             tcp dpt:https redir ports 3128
REDIRECT   tcp  --  192.168.100.0/24     anywhere             tcp dpt:webcache redir ports 3128
REDIRECT   tcp  --  192.168.100.0/24     anywhere             tcp dpt:http redir ports 3128

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination    
[root@centos02 ~]# /etc/init.d/squid stop   <!--关闭squid服务-->
正在关闭squid...
[root@centos02 ~]# vim /etc/squid.conf   
           <!--修改squid主配置文件支持透明代理-->
60 http_port 192.168.100.20:3128 transparent
[root@centos02 ~]# /etc/init.d/squid start    <!--启动squid服务-->
正在启动squid...

5、Windows客户机使用透明代理服务器

1)windows客户端网络添加网关

Centos7安装Squid代理服务及配置透明代理

2)windows客户端浏览器取消代理

Centos7安装Squid代理服务及配置透明代理

3)访问测试

Centos7安装Squid代理服务及配置透明代理

4)跟踪squid服务器的访问日志文件

Centos7安装Squid代理服务及配置透明代理

6、Linux命令行客户机使用透明代理

[root@centos01 ~]# unset HTTP_PROXY HTTPS_PROXY FTP_PROXY   <!--取消Linux系统的代理-->
[root@centos01 ~]# elinks http://192.168.200.30   
                <!--Linux客户端使用elinks访问httpd服务器-->

—————— 本文至此结束,感谢阅读 ——————