緩存代理概述: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
透明代理完成!