一、Squid 代理服务器
Squid 主要提供缓存加速、应用层过滤控制的功能。
代理的工作机制
1、代替客户机向网站请求数据,从而可以隐藏用户的真实IP地址。
2、将获得的网页数据(静态 Web 元素)保存到缓存中并发送给客户机,以便下次请求相同的数据时快速响应。
Squid 代理的类型
传统代理:适用于Internet,需在客户机指定代理服务器的地址和端口。
透明代理:客户机不需指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将Web访问重定向给代理服务器处理。
反向代理:如果 Squid 反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端;否则反向代理服务器将向后台的 WEB 服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使用。
二、Squid 代理安装1 [编译安装Squid] 2 #安装依赖环境 3 yum -y install gcc gcc-c++ make 4 #上传软件包squid-3.5.27. tar到/opt目录下 5 cd /opt 6 #解压 7 tar zxvf squid-3.5.27.tar.gz 8 #配置 9 cd squid-3.5.27/ 10 ./configure --prefix=http://www.likecs.com/usr/local/squid \ 11 --sysconfdir=http://www.likecs.com/etc \ 12 --enable-arp-acl \ 13 --enable-linux-netfilter \ 14 --enable-linux-tproxy \ 15 --enable-async-io=100 \ 16 --enable-err-language="Simplify_Chinese" \ 17 --enable-underscore \ 18 --enable-poll \ 19 --enable-gnuregex 20 21 # 编译安装 22 make && make install 23 24 ----------------------------------------------- 25 ####_上述脚本解释### 26 27 ./configure --prefix=http://www.likecs.com/usr/local/squid 28 ##安装目录 29 --sysconfdir=http://www.likecs.com/etc/ 30 ##单独将配置文件修改到/etc目录下 31 -- enable-arp-acl 32 ##可在ACL中设置通过MAC地址进行管理,防止IP欺骗 33 --enable-1inux-netfilter 34 ##使用内核过滤 35 --enable-linux-tproxy 36 ##支持透明模式 37 --enable-async-io=100 38 ##异步I/O,提升储存性能,值可修改 39 --enable-err-language="Simplify_Chinese" 40 ##错误信息的显示语言 41 --enable-underscore 42 ##允许URL中有下划线 43 -enable-poll 44 ##使用Poll () 模式,提升性能 45 --enable-gnuregex 46 ##使用GNU正则表达式 47 ------------------------------------------- 48 49 50 ln -s /usr/local/squid/sbin/* /usr/local/sbin 51 ##创建链接文件,优化路径 52 useradd -M -s /sbin/nologin squid 53 ###创建程序用户、组 54 chown -R squid:squid /usr/local/squid/var/ 55 ##改变目录属主 56 57 58 [修改Squid的配置文件] 59 vi /etc/squid.conf 60 #放在http access deny all 61 之前,允许任意客户机使用代理服务,控制规则自.上而下匹配 62 vim /etc/squid.conf 63 ...... 64 -56行--插入-- 65 http_access allow all 66 #放在http access deny all之前,允许任意客户机使用代理服务,控制规则自.上而下匹配 67 http_access deny all 68 http_port 3128 69 #用来指定代理服务监听的地址和端口(默认的端口号为3128) 70 -----61行--插入------ 71 cache_effective_user squid 72 #添加,指定程序用户,用来设置初始化、运行时缓存的账号,否则启动不成功 73 cache_effective_group squid 74 #添加,指定账号基本组 75 coredump_dir /usr/local/squid/var/cache/squid 76 #指定缓存文件目录 77 --------------------------------------------- 78 ##上述脚本解释 79 ##配置硬盘缓存,打开#.缓存目录512M,其中一级目录16个,二级256个 80 cache_effective_user squid 81 cache_effective_group squid 82 --------------------------------------------- 83 84 85 squid -k parse 86 ##检查配置文件 87 squid -k rec 88 ##重新加载配置文件 89 squid -zX 90 ##初始化缓存目录 91 92 squid 93 ##启动squid服务 94 95 netstat -anpt | grep squid 96 ##确认squid服务处于正常监听状态 97 tcp6 0 0 :::3128 :::* LISTEN 98 6699/ (squid-1) 99 100 [编写squid服务脚本] 101 ------------------------------------------------- 102 #!/bin/bash 103 #chkconfig: 2345 90 25 104 PID="/usr/local/squid/var/run/squid.pid" 105 CONF="/etc/squid.conf" 106 CMD="/usr/local/squid/sbin/squid" 107 108 case "$1" in 109 start) 110 netstat -natp | grep squid &> /dev/null 111 if [ $? -eq 0 ] 112 then 113 echo "squid is running" 114 else 115 echo "正在启动 squid..." 116 $CMD 117 fi 118 ;; 119 stop) 120 $CMD -k kill &> /dev/null 121 rm -rf $PID &> /dev/null 122 ;; 123 status) 124 [ -f $PID ] &> /dev/null 125 if [ $? -eq 0 ] 126 then 127 netstat -natp | grep squid 128 else 129 echo "squid is not running" 130 fi 131 ;; 132 restart) 133 $0 stop &> /dev/null 134 echo "正在关闭 squid..." 135 $0 start &> /dev/null 136 echo "正在启动 squid..." 137 ;; 138 reload) 139 $CMD -k reconfigure 140 ;; 141 check) 142 $CMD -k parse 143 ;; 144 *) 145 echo "用法:$0{start|stop|status|reload|check|restart}" 146 ;; 147 esac 148 ---------------------------------------------- 149 150 151 chmod +x /etc/init.d/squid 152 chkconfig --add squid 153 chkconfig --squid on