如何使用Squid服务来构建=》传统和透明代理服务器,通俗易懂!

1、缓存代理概述:

作为应用层的代理服务软件,Squid主要提供缓存加速和应用层过滤控制的功能

2、代理的工作机制:

(1)当客户机通过代理来请求web页面时,指定的代理服务器会先检查自己的缓存,若缓存中已有需访问页面,则直接将缓存中的页面内容反馈给客户机

(2)若缓存中没有所需页面,则代理服务器向Internet发送访问请求,当获得返回的web页面后,将网页数据保存到缓存中并发送给客户机

3、代理的基本类型:

(1)传统代理:

需手动设置代理服务器的地址和端口,多见于Internet环境

(2)透明代理:

不需要手动指定代理服务器的地址和端口,多见于局域网环境

注:代理服务器一定有预备的缓存空间,用于存储服务器反馈的数据

一、Squid代理服务器的安装及运行控制

(1)挂载并解压squid软件包
[[email protected] ~]# mount.cifs //192.168.100.1/zdh /abc
Password for [email protected]//192.168.100.1/zdh:
[[email protected] ~]# cd /abc
[[email protected] abc]# ls
squid-3.5.28.tar.gz
[[email protected] abc]# tar zxvf squid-3.5.28.tar.gz -C /opt
(2)到squid文件路径下执行配置文件
[[email protected] abc]# cd /opt
[[email protected] opt]# ls
rh  squid-3.5.28
[[email protected] opt]# cd squid-3.5.28/
[[email protected] squid-3.5.28]# ls
acinclude     configure     doc      lib          README             tools
aclocal.m4    configure.ac  errors   libltdl      RELEASENOTES.html
bootstrap.sh  contrib       helpers  Makefile.am  scripts
cfgaux        CONTRIBUTORS  icons    Makefile.in  SPONSORS
ChangeLog     COPYING       include  po4a.conf    src
compat        CREDITS       INSTALL  QUICKSTART   test-suite
(3)配置文件项
[[email protected] 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正则表达式
[[email protected] squid-3.5.28]# systemctl stop firewalld.service
[[email protected] squid-3.5.28]# setenforce 0
[[email protected] squid-3.5.28]# yum install gcc gcc-c++ make -y               安装编译软件包
[[email protected] squid-3.5.28]#make && make install
(4)创建用户并赋予权限
[[email protected] squid-3.5.28]#ln -s /usr/local/squid/sbin/* /usr/local/sbin/  建立软连接
[[email protected] squid-3.5.28]#useradd -M -s /sbin/nologin squid  创建用户,不创建用户家目录,不使用本地环境登录
[[email protected] squid-3.5.28]#chown -R squid.squid /usr/local/squid/var/  赋予属主属组权限
(5)修改squid的配置文件
[[email protected] squid-3.5.28]#vim /etc/squid.conf
cache_effective_user squid        #添加   指定程序用户
cache_effective_group squid       #添加   指定账号基本组
coredump_dir /usr/local/squid/var/cache/squid  //在此行上面你添加以上两条语句
(6)Squid的运行控制
[[email protected] squid-3.5.28]#squid -k parse   //检查配置文件语法

[[email protected] squid-3.5.28]# squid -z   //初始化缓存目录

[[email protected] squid-3.5.28]# squid    //启动服务
(7)使用Squid脚本服务
[[email protected] squid-3.5.28]#cd /etc/init.d
[[email protected] 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

[[email protected] init.d]#chmod +x squid  赋予执行权限
[[email protected] init.d]# chkconfig --add squid
[[email protected] init.d]# chkconfig --level 35 squid on                            添加开机自启

这样一来我们就可以通过Squid脚本来启动、停止、重载Squid服务器了,在执行时天机相应的start、stop、reload、restart参数。

二、构建代理服务器

接下来我从两个方面来讲解Squid的配置和使用,分别是传统代理,透明代理。

1、传统代理:

准备条件:

一台squid服务器:192.168.100.129

一台web服务器:192.168.100.130

一台windows客户机:192.168.100.133
(1)squid代理服务器的配置

1、修改squid.conf的配置文件

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

2、在防火墙添加允许策略,这里不要关闭防火墙

[[email protected] ~]# iptables -F   清空防火墙列表
[[email protected] ~]# setenforce 0   关闭网络增强性安全功能
[[email protected] ~]# iptables -I INPUT -p tcp --dport 3218 -j ACCEPT

3、重载squid服务,使配置文件生效

[[email protected] ~]# service squid reload
(2)web服务器的代理配置
[[email protected] ~]# yum install httpd -y
[[email protected] ~]# systemctl start httpd
[[email protected] ~]# netstat -antp |grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      87297/httpd

开启后客户机就可以访问了,但注意,在这里客户机并不是通过代理服务器访问,而是直接访问的web网站,请看!

[[email protected] squid-3.5.28]# cd /etc/httpd/
[[email protected] httpd]# cd logs/
[[email protected] logs]# vim access_log
192.168.100.133 - - [23/Jul/2018:14:33:45 +0800] "GET /noindex/css/fonts/Light/OpenSans-Light.eot? HTTP/1.1" 404 240 "http://192.168.100.130/" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)"
"access_log" 30L, 9002C

可以看出是客户机直接访问的web服务器,并没有通过代理服务器,下面我们通过代理服务器登录

(3)客户机的代理配置
在IE浏览器中--选择‘工具’--‘intnet选项’--‘intnet选项对话框’--‘连接’--‘局域网(lan)设置’--单击‘局域网设置’按钮--弹出‘局域网设置’对话框


下面我们清空浏览器记录,重新访问几次,在web服务器查看访问日志

2、透明代理

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

准备条件:

一台squid代理服务器,配置双网卡:内网ens33 192.168.100.1 外网:ens36 12.0.0.1

一台web服务器:12.0.0.12

一台windows客户机:192.168.100.133


作为别人的网关需要帮别人转发数据包

[[email protected] ~]# echo "1" > /proc/sys/net/ipv4/ip_forward

重启虚拟机后需要重新执行防火墙策略

[[email protected] ~]#iptables -F
[[email protected] ~]#iptables -t nat -F
[[email protected] ~]#setenforce 0
(1)配置squid支持透明代理
[[email protected] ~]# vim /etc/squid.conf
http_port 192.168.100.1:3128 transparent
[[email protected] ~]#service squid reload

(2)设置iptables的重定向策略

[[email protected] ~]#iptables -t nat -I PREROUTING -i ens33 -s 192.168.100.0/24 -p tcp --dport 80 -j REDIRECT --to 3128           (redirect 重定向)
[[email protected] ~]#iptables -t nat -I PREROUTING -i ens33 -s 192.168.100.0/24 -p tcp --dport 443 -j REDIRECT --to 3128   (443 安全性的超文本传输协议)
[[email protected] ~]#iptables -I INPUT -p tcp --dport 3218 -j ACCEPT

最后再次访问12.0.0.12即可发现是通过网关12.0.0.1访问,这里不再展示。

原文地址:http://blog.51cto.com/13687553/2149123

时间: 2024-08-05 03:30:43

如何使用Squid服务来构建=》传统和透明代理服务器,通俗易懂!的相关文章

【实战】Squid 缓存服务器 之 传统代理 + 透明代理

目录: 1· Squid代理的概述原理2· 代理的基本类型3· Squid 服务脚本4· 构建代理服务器(传统代理.透明代理)5· 总结 Squid代理的概述原理 1)代理的工作机制 1.什么是 Squid ? Squid是一个高性能的代理缓存服务器,Squid支持FTP.gopher.HTTPS和HTTP协议.和一般的代理缓存软件不同,Squid用一个单独的.非模块化的.I/O驱动的进程来处理所有的客户端请求. 2·缓存的工作原理 squid 是工作在应用层的代理服务软件,squid 主要提供

Squid服务基础及构建代理服务器

1.1 Squid服务基础 1.1.1 缓存代理概述 Squid:应用层的代理服务软件,主要提供缓存加速.应用层过滤控制的能 1.代理的工作机制: 当客户机通过代理来请求web页面时,指定的代理服务器会先检查自己的缓存,如果缓存中已经有客户机需呀的页面,则直接将缓存中的页面内容反馈给客户机:如果缓存中没有客户机要的访问页面,则由代理服务器向internet发送请求,当获得返回的web页面以后,将网页数据保存到缓存中并发送给客户机,如下图所示. 2.代理的基本类型 传统代理:也就是普通的代理服务器

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

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

squid 缓存服务器之传统、透明代理

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

squid服务之配置透明代理

透明代理提供的服务功能与传统代理时一致的,但是其"透明"的实现依赖于默认路由和防火墙的重定向策略,因此更适用于局域网主机服务,而不适合Internet中. 网络环境如下: 项目大概流程如下: 在Linux网关上,构建squid为客户机访问Internet提供代理服务. 在局域网所有的客户机上,只需有正确的IP地址.默认网关和DNS,不需要手动指定代理服务器的地址.端口等信息(若指定了反而易出错).关于客户机的DNS解析工作,最好还是通过正常的DNS服务器来提供,不建议抛给代理服务器来处

squid缓存服务器 ACL访问控制 传统代理 透明代理 squid日志分析 反向代理

缓存代理概述 Squid提供了强大的代理控制机制,通过合理的设置ACL,并进行限制,可以针对源地址.目标地址.访问的URL路径.访问的时间等条件进行过滤.作为应用层的代理服务器软件,Sqiod主要提供了缓存加速和引用层过滤控制能力 代理的工作机制 当客户机通过代理来请求 Web 页面时,指定的代理服务器,会先检查自己的缓存如果缓存中已经有客户机需要访问的页面,则直接将缓存中的页面内容反馈给客户机:如果缓存中没有客户机需要访问的页面,则用代理服务器向Internet 发送访问请求. 由于客户机的W

了解squid服务以及安装部署

squid作为一款应用层的代理服务软件,它主要提供了缓存加速.应用层过滤的功能. squid代理服务器的工作机制: 当我们客户机通过squid代理去访问web页面时,指定的代理服务器会先检查自己的缓存,若是缓存中有我们客户机需要的页面,那么squid服务器将直接把缓存中的页面内容返回给客户机,如果缓存中没有客户端请求的页面,那么squid代理服务器就会向internet发送访问请求,获得返回的web页面后,将网页的数据保存到缓存中并发送给客户机. 由于客户机的web访问请求实际上是squid代理

Squid 服务的安装及部署

squid 作为一款服务器代理工具,可以缓存网页对象,减少重复请求,从而达到加快网页访问速度,隐藏客户机真实IP,更为安全.squid的工作机制:当我们客户机通过squid代理去访问web页面时,指定的代理服务器会先检查自己的缓存,若是缓存中有我们客户机需要的页面,那么squid服务器将直接把缓存中的页面内容返回给客户机,如果缓存中没有客户端请求的页面,那么squid代理服务器就会向internet发送访问请求,获得返回的web页面后,将网页的数据保存到缓存中并发送给客户机. 由于客户机的web

Squid代理服务器应用(传统与透明)

实验原理图 第一步:配置squid代理服务器 #远程共享并挂载源码包 [[email protected] ~]# smbclient -L //192.168.142.1 [[email protected] ~]# mount.cifs //192.168.142.1/squid /mnt #解压源码包 [[email protected] ~]# cd /mnt [[email protected] mnt]# tar zxvf squid-3.4.6.tar.gz -C /opt #安装