构建Squid传统代理及透明代理

  • 什么是Squid
  • Squid是一种用来缓冲Internet数据的软件。它是这样实现其功能的,接受来自人们需要下载的目标(object)的请求并适当地处理这些请求。也就是说,如果一个人想下载一web页面,他请求Squid为他取得这个页面。Squid随之连接到远程服务器(比如:http://squid.nlanr.net/) 并向这个页面发出请求。然后,Squid显式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时,Squid可以简单地从磁盘中读到它,那样数据迅即就会传输到客户机上。当前的Squid可以处理HTTP,FTP,GOPHER,SSL和WAIS等协议。

    • 代理的基本类型
    • 传统代理:即为普通的代理服务,一般以提供HTTP、ftp代理为主,需要客户端在浏览器中指定代理服务器地址和端口(默认为3128)。
    • 透明代理:客户不需要指定代理服务器的地址和端口,而是通过网关,由防火墙的重定向策略将用户的请求交给代理服务器处理;域名解析有客户机完成

    • 安装及运行控制
    • 编译安装squid
    • 编译安装时目录设置为/usr/local/squid
      # tar zxvf squid-3.5.28.tar.gz -C /opt/
      # yum install gcc gcc-c++ cmake -y
      # cd /opt/squid-3.5.28
      # ./configure --prefix=/usr/local/squid --sysconfdir=/etc          //单独将配置文件修改到此目录下
      --enable-arp-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               // 使用GUN正则表达式
      
      # 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/
    • Squid配置文件
      # vim /etc/squid.conf  (添加下面3行)
      
          cache_effective_user squid        #添加   指定程序用户
          cache_effective_group squid       #添加   指定账号基本组
          coredump_dir /usr/local/squid/var/cache/squid
      
      # squid -k parse   //检查配置文件语法
      # squid -z   //第一次启动 先初始化缓存目录
      # squid    //启动服务
      # netstat -anpt | grep "squid"  


    • 使用Squid服务脚本
    • 为了更方便控制服务的 启动、停止、重载
      # 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
    • web服务器
    • 关闭防火墙
    • 安装httpd服务并且开启
      # systemctl stop firewalld.service
      # systemctl restart httpd
      # yum install -y httpd
      # systemctl start httpd
    • 构建传统代理
    主机 IP 主要软件服务
    Squid代理服务器 192.168.100.20 squid
    Web服务器 192.168.100.30 httpd
    windows7 192.168.100.50 IE浏览器

    如图:

            # vim /etc/squid.conf
            http_access allow all
            http_access deny all
            http_port 3128
            cache_mem 64 MB                   #指定缓存功能所使用的内存空间大小,便于保持访问较频繁的WEB对象,容量最好为4的倍数,单位为MB,建议设为物理内存的1/4
            reply_body_max_size 10 MB         #允许用户下载的最大文件大小,以字节为单位。默认设置0表示不进行限制
            maximum_object_size 4096 KB       #允许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转发给用户

    • 添加防火墙策略

      # iptables -F
      # setenforce 0
      # iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
    • 在Linux系统中设置代理
      # vim /etc/profile  (在末尾添加)
           HTTP_PROXY=http://192.168.100.20:3128
           HTTPS_PROXY=http://192.168.100.20:3128
           FTP_PROXY=http://192.168.100.20:3128
           NO_PROXY=192.168.10.,192.168.20.
           export HTTP_PROXY HTTPS_PROXY FTP_PROXY NO_PROXY
      # source /etc/profile
    • 客户机的代理设置
    • Internet选项---》连接----》局域网设置----ip:squid服务器地址 端口:3128
    • 在浏览器中输入 web网页测试地址:192.168.100.30

    • 验证代理
    • 在squid服务器上查看访问记录
      # tail /usr/local/squid/var/logs/access.log  
    • 在web服务器上查看访问记录
      # tail /var/log/httpd/access_log 
    • 构建透明代理
    • 配置双网卡内网ens33 外网ens36
    主机 IP 主要软件服务
    Squid代理服务器 ens33:192.168.100.1 / ens36:12.0.0.1 squid
    Web服务器 12.0.0.1 httpd
    windows7 192.168.100.50 IE浏览器

    • 配置透明代理
    • 在http_port配置后面加上 transparent(透明)的选项
      # vim /etc/squid.conf
      http_port 192.168.100.1:3128 transparent
      # service squid restart
    • 设置iptables的重定向策略
      # iptables -F
      # iptables -t nat -F
      # iptables -t nat -I PREROUTING -i ens33 -s 192.168.100.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
      # iptables -t nat -I PREROUTING -i ens33 -s 192.168.100.0/24 -p tcp --dport 443 -j REDIRECT --to 3128
      # iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
    • 客户端验证
    • 透明代理要取消之前IE浏览器设置的代理地址和端口
    • 清空缓存 在浏览器输入地址:12.0.0.12

    • 验证代理
    • 在squid服务器上查看访问记录
    • 可以看到是192.168.100.50(客户机)请求访问12.0.0.12(web服务器)
      # tail /usr/local/squid/var/logs/access.log  

    • 在web服务器上查看访问记录
    • 可以看是12.0.0.1(代理服务器)访问了12.0.0.12(web服务器)
    • 可以看出代理配置成功
      # tail /var/log/httpd/access_log 

    原文地址:http://blog.51cto.com/13630803/2147432

    时间: 2024-10-28 22:10:02

    构建Squid传统代理及透明代理的相关文章

    构建Squid代理服务器-传统代理、透明代理、反向代理

    Squid是Linux系统中最常用的一款开源代理服务软件,主要提供缓存加速和应用层过滤控制的功能,可以很好的实现HTTP.FTP.DNS查询以及SSL等应用的缓存代理. 正向代理:根据实现的方式不同,代理服务可分为传统代理和透明代理. 传统代理:普通的代理服务,多见于Internet环境,必须在客户机的浏览器.QQ聊天工具.下载软件等程序中手动设置代理服务器对的地址和端口,才能使用代理服务器来访问网络.对于网页浏览器,访问网站时的域名解析请求会发送给指定的代理服务器. 透明代理:提供与传统代理相

    利用Squid构建传统代理及透明代理

    关于Squid的简介及安装部署过程可以参考博文:Squid代理服务器安装及部署 传统代理的实现最为简单,透明代理还需要结合默认默认路由.防火墙策略等一起来完成. 构建传统代理 使用传统代理的特点在于:客户机的相关程序(如IE浏览器.QQ聊天软件)必须指定代理服务器的地址.端口等基本信息. 案例环境 案例实施步骤大致分为: 1.Squid服务器的配置: 2.客户机的代理设置: 3.验证代理服务器. 案例实施 关于搭建Web服务器可以参考博文:CentOS 7 利用Apache搭建Web网站服务 如

    Squid代理服务器——传统代理,透明代理(实践!)

    缓存代理概述 web代理的工作机制: 缓存网页对象,减少重复请求 代理的基本类型 传统代理:适用于Internet,需明确指定服务端 透明代理:客户机不需要指定代理服务器的地址和端口,是通过默认路由,防火墙将web重定向给代理 使用代理的好处 提高web访问速度 隐藏客户机的真实IP地址 一,传统代理 实验环境 squid服务器 192.168.13.179 web服务器 192.168.13.151 client测试机192.168.13.135 1,在squid服务器上安装squid代理服务

    squid代理服务器-传统代理,透明代理

    缓存代理概述 web代理的工作机制: 缓存网页对象,减少重复请求 代理的基本类型 传统代理:适用于Internet,需明确指定服务端 透明代理:客户机不需要指定代理服务器的地址和端口,是通过默认路由,防火墙将web重定向给代理 使用代理的好处 提高web访问速度 隐藏客户机的真实IP地址 一,传统代理 实验环境 squid服务器 192.168.13.179 web服务器 192.168.13.151 client测试机192.168.13.135 1,在squid服务器上安装squid代理服务

    图解正向代理、反向代理、透明代理

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://z00w00.blog.51cto.com/515114/1031287 套用古龙武侠小说套路来说,代理服务技术是一门很古老的技术,是在互联网早期出现就使用的技术.一般实现代理技术的方式就是在服务器上安装代理服务软件,让其成为一个代理服务器,从而实现代理技术.常用的代理技术分为正向代理.反向代理和透明代理.本文就是针对这三种代理来讲解一些基本原理和具体的适用范围,便于大家更深入理

    图解正向代理、反向代理、透明代理(转)

    转自:http://www.cnblogs.com/Anker/p/6056540.html 正向代理:代理服务器代替客户端想服务器发送请求 反向代理:客户直接访问反向代理服务器,反向代理服务器通过反向代理获取服务器内容,然后返回给客户端 透明代理:修改包,中转,透明 套用古龙武侠小说套路来说,代理服务技术是一门很古老的技术,是在互联网早期出现就使用的技术.一般实现代理技术的方式就是在服务器上安装代理服务软件,让其成为一个代理服务器,从而实现代理技术.常用的代理技术分为正向代理.反向代理和透明代

    正向代理,反向代理和透明代理的区别

    一.正向代理(Forward Proxy) 一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术.关于正向代理的概念如下: 正向代理(forward)是一个位于客户端[用户A]和原始服务器(origin server)[服务器B]之间的服务器[代理服务器Z],为了从原始服务器取得内容,用户A向代理服务器Z发送一个请求并指定目标(服务器B),然后代理服务器Z向服务器B转交请求并将获得的内容返回给客户端.客户端必须要进行一些特别的设置才能使用正向代理.如下图1.1 (图1.1) 从上面的概念

    图解正向代理、反向代理、透明代理(反向代理可以实现负载均衡)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://z00w00.blog.51cto.com/515114/1031287 套用古龙武侠小说套路来说,代理服务技术是一门很古老的技术,是在互联网早期出现就使用的技术.一般实现代理技术的方式就是在服务器上安装代理服务软件,让其成为一个代理服务器,从而实现代理技术.常用的代理技术分为正向代理.反向代理和透明代理.本文就是针对这三种代理来讲解一些基本原理和具体的适用范围,便于大家更深入理

    分解正向代理、反向代理、透明代理

    套用古龙武侠小说套路来说,代理服务技术是一门很古老的技术,是在互联网早期出现就使用的技术.一般实现代理技术的方式就是在服务器上安装代理服务软件,让其成为一个代理服务器,从而实现代理技术.常用的代理技术分为正向代理.反向代理和透明代理.本文就是针对这三种代理来讲解一些基本原理和具体的适用范围,便于大家更深入理解代理服务技术. 一.正向代理(Forward Proxy) 一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术.关于正向代理的概念如下: 正向代理(forward)是一个位于客户端

    [转]图解正向代理、反向代理、透明代理

    上面的答案都说的很好,我画了张图能更直观地解释为何反向代理叫“反向“代理<img src="https://pic1.zhimg.com/480c1c45d2565e2f92fd930d25b73a18_b.jpg" data-rawwidth="522" data-rawheight="660" class="origin_image zh-lightbox-thu