squid是一种用来缓存Internet数据的web缓存代理软件。Squid代理服务器工作在TCP/IP应用层。squid 一般仅缓存静态页面,比如HTML网页、图片、歌曲等,默认不护岸村CGI脚本程序或者PHP\JSP等。squid可以根据HTTP头部信息决定如何缓存数据,即缓存周期。
squid代理的作用:通过缓存的方式为用户提供Web访问加速;对用户的Web访问进行过滤控制;
标准的代理缓冲服务器
一个标准的代理缓冲服务被用于缓存静态的网页到本地网络上的一台主机上(即代理服务器)。要想实现这种方式,必须在每一个内部主机的浏览器上明确指名代理服务器的IP地址和端口号。
透明代理缓冲服务器
透明代理缓冲服务器和标准代理服务器的功能完全相同。代理操作对客户端的浏览器是透明的(即不需指明代理服务器的IP和端口)。透明代理服务器阻断网络通信,并且过滤出访问外部的HTTP(80端口)流量。对于linux操作系统来说,透明代理使用Iptables或者Ipchains实现。透明代理对于ISP(Internet服务器提供商)特别有用。
反向代理缓冲器
可以降低原始WEB服务器的负载。反向代理服务器承担了对原始WEB服务器的静态页面的请求,防止原始服务器过载。它位于WEB服务器和Internet之间,处理所有对WEB服务器的请求,组织了WEB服务器和Internet的直接通信。反向代理结合智能DNS即可实现基本的CDN(内容分发网络)框架,通过DNS视图功能,可以为来自不同地区的DNS请求解析不同的结果返回给客户端。
正向代理对于客户端而言,是个代理人,而反向代理服务对客户端而言就是访问的服务器本身。
正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性减少网络使用率。
反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。另外,反向代理还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时存在于同一个URL空间下。
src:源地址(即客户机IP地址)
dst:目标地址(即服务器IP地址)
srcdomain:源名称(即客户机名称)
dstdomain:目标名称(即服务器名称)
time:一天中的时刻和一周内的一天
url_regex:URL规则表达式匹配
urlpath_regex:URL-path规则表达式匹配,略去协议和主机名
proxy_auth:通过外部程序进行用户验证
maxconn:单一IP的最大连接数
一台Linux作为squid代理服务器
一台Linux作为web网站,并搭建Apache
一台Win10作为客户端访问服务器网站
一、首先开始搭建squid,我们这里使用的是手工编译安装
1、进行文件挂载
mkdir /abc
mount.cifs //192.168.10.122/squid /abc
2、进行解压缩
tar zxvf squid-3.4.6.tar.gz -C /opt/
3、安装环境包
yum install gcc gcc-c++ make -y
4、进行编译
cd /opt/squid-3.4.6/
./configure --prefix=/usr/local/squid \
--sysconfdir=/etc \
--enable-arp-acl \
--enable-linux-netfilter \
--enable-linux-tproxy \
--enable-async-io=100 \
--enable-err-language="Simplify_Chinese" \
--enable-underscore \
--enable-poll \
--enable-gnuregex
编译安装
make && make install
5、方便管理,可以创建软连接
ln -s /usr/local/squid/sbin/* /usr/local/sbin/
6、创建用户 squid
useradd -M -s /sbin/nologin squid
chown -R squid.squid /usr/local/squid/var/
//授权
7、修改配置文件
vim /etc/squid.conf
添加以下代码:
http_access allow all
cache_effective_user squid //添加 指定程序用户
cache_effective_group squid //添加 指定账户基本组
8、检查
squid -k parse //检查配置文件语法
squid -z //初始化缓存目录
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 //便于service识别
chkconfig --level 35 squid on //设置开机自启动
10、启动服务
service squid stop
service squid start
Web服务器 | 192.168.100.131 |
---|---|
客户机 | 192.168.100.50 |
代理服务器 | 192.168.100.141 |
一、修改配置文件
vim /etc/squid.conf
cache_mem 64 MB //设定缓存空间的大小
reply_body_max_size 10 MB //允许用户下载的最大文件大小
maximum_object_size 4096 KB //允许保存到缓存空间的最大对象大小
iptables -F #清楚所有防火墙规则
setenforce 0
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT //允许目标端口3128做转发
三、在客户端设置代理服务
通过浏览器访问Web服务器,由于设置了代理,访问网站是通过代服务器实现的,可以通过看Web服务器的日志文件
代理服务器需要配置双网卡:ens33 ens36
角色 | IP |
---|---|
Squid代理服务器 | 内网:192.168.100.1外网:12.0.0.1 |
Web服务端 | 12.0.0.12 |
客户机 | 192.168.100.50 |
一、用户取消代理服务器局域网设置
二、配置代理服务器
(1)、开启路由转发功能
echo "1" > /proc/sys/net/ipv4/ip_forward
(2)、修改配置文件并修监听地址
vim /squid.conf
http_port 192.168.100.1:3128 transparent
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
//端口重定向到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 //开发3128端口
(4)、重启服务
service squid restart
三、实验结果认证
1、在客户机浏览器上访问 web 服务器网站
2、在web端的日志文件中查看是哪个IP地址访问的
可以看出是 squid代理服务器的外网卡的ip地址。