Squid之传统代理和透明代理解析实验步骤

目录

  • 一:squid概述
    • 1.1:squid代理的作用
  • 二:squid的代理类型
  • 三:squid传统代理的部署
    • 3.1: 项目介绍
    • 3.2:部署过程
    • 3.3:修改配置文件,编写脚本优化服务启动项
    • 3.4:设置缓存参数
    • 3.5:设置防火墙规则
    • 3.6:配置web端和客户端
    • 3.7:打开客户进行配置
    • 3.8:查看web端httpd的访问日志
  • 四:squid透明代理
    • 2.1:项目环境
  • 五:透明代理项目操作
    • 1.网卡设置
    • 2:web服务器指定静态路由
    • 3、开启透明代理
    • 4、设置防火墙规则
    • 5、客户机验证

一:squid概述

Squid 是一个高性能的http代理服务器和web缓存服务器,可以很好的实现HTTP和FTP以及DNS查询、SSL等应用的缓存代理。

1、代理用户向web服务器请求数据并进行缓存,可以过滤流量帮助网络安全。

2、可以作为代理服务器链中的一环,向上级代理转发数据或直接连接互联网。

3、可以用在局域网中,使局域网用户通过代理上网。

4、可以将数据缓存在内存中,同时也缓存DNS查询的结果,还支持非模块化的DNS查询,对失败的请求进行消极缓存。

5、Squid支持SSL,支持ACL访问控制。
Web代理的工作机制

  • 缓存网页对象,减少重复请求
    Squid之传统代理和透明代理解析实验步骤_第1张图片

1.1:squid代理的作用

  • 代理上网 (传统代理,透明代理)
  • 网站静态页面缓存加速(反向代理)

二:squid的代理类型

  • 普通代理:需要客户机在浏览器中指定代理服务器的地址、端口;
  • 透明代理:适用于企业的网关主机(共享接入Internet)中,客户机不需要指定代理服务器地址、端口等信息,代理服务器需要设置防火墙策略将客户机的Web访问数据转交给代理服务程序处理;
  • 反向代理:是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

使用代理的好处

  • 提高Web访问速度
  • 隐藏客户机的真实IP地址
  • 部署简单,可以实现访问控制。

三:squid传统代理的部署

传统代理模式

客户端必须在自己的浏览器里指定服务器的ip地址和监听的端口号,才能通过squid代理服务器上网。

3.1: 项目介绍

主机 IP 主要软件
squid代理服务器 192.168.100.22 squid-3.5.27.tar.gz
web服务器 192.168.100.23 apache
[root@localhost ~]# hostnamectl set-hostname squid
[root@localhost ~]# su
[root@squid ~]# 

[root@localhost ~]# hostnamectl set-hostname web
[root@localhost ~]# su
[root@web ~]# 

3.2:部署过程

  • 在squid服务器部署squid服务
tar zxvf squid-3.4.6.tar.gz -C /opt/

cd /opt/squid-3.4.6

./configure --prefix=/usr/local/squid \        ##自定义安装路径
--sysconfdir=/etc \                            ##单独将配置文件修改到/etc目录下   
--enable-arp-acl \                             ##可在ACL中设置通过MAC地址进行管理,防止客户端使用IP欺骗
--enable-linux-netfilter \                     ##使用内核过滤
--enable-linux-tproxy \                        ##支持透明模式
--enable-async-io=100 \                        ##异步I/O提升存储性能,值可修改       
--enable-err-language ="Simplify_Chinese" \    ##错误信息的提示语言
--enable-underscore \                          ##允许URL中有下划线
--enable-poll \                                ##使用 poll() 模式,提升性能
--enable-gnuregex                              ##支持GNU正则表达式


make && make install

#创建链接文件,优化路径
ln -s /usr/local/squid/sbin/* /usr/local/sbin/

#创建程序用户、组
useradd -M -s /sbin/nologin squid     

#改变目录属主
chown -R squid.squid /usr/local/squid/var/

3.3:修改配置文件,编写脚本优化服务启动项

vim /etc/squid.conf
//增添下句并注释deny
http_access allow all
#http_access deny all  

//在端口port下增添三行代码  
http_port 3128   
cache_effective_user squid                       #添加指定程序用户  
cache_effective_group squid                      #添加指定账号基本组
coredump_dir /usr/local/squid/var/cache/squid    #内存映像的地址

squid -k parse                     #检查配置文件语法
squid –k rec                       #重新加载配置文件
squid -z                           #初始化缓存目录
squid                              #启动服务
netstat -ntap | grep 3128          #查看服务是否启动

//编写优化脚本
cd /etc/init.d/
vim squid

#!/bin/bash
#chkconfig: 2345 90 25
PID="/usr/local/squid/var/run/squid.pid"
CONF="/etc/squid.conf"
CMD="/usr/local/squid/sbin/squid"
case "$1" in 
      start)
         netstat -natp | grep squid &> /dev/null
         if [ $? -eq 0 ]
         then
               echo "squid is running"
         else 
               echo "正在启动squid. . ."
               $CMD
         fi
        ;;
       stop)
         $CMD -k kill &> /dev/null
         rm -rf $PID &> /dev/null 
         ;;
      status)
         [ -f $PID ] &> /dev/null 
         if [ $? -eq 0 ]
         then
            netstat -natp | grep squid
         else
            echo "squid is not running"
         fi
	 ;;
      restart)
         $0 stop &> /dev/null
           echo "正在关闭 squid...."
         $0 start &> /dev/null 
           echo "正在启动 squid..."
	;;
      reload)
         $CMD -k reconfigure
	;;
      check)
         $CMD -k parse
	;;
        *)
         echo "用法: $0 {start|stop|status|reload|check|restart}"
         ;;
esac

chmod +x squid
chkconfig --add squid
chkconfig --level 35 squid on     #设置为开机自启动

service squid stop
service squid start
netstat -ntap | grep 3128

3.4:设置缓存参数

[root@squid init.d]# vim /etc/squid.conf

http_port 3128      '//下面添加'      
cache_mem 64 MB                      
reply_body_max_size 10 MB            
maximum_object_size 4096 KB          

Squid之传统代理和透明代理解析实验步骤_第2张图片

3.5:设置防火墙规则

[root@squid init.d]# iptables -F
[root@squid init.d]# setenforce 0
[root@squid init.d]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT

#重载服务
[root@squid init.d]# service squid reload

[root@squid init.d]# netstat -ntap | grep 3128
tcp6       0      0 :::3128                 :::*                    LISTEN      11982

3.6:配置web端和客户端

[root@localhost ~]# su
[root@web ~]# systemctl stop firewalld.service 
[root@web ~]# setenforce 0
[root@web ~]# yum install httpd -y
[root@web ~]# systemctl start httpd
[root@web ~]# netstat -ntap | grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      85552/httpd         

#查看访问日志是没有东西的
[root@web ~]# cat /var/log/httpd/access_log 

3.7:打开客户进行配置

设置客户端代理服务为squid IP
Squid之传统代理和透明代理解析实验步骤_第3张图片
用win 10客户机访问web
Squid之传统代理和透明代理解析实验步骤_第4张图片

3.8:查看web端httpd的访问日志

[root@web ~]# cat /var/log/httpd/access_log 

客户端20.0.0.120访问20.0.0.46网站服务,成功变为访问 squid代理IP
Squid之传统代理和透明代理解析实验步骤_第5张图片

四:squid透明代理

  • 客户端不需要指定代理服务器的ip地址和监听端口号,感觉是直接和公网通信,但是必须把网关地址指向代理服务器的内网接口ip地址。
  • 特点:对用户是透明的,即用户意识不到防火墙的存在。常用在服务器集群前端。
  • 要想实现透明模式,防火墙必须在没有IP地址的情况下工作,不需要对其设置IP地址,用户也不知道防火墙的IP地址。
  • 优点:既增加了网络的安全性,又降低了用户管理的复杂程度。

2.1:项目环境

服务器 ip
squid ens33:192.168.100.20 : ens37:192.168.10.20
web 192.168.100.21
client 192.168.10.30

五:透明代理项目操作

实现思路

  • 开启路由转发功能
  • 开启透明代理
  • 配置防火墙规则

1.网卡设置

squid服务器添加网卡
Squid之传统代理和透明代理解析实验步骤_第6张图片

修改IP地址

cd /etc/sysconfig/network-scripts/
cp -p ifcfg-ens33 ifcfg-ens37

vi ifcfg-ens37  ##修改ens37ip信息
BOOTPROTO=static
##删除uuid修改3337
IPADDR=192.168.10.30
NETMASK=255.255.255.0  

//重启网络服务
service network restart   
 
//开启路由转发
vim /etc/sysctl.conf  
net.ipv4.ip_forward=1

sysctl -p   ##加载使之生效

2:web服务器指定静态路由

route add -net 192.168.10.0/24 gw 192.168.100.20

3、开启透明代理

//修改配置文件
vim /etc/squid.conf
#http_port 3128  #删除添加下面这行,地址为与客户机在同网段的地址
http_port 192.168.100.30:3128 transparent     

service squid restart
netstat -ntap | grep 3128

4、设置防火墙规则

iptables -F    #清空表缓存
iptables -t nat -F

//定义规则入口ens37,80端口重定向到3128
iptables -t nat -I PREROUTING -i ens37 -s 192.168.10.0/24 -p tcp --dport 80 -j REDIRECT --to 3128

iptables -t nat -I PREROUTING -i ens37 -s 192.168.10.0/24 -p tcp --dport 443 -j REDIRECT --to 3128

//允许3128端口访问
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
iptables -t nat -L

5、客户机验证

cat /var/log/httpd/access_log

Squid之传统代理和透明代理解析实验步骤_第7张图片

你可能感兴趣的:(云计算,Linux,云计算,squid,运维,linux)