`
paulfzm
  • 浏览: 884293 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Squid 反向代理服务器安装笔记

 
阅读更多

1.安装前准备
设置网卡
 外网网卡:eth0
 ip:60.190.212.114
 网关:60.190.212.113
 子网掩码:255.255.255.0
 dns:202.96.107.28
 202.96.107.29

内网网卡:eth1
 ip:192.168.0.10

激活网卡:
 # vi /etc/sysconfig/network-script/ifcfg-eth0
 ONBOOT=yes  修改no 为yes 即可激活

删除已装软件
 rpm -q squid
 rpm -e squid --nodeps

修改hostname
 # hostname 查看主机名
 # hostname squid.localhost
 vi /etc/sysconfig/network
 vi /etc/hosts
 在以上2个文件中修改相应主机名
 然后
 # ping squid.localhost
 显示为 127.0.0.1 为正常

下载软件到 /usr/local/src/ 文件夹下
 wget http://www.squid-cache.org/Versions/v3/3.0/squid-3.0.STABLE13.tar.gz

2.开始安装
解压软件
 # cd /usr/local/src/
 # tar zxvf squid-3.0.STABLE13.tar.gz
 cd squid-3.0.STABLE13
 
安装配置
 ./configure --prefix=/usr/local/squid --enable-arp-acl --enable-linux-netfilter --enable-linux-tproxy --enable-pthreads --enable-err-language="Simplify_Chinese" --enable-default-err-language="Simplify_Chinese" --enable-underscores --disable-internal-dns --enable-pf-transparent --enable-referer-log

开始安装
 # make && make install

3.开始配置squid
添加 squid 用户
 # useradd squid -M -c "Squid user" -d /dev/null -s /sbin/nologin

新建一个用于运行squid的用户和组:
 #groupadd squid
 #useradd –g squid –s /sbin/nologin squid
修改/usr/local/squid3/var/目录的属主和属组为squid
 #chown squid:squid /usr/local/squid/var/


修改 squid.conf
 # cd /usr/local/squid/etc/
 # vim squid.conf

          http_port  设定Squid的代理端口和开启透明代理(加上IP地址,squid就不会监听外部的网络接口)
    --> http_port 3128 transparent vhost vport

         cache_mem 8 MB 共享内存大小(squid在提供服务的时候所使用的内存)
    --> cache_mem 128 MB 

          maximum_object_size_in_memory 8 KB (最大缓存文件大小,超过此值则不缓存)
     --> maximum_object_size_in_memory 512 KB

           memory_replacement_policy 替换机制(lru叫做 最近不常用的单元 unit一般就是常说的 object 也就是当cache中的内容比如内存或硬盘达到上限时的 那么就需要进行数据的换进和换出工作)
     --> memory_replacement_policy lru

           cache_dir ufs /usr/local/squid3/var/cache 10000 16 256 (/tmp size L1 L2)  这里的10000是10000MB为10G
  100G其中1层目录16个,并且每个1层目录下又有256个2层目录[或者说子目录]
  #磁盘缓存的类型和目录,大小,一二级目录的设置,这里磁盘缓存大小是10G
  ufs  是一种文件存储方式,因为os一般都是从内存获取数据 那么内存的东西必须最后写的硬盘上~
  sync 同步的时候用的ufs,那么squid也是一样
  ufs  一般是同时写入内存和硬盘
  注意:size是按照MB为单位的也就这个目录中最大存储容量的上限
        --> cache_dir ufs /tmp1 10000 16 256

              max_open_disk_fds 0
        --> max_open_disk_fds 0

              minimum_object_size 0 KB
         --> minimum_object_size 0 KB

               maximum_object_size 4096 KB 大于此容量的对象将不会保存到磁盘上,默认设置为4MB,过大的文件在下次重启后需要重新获取
         --> maximum_object_size 10 MB

               maximum_object_size_in_memory 最大位于内存对象的大小,默认大小8K,依服务器内存大小来定
         --> maximum_object_size_in_memory 2 MB

               reply_body_max_size 10240000 allow all //禁止下载超过10M的文件
         --> reply_body_max_size 10240000 allow all

               dns_nameservers 172.16.0.2 //使用内部DNS(可以不用设置)

               logformat squid  设置access_log中日志存储的格式~
         --> logformat squid  %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt

               access_log 客户端请求的日志
         --> access_log /usr/local/squid3/var/logs/access.log squid 

               cache_log  squid自身的运行日志  
         --> cache_log /usr/local/squid3/var/logs/cache.log  

               pid_filename 此三项是设置PID和日志文件位置
         --> pid_filename /usr/local/squid3/var/logs/squid.pid

               cache_store_log none  不记录store.log  我配置的是可以允许
         --> cache_store_log none

               visible_hostname squid.localhost 只是标签  有利于检查是否你的那台设备在提供服务!这里填写的是当前服务器的主机名 hostname
         --> visible_hostname squid.localhost

               cache_effective_user squid 设定用于运行squid的帐户
         --> cache_effective_user squid

               cache_effective_group squid 设定用于运行squid的组
         --> cache_effective_group squid

               acl QUERY urlpath_regex cgi-bin .php .jsp .asp .aspx .cgi .avi .wmv .rm .ram .mpg .mpeg .zip .exe 将这些后缀名的文件不进行缓存
         --> acl QUERY urlpath_regex cgi-bin .php .jsp .asp .aspx .cgi .avi .wmv .rm .ram .mpg .mpeg .zip .exe

         cache deny QUERY 将此行添加在 acl QUERY urlpath_regex cgi-bin .php .jsp .asp .aspx .cgi .avi .wmv .rm .ram .mpg .mpeg .zip .exe的下面
         --> cache deny QUERY

         http_access

  基本上的 deny all 都修改成 allow all
  修改 acl
        our_networks
        cache_peer newtest.haishang.com parent 80 0 no-query round-robin max-conn=32 originserver

验证squid.conf的语法和配置
        # /usr/local/squid/sbin/squid –k parse
初始化cache目录,在初次运行squid之前,或者无论何时你增加了新的cache_dir,你必须初始化cache目录。
        # /usr/local/squid/sbin/squid –z
前台启动squid,查看是否报错:
       #/usr/local/squid3/sbin/squid –N –d1
       …
       …
       …
       2010/07/06 05:42:44| Ready to serve requests.
       …
       …
       看到有上面那句就可以试着启动squid了

       透明代理设置(eth0是外部网卡,eth1是内部网卡)
       Squid要使用透明代理功能的话,在配置安装时必须在加上
       --enable-linux-netfilter这个选项,还必须要开启内核的路由转发功能(前面已经有开启)
配置iptables
把80端口的包全部转向3128端口:
       # iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-ports 3128
 
动态地址转换:
       # iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
保存iptables:
       # service iptables save
重启iptables:
       # service iptables restart
透明代理中一定要把客户端的网关设置成squid的内部网卡IP,否则无法正常代理
客户端还需要设置一个有效的DNS,普通代理则不需要


设置开机启动
      # vi /etc/rc.d/rc.local
 添加以下行
      /usr/local/squid/sbin/squid –s
      iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-ports 3128
      iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
      service iptables save
      service iptables restart

3.Squid语法
 1、启动squid服务:
 #/usr/local/squid/sbin/squid –s
 2、停止squid服务
 #/usr/loca/squid/sbin/squid –k shutdown
 3、Squid用法帮助信息
 #/usr/local/squid/sbin/squid –h
 4、在初次运行squid之前,或者无论何时你增加了新的cache_dir,你必须初始化cache目录
 #/usr/local/squid/sbin/squid –z
 5、重配置运行中的squid最好的方法是使用squid –k reconfigure命令
 #/usr/local/squid/sbin/squid –k reconfigure
 6、周期性的滚动日志文件,以阻止它们变得太大
 #/usr/local/squid/sbin/squid –k rotate
 7、在前台启动squid,并输出启动过程
 #/usr/local/squid/sbin/squid –N –d1
 8、可以根据这个测试命令来验证squid.conf的语法和配置
 #/usr/local/squid/sbin/squid –k parse

4.Squid优化
 1、日志周期性滚动:(在每月每周每天的4点执行日志周期性滚动)
 0 4 * * * /usr/local/squid3/sbin/squid –k rotate &
 2、Log目录周期性检查:
 0 4 * * 6 /usr/local/squid3/movelog.sh &
 脚本内容如下:movelog.sh
 #!/bin/bash
 SLOG=`du –sh /usr/local/squid3/var/logs/ | awk ‘{print $1}’ | awk –F ‘.’ ‘{print $1}’`
 if [ $SLOG –gt 100 ];then
 if [ ! –d /var/log/squid ];then
 mkdir /var/log/squid
 else
 mv /usr/local/squid3/var/logs/ /var/log/squid
 echo “move squid log to /var/logs” | mail –s liuyaof@fuch.net
 fi
 else
 echo “The size of /usr/local/squid3/var/logs/ is `du –sh /usr/local/squid3/var/logs/ | awk ‘{print $1}’ | awk –F ‘M’ ‘{print $1}’`”
 fi
 3、cache周期性优化
 0 4 * * * /usr/local/squid3/clear_squid_cache.sh gif &
 0 4 * * * /usr/local/squid3/clear_squid_cache.sh swf &
 0 4 * * * /usr/local/squid3/clear_squid_cache.sh gif &
 脚本内容如下:
 #cat clear_squid_cache.sh
 #!/bin/bash
squidcache_path="/usr/local/squid3/var/cache"
squidclient_path="/usr/local/squid3/bin/squidclient"
grep -a -r $1 $squidcache_path/* | strings | grep "http:" | awk -F'http:' '{print "http:"$2;}' | grep [a-zA-Z0-9]$ &gt; cache_list.txt
for url in `cat cache_list.txt`; do
$squidclient_path -m PURGE -p 3128 $url
Done
+++++++++++++++++++++++++++++++++++++++++++++++
 Squid脚本:
 #cat /usr/local/squid3/squid.sh
 #!/bin/bash
 # this script is for Squid
 case "$1" in
 start)
 /usr/local/squid/sbin/squid –s
 sleep 1
 if netstat -tnulp | grep squid ;then echo "squid is start" ;else echo "please check it";fi
 ;;
 stop)
 /usr/local/squid/sbin/squid -k shutdown
 sleep 1
 if ! netstat -tnulp | grep squid ;then echo "squid is stop" ;else echo "please check it";fi
 ;;
 status)
 if netstat -tnulp | grep squid ;then echo "squid is running" ;else echo "squid is stop";fi
 ;;
 reload)
 /usr/local/squid/sbin/squid -k reconfigure
 sleep 1
 if netstat -tnulp | grep squid ;then echo "squid is reload" ;else echo "please check it";fi
 ;;
 restart)
 if netstat -tnulp | grep squid ;then echo "Squid proess is running" ;else
 /usr/local/squid/sbin/squid -k shutdown && /usr/local/squid/sbin/squid -s
 sleep 1
 if netstat -tnulp | grep squid ;then echo "squid is restart" ;else echo "please check it";fi
 fi
 ;;
 esac

5.脚本用法
 Cache脚本用法:
 清除所有Flash缓存(扩展名.swf)
 #/usr/local/squid3/clear_squid_cache.sh swf
 Squid.sh脚本用法:
 /usr/local/squid3/sbin/squid.sh | squid.sh start | stop | status | restart | reload

6.常见问题
 在运行一段时间后,squid变慢了
 减少cache_mem值
 关掉内存池,用该选项:
 memory_pools off
 清掉/usr/local/squid3/var/cache中没用的内存
 定期执行文档中给出的clear_squid_cache.sh脚本
8.实例
 禁止终端用户在任何客户机上下载文件扩展名为mp3、exe、zip和rar类型的文件
 acl badfile urlpath_regex –i \.mp3$ \.exe$ \.zip$ \.rar$ \.rmvb$ \.rm$ \.mp4$ ……
 http_access deny badfile
 禁止客户机IP地址在192.168.2.0子网的所有终端客户在星期一到星期五的9:00到18:00访问Internet资源
 acl clientnet src 192.168.2.0/24
 acl worktime time MTWHF 9:00-18:00
 http_access deny clientnet worktime
 限制IP地址为192.168.1.102的客户机并发连接的最大连接数为5
 acl clientip src 192.168.1.102
 acl clientmaxconn maxconn 5
 http_access deny clientip clientmaxconn
 禁止所有终端用户访问域名包含为google.com的网站
 acl badurl url_regex –i google.com
 http_access deny badurl
 禁止所有终端用户访问域名为www.google.com的网站
 acl baddomain dstdomain –i www.google.com
 http_access deny baddomain

分享到:
评论

相关推荐

    Squid 反向代理配置

    时,其请求会被路由到Squid代理服务器的8080端口进行处理;而访问其他任何域名时,请求将被转发到Web服务器的80端口。 #### 二、DNS配置概述 为了实现上述的目标,首先需要配置DNS。在此实验中,两个域名被设定: 1. **...

    Squid缓存代理服务器的安装与配置(普通代理 透明代理 反向代理)

    Squid缓存代理服务器的安装与配置(普通代理 透明代理 反向代理) Squid缓存代理服务器是一种流行的代理服务器和Web缓存服务器软件,广泛应用于提高Web服务器速度、缓存万维网、域名系统和其他网络搜索、帮助网络...

    详细解析用Squid实现反向代理的方法

    Squid反向代理服务器是实现反向代理的常用方法之一。它可以缓存静态的网页和图片,降低WEB服务器的负载,提高访问速度。 Squid反向代理服务器可以配置为 Cache hierarchy,以便快速地提供 WEB 内容。 Squid反向代理...

    squid反向代理配置例子

    在IT行业中, Squid是一个广泛使用的开源HTTP代理服务器和缓存系统,尤其在构建网络缓存和反向代理服务方面表现突出。本文将详细讲解如何使用Squid进行反向代理配置,通过提供的文件名,我们可以看到有四种不同的...

    Centos中Squid代理服务器安装和基本设置(含反向代理)

    ### Centos中Squid代理服务器安装与基本配置(含反向代理) #### 一、Squid代理服务器概述 Squid是一个广泛使用的代理缓存服务器,它能够为用户提供透明或非透明的代理服务,同时也支持反向代理功能。在教育环境中...

    squid反向代理的学习资料

    有需要的可以学习,可以给您的网站做反向代理加速。

    Squid代理服务器原理

    Squid代理服务器是一款广泛应用的开源HTTP代理缓存软件,其主要作用是提高网络访问速度,减少网络带宽消耗,并且能够实现访问控制和内容过滤等功能。在企业网络环境中,Squid通常作为网络访问的中介,帮助客户端处理...

    利用 squid 反向代理提高网站性能.mht

    一、安装反向代理服务器 1.下载反向代理服务器软件采用squid,下载地址: http://www.squid-cache.org/Versions/v2/2.2/squid-2.2.STABLE5-src.tar.gz 下载后存放在/usr/local/squid/src目录里,文件名是 squid-2.2...

    squid反向代理squid反向代理

    反向代理功能使Squid作为前端服务器,接收客户端请求,并转发到实际的Web服务器。这可以用来负载均衡、隐藏后端架构、提升性能和安全性。通过`http_port`配置,Squid可以监听特定端口并根据`cache_peer`的设置将请求...

    搭建Linux下的Squid代理服务器

    搭建 Linux 下的 Squid 代理服务器 ...搭建 Linux 下的 Squid 代理服务器需要对 Squid 软件的安装、配置和管理进行详细的了解和掌握,同时需要对其提供的访问控制策略进行配置,以保证代理服务器的合法使用。

    squid 2.6做代理服务器反向加速内网web

    本次实验将涵盖 DNS 的安装配置、Squid 2.6 的安装配置以及 Apache Web 服务器的安装配置,并通过 Squid 实现对内网 Web 服务器的反向代理。 #### 实验环境配置 **1. 实验平台** - **RHEL1 (内网 Web 服务器):** ...

    基于Linux网络系统的Squid代理服务器的构建.pdf

    本文主要介绍了三种类型的Squid代理服务器:传统代理、透明代理和反向代理。传统代理需要客户端在浏览器中指定代理服务器的地址和端口号,对于局域网来说,通过代理服务器可以接入Internet,但一般只能访问Web网站和...

    透明代理服务器搭建(linux搭建squid代理)

    1. 安装 Squid 代理服务器:使用 yum install squid 命令安装 Squid 代理服务器软件。 2. 配置外网网卡的网关:编辑 /etc/sysconfig/network 文件,添加 GATEWAY=192.168.155.254 行,以设置外网网卡的网关。 3. ...

    毕业设计(论文)-基于Linux的Squid代理服务器的架设.doc

    论文首先介绍了 Linux 操作系统的优点和 Squid 代理服务器的工作原理,然后详细介绍了 Linux 下 Squid 代理服务器的安装和配置方法。 关键词:Linux、Squid、代理服务器、缓存技术 一、Linux 操作系统的优点 ...

    Squid代理项目-正向和反向详细笔记文档实战案例

    【Squid 代理项目-正向和反向详细笔记文档实战案例】 Squid 是一个广泛使用的开源 HTTP 代理服务器,它支持多种代理模式,包括正向代理、透明代理和反向代理。理解这些代理类型是管理和优化网络流量的关键。 1. **...

    squid缓存服务器的研究

    - **反向代理缓冲服务器**:位于 Web 服务器和 Internet 之间,负责处理所有针对 Web 服务器的请求。通过缓存静态内容减轻原始服务器负担,提高响应速度。 #### 五、Squid 的主要组成部分 - **服务名**:squid - *...

    网络管理与维护 实验报告(九):squid代理服务器.doc

    网络管理与维护 实验报告(九):squid代理服务器.doc

    基于Linux的Squid代理服务器配置.doc

    "基于Linux的Squid代理服务器配置" Squid 代理服务器是一种流行的开源代理服务器软件,广泛应用于 Linux 操作系统中。该软件能够帮助用户更好地管理和控制网络流量,提高网络的安全性和可靠性。 1.1 代理服务器的...

    RHEL5上用LVS和heartbeat实现squid反向代理的高可用性

    ### RHEL5上使用LVS与Heartbeat实现Squid反向代理的高可用性 #### 实验背景及目的 本实验旨在RHEL5(Red Hat Enterprise Linux 5)操作系统上构建一个基于LVS(Linux Virtual Server)和Heartbeat的高可用性Squid...

Global site tag (gtag.js) - Google Analytics