一、缓存代理概述
1.缓存代理概述
作为应用层的代理服务软件,Squid主要提供缓存加速和应用层过滤控制的功能。
2.代理的工作机制
当客户机通过代理来请求Web页面时,指定的代理服务器会检查自己的缓存,如果缓存中已经存在客户机需要访问的页面,则之间将缓存中的页面内容反馈给客户机;若代理服务器中的缓存中没有客户机需要访问的页面,则由代理服务器向Internet发送访问请求,再将获得的页面数据保存到缓存中,并发送给客户机.
二、手工编译安装squid
1.解压缩squid安装文件到/opt
tar zxvf squid-3.5.28.tar.gz -C /opt
2.配置squid的编译选项
cd /opt/squid-3.5.28/
[root@promote squid-3.5.28]# ./configure --prefix=/usr/local/squid \ //指定安装目录
> --sysconfdir=/etc \ //单独将配置文件修改到其他目录
> --enable-arp-acl \
> --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
3.将squid程序命令创建软链接到系统命令下
ln -s /usr/local/squid/sbin/* /usr/local/sbin/
4.添加用户
useradd -M -s /sbin/nologin squid
5.更改所属主与所属组
chown -R squid.squid /usr/local/squid/var/
6.编辑squid配置文件,
vim /etc/squid.conf
cache_effective_user squid #添加 指定程序用户
cache_effective_group squid #添加 指定账号基本组
coredump_dir /usr/local/squid/var/cache/squid
squid -k parse //检查配置文件语法
squid -z //初始化缓存目录
squid //启动服务
查看服务是否开启
netstat -natp | grep squid
tcp6 0 0 :::3128 :::* LISTEN 84346/(squid-1)
7.创建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 //给脚本添加可执行权限
8.添加为系统服务并设置开机自启动
chkconfig --add squid
chkconfig --level 35 squid on
此时我们可以使用squid脚本来启动、停止、重启和重载suqid服务器了。
三、传统代理构建
传统代理案例环境
角色 | ip地址 | 安装服务 |
---|---|---|
squid服务器 | 192.168.174.209 | suqid服务 |
httpd服务器 | 192.168.174.208 | httpd服务 |
win7测试机 | 192.168.174.129 | null |
1.squid代理服务器的配置
(1)编辑suqid.conf 配置文件
cache_mem 64 MB #指定缓存功能所使用的内存空间大小,便于保持访问较频繁的WEB对象,容量最好为4的倍数,单位为MB,建议设为物理内存的1/4
reply_body_max_size 10 MB #允许用户下载的最大文件大小,以字节为单位。默认设置0表示不进行限制
maximum_object_size 4096 KB #允许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转发给用户
重启squid服务
service squid restart
正在关闭 squid...
正在启动 squid...
(2)添加防火墙策略
[root@promote init.d]# iptables -F
[root@promote init.d]# setenforce 0
[root@promote init.d]# iptables -I INPUT -p tcp --dport 3218 -j ACCEPT
重载suqid服务
[root@promote init.d]# service squid reload
2.在http的服务器上安装httpd服务
(1)关闭防火墙
[root@promote ~]# systemctl stop firewalld.service
[root@promote ~]# setenforce 0
(2)安装httpd
[root@promote ~]# yum install httpd -y
(3)开启httpd服务
[root@promote ~]# systemctl start httpd.service
[root@promote ~]# netstat -natp | grep 80
tcp6 0 0 :::80 :::* LISTEN 7975/httpd
3.win7客户机上进行代理配置
(1)在Ie浏览器中,选择“工具”一>“Internet 选项”,弹出“Internet选项”对话框,
在“连接”选项卡中的“局域网(LAN)设置”选项组中单击“局域网设置”按钮,弹出“局域网(LAN)设置”对话框,
勾选"为LAN使用代理服务器",在地址栏框中输入squid代理服务器的地址,端口为3128
4.查看httpd服务器访问日志的新增记录
cd /etc/httpd/logs
vim access_log
四、构建透明代理
透明代理案例环境 |
角色 | ip地址 | 安装服务 |
---|---|---|---|
squid服务器 | ens32 192.168.100.1 ens34 12.0.0.1 | suqid服务 | |
httpd服务器 | 12.0.0.10 | httpd服务 | |
win7测试机 | 192.168.100.100 | null |
1.squid服务器配置
(1)编辑squid.conf配置文件
http_port 192.168.100.1:3128 transparent
重载服务
service squid reload
(2)添加防火墙策略
[root@localhost ~]# iptables -t nat -I PREROUTING -i ens32 -s 192.168.100.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
[root@localhost ~]# iptables -t nat -I PREROUTING -i ens32 -s 192.168.100.0/24 -p tcp --dport 443 -j REDIRECT --to 3128
[root@localhost ~]# iptables -I INPUT -p tcp --dport 3218 -j ACCEPT
2.win7测试机浏览器配置