缓存代理概述:css
做为应用层的代理服务软件,squid主要提供缓存加速和应用层过滤控制的功能。linux
代理的基本类型:c++
传统代理:也就是普通的代理服务,首先必须在客户机的浏览器、聊天工具、下载软件等程序中手动设置代理服务器的地址和端口,而后才能使用代理服务来访问网络。对于网页浏览器,访问网站时的域名解析请求也会发送给指定的代理服务器。vim
透明代理:提供与传统代理相同的功能和服务,其区别在于客户端不须要指定代理服务器的地址和端口,而是经过默认路由、防火墙策略将Web访问重定向,实际上仍然交给代理服务器来处理。重定向的过程对客户机来讲是“透明”的,用户甚至不知道本身在使用代理服务,因此称为“透明代理”。浏览器
示意图缓存
传统代理操做步骤bash
解压安装服务器
yum install gcc gcc-c++ make –y网络
tar zxvf squid-3.5.23.tar.gz -C /opt/async
cd /opt/squid-3.5.23/
./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-gnuregexmake && make install
优化命令与用户
ln -s /usr/local/squid/sbin/* /usr/local/sbin/
useradd -M -s /sbin/nologin squid
chown squid.squid /usr/local/squid/var/
chown -R squid /usr/local/squid/var/
编辑配置文件
vim /etc/squid.conf
http_access allow all //容许访问
http_port 3128
cache_effective_user squid //添加指定程序用户
cache_effective_group squid //添加指定帐号基本组squid -z 缓存目录初始化
启动该优化脚本
cd /etc/init.d/
vim squid#!/bin/bash
# chkconfig: 2345 92 25
# description: Squid Service Control Script
CMD="/usr/local/squid/sbin/squid"
PID="/usr/local/squid/var/run/squid.pid"
CONF="/etc/squid.conf"
case "$1" in
start)
netstat -ntap | 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 -ntap | 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 "Usage: $0 {start|stop|restart|reload|check|status}"
exit 1
esac
加权启动
chmod +x squid
chkconfig --add squid
chkconfig --level 35 squid on
squid
配置传统代理服务器
vim squid
http_port 3128
cache_mem 64 MB
reply_body_max_size 10 MB
maximum_object_size 4096 KB
配置防火墙规则
iptables -F
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
搭建一个WEB服务器
安装一个HTTP便可。
在客户机测试
客户机操做访问操做
在WEB服务器上的访问日志查看访问者的IP,会发现访问者的IP是squid服务器的地址,而不是 本机的。
pwd
/var/log/httpd
cat access_log192.168.137.13 - - [19/Sep/2018:16:08:11 +0800] "GET /noindex/css/fonts/ExtraBold/OpenSans-ExtraBold.eot? HTTP/1.1" 404 248 "http://192.168.137.14/" "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)"
传统代理成功!
透明代理步骤
关闭客户机IE浏览器中的代理服务器
修改双网卡
ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.100.1 netmask 255.255.255.0 broadcast 192.168.100.255
inet6 fe80::daad:16d9:7747:d3a0 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:ea:24:6e txqueuelen 1000 (Ethernet)
RX packets 261 bytes 24669 (24.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 209 bytes 17020 (16.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 12.0.0.1 netmask 255.255.255.0 broadcast 12.0.0.255
inet6 fe80::dd93:5e86:da72:9d0c prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:ea:24:78 txqueuelen 1000 (Ethernet)
RX packets 424 bytes 35636 (34.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 47 bytes 6579 (6.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
开启转发功能
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -t nat -F
setenforce 0
修改配置文件
vim /etc/squid.conf
http_port 192.168.100.1:3128 transparent
防火墙配置
iptables -t nat -I PREROUTING -i ens33 -s 192.168.100.0/24 -p tcp --dport 80 -j REDIRECT --to 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 3218 -j ACCEPT
透明代理完成!