配置squid透明代理

linux 配置squid透明代理

代理的基本类型
传统代理:适用于Internet,需明确指定服务端
透明代理:适用于共享上网网关,不需指定服务端

我用三个Centos7.3 做模拟环境,如图:
配置squid透明代理_第1张图片`

apache服务器(192.168.2.1)上

[root@c ~]# yum -y install httpd		#安装http
已安装:
  httpd.x86_64 0:2.4.6-45.el7.centos                                                    
[root@c ~]# echo "

192.168.2.1

"
> /var/www/html/index.html #做一个测试页面 [root@c ~]# systemctl start httpd.service #启动服务

在squid服务器(192.168.1.2)上 编译安装squid

[root@b ~]# tar -zxf squid-3.5.23.tar.gz 
[root@b ~]# cd squid-3.5.23/
[root@b squid-3.5.23]# ./configure  --prefix=/usr/local/squid --sysconfdir=/etc --enable-linux-netfilter  --enable-async-io=240   --enable-default-err-language=Simplify_Chinese --disable-poll  --enable-epoll   --enable-gnuregex 
[root@b squid-3.5.23]# make && make install

ln -s /usr/local/squid/sbin/* /usr/local/sbin #优化路径
创建程序用户

[root@b ~]#squid		#启用squid
[root@b ~]# useradd -M -s /sbin/nologin squid
[root@b ~]# chown -R squid:squid /usr/local/squid/var/
[root@b ~]# chmod -R 757 /usr/local/squid/var/
vim  /etc/squid.conf
添加
cache_effective_user  squid    #指定程序用户
cache_effective_group  squid  
在http_access deny前添加
http_access allow  all

	#修改:http_port 3128  为:http_port 内网网卡IP:3128 transparent
[root@b ~]# sed -i "/http_port 3128/s/http_port 3128/http_port 192.168.1.2:3128 transparent/" /etc/squid.conf

[root@b ~]# systemctl start firewalld
[root@b ~]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf 
[root@b ~]# sysctl -p
net.ipv4.ip_forward = 1

设置网卡所属区域
[root@b ~]#   firewall-cmd --zone=external --add-interface=ens33			#内网网卡(网卡1)
The interface is under control of NetworkManager, setting zone to 'external'. 
success
[root@b ~]#   firewall-cmd --zone=internal --add-interface=ens37				#公网网卡(网卡2)
The interface is under control of NetworkManager, setting zone to 'internal'.
success


[root@b ~]#   firewall-cmd --zone=external --add-service=http		#允许http通过
success
[root@b ~]#   firewall-cmd --zone=external --add-port=3128/tcp	#允许squid通过
success
#把来自内网要访问80端口的请求改成访问3128端口
[root@b ~]#   firewall-cmd --direct --add-rule ipv4 nat PREROUTING 0 -i ens33 -p tcp --dport 80 -j REDIRECT --to-ports 3128		
success
[root@b ~]#   firewall-cmd --runtime-to-permanent		#永久配置
success

 [root@b ~]# squid -k reconfigure  #重新加载squid
[root@b ~]# netstat  -anpt | grep  squid	#查看squid是否运行
tcp6       0      0 :::3128                 :::*                    LISTEN      86516/(squid-1)     


先在服务器动态查看http访问情况

[root@c ~]# tail -F /etc/httpd/logs/access_log
192.168.2.1 - - [29/Nov/2019:03:28:21 +0800] "GET / HTTP/1.1" 200 21 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"
192.168.2.1 - - [29/Nov/2019:03:28:21 +0800] "GET /favicon.ico HTTP/1.1" 404 209 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"
192.168.2.1 - - [29/Nov/2019:03:28:21 +0800] "GET /favicon.ico HTTP/1.1" 404 209 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"


在客户机(192.168.1.1)输入命令firedox打开浏览器
访问apache服务器(192.168.2.1)

配置squid透明代理_第2张图片这时再回到apache服务器查看http访问情况
配置squid透明代理_第3张图片多了两条squid(网卡2:192.168.2.2)的访问
squid透明代理完成

你可能感兴趣的:(linux,Centos,squid,linux,squid透明代理)