实验环境
三台虚拟机:
squid,DL服务器:20.0.0.50
web服务器:20.0.0.60
win10客户机(传统模式):20.0.0.11
win10客户机(透明模式):192.168.10.10
实验步骤
[root@squid opt]# tar zxvf squid-3.4.6. tar. gz
[root@squid opt]# cd /squid-3.4.6
[root@squid 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
[root@squid squid-3.4.6]# make && make install
[root@squid squid-3.4.6]# ln -s /usr/local/squid/sbin/* /usr/local/sbin/
[root@squid squid-3.4.6]# useradd -M -s /sbin/nologin squid
[root@squid squid-3.4.6]# chown -R squid.squid /usr/local/squid/var/
[root@squid squid-3.4.6]# vim /etc/squid.conf
56行 http_access allow all
57行 #http_access deny all
61行 cache_effective_user squid
62行 cache_effective_group squid
cache_effective_user squid #添加指定程序用户
cache_effective_group squid #添加指定账号基木组
[root@squid squid-3.4.6]# squid -k parse //检查配置文件语法
[root@squid squid-3.4.6]# squid -z //初始化缓存目录
[root@squid squid-3.4.6]# squid //启动服务
[root@squid squid-3.4.6]# cd /etc/init.d/
[root@squid 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 -anpt |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 -anpt |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
[root@squid init.d]# chmod +x squid
[root@squid init.d]# chkconfig --add squid
[root@squid init.d]# chkconfig --level 35 squid on
传统DL服务器
#########################传统DL服务器#########################
[root@squid init.d]# vim /etc/squid.conf
##前面三个我们是已经有的
##直接在端口下面加上后面三行
52行 http_access allow all
53行 http_access deny all
60行 http_port 3128
cache_mem 64 MB
reply_body_max_size 10 MB
maximum_object_size 4096 KB
-----------------------------------------------------------------------
cache_mem 64 MB #指定缓存功能所使用的内存空间大小,便于保持访问较频繁的WEB对象,容量最好为4的倍数,单位MB
reply_body_max_size 10 MB #允许用户下载的最大文件大小,以字节为单位。默认设置0表示不进行限制
maximum_object_size 4096 KB #允许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转到用户端
------------------------------------------------------------------------
[root@squid init.d]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
##设置防火墙规则 指定规则链-I INPUT(规则链要大写) -p tcp(指定跑的协议) -dport 3128(指定端口) -j ACCEPT(指定操作)
[root@squid init.d]# service squid reload
20.0.0.60 web服务器:
[root@web ~]# yum -y install httpd
在windows系统中开启浏览器访问HTTP服务器
[root@web ~]# cat /var/log/httpd/access_log
查看web服务器访问日志access.log是Windows地址访问的
点击浏览器的设置-->高级-->系统-->打开您计算机的DL设置-->手动设置DL-->输入DL服务器的IP和端口3128-->保存
[root@web ~]# cat /var/log/httpd/access_log
查看web服务器访问日志access.log是DL服务器地址访问的
透明DL服务器
##############################设置透明代理#########################
20.0.0.50
配置双网卡,ens36设置为仅主机模式
[root@squid opt]# cd /etc/sysconfig/network-scripts/
[root@squid network-scripts]# cp -p ifcfg-ens33 ifcfg-ens36
[root@squid network-scripts]# vim ifcfg-ens36
把名字从ens33改成ens36
删除UUID
IP地址设置为192.168.10.1
子网掩码255.255.255.0
不要网关
不要DNS
[root@squid network-scripts]# systemctl restart network
做路由转发
[root@squid network-scripts]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1
[root@squid network-scripts]# sysctl -p
################
20.0.0.60 web服务器
[root@web ~]# route add -net 192.168.10.0/24 gw 20.0.0.50
######
开一台win10虚拟机网络适配器选择仅主机模式IP设置为192.168.10.10
##############
20.0.0.50 squid,DL服务器
[root@squid ~]# vim /etc/squid.conf
http_port 192.168.100.1:3128 transparent
[root@squid ~]# service squid re1oad
[root@squid ~]# iptables -F
[root@squid ~]# iptables -t nat -I PREROUTING -i ens36 -s 192.168.10.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
[root@squid ~]# iptables -t nat -I PREROUTING -i ens36 -s 192.168.10.0/24 -p tcp --dport 443 -j REDIRECT --to 3128
[root@squid ~]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
win10虚拟机(如果之前做了传统模式先把DL服务关闭然后)访问web服务器20.0.0.60,多刷新几次
然后去web服务器
[root@web ~]# cd /var/log/httpd/
[root@web httpd]# cat access_log
会发现访问日志都是20.0.0.50的squid,DL服务器访问的