初学者的squid传统代理和透明代理实验

squid传统代理和透明代理实验

安装代理服务器

安装并编译

yum -y install gcc gcc-c++

tar zxvf squid-3.4.6.tar.gz -C /opt/

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

权限配置

ln -s /usr/local/squid/sbin/* /usr/local/sbin/

useradd -M -s /sbin/nologin squid

chown -R squid.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 -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 -ntap | grep suqid &> /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 "用法:$0{start|stop|status|reload|check|restart}"
	;;
esac

授权并启动

chmod +x squid 

chkconfig --add squid

service squid stop 

service squid start 

chkconfig --level 35 squid on

传统代理服务器

修改配置文件

vim /etc/squid.conf
修改如下
http_access deny all
http_access allow all
http_prot 3128
cache_mem 64 MB
reply_body_max_size 10 MB
maximum_object_size 4096 KB

关闭服务

iptables -F
iptables -t nat -F
setenforce 0

添加防火墙规则

iptables -I INPUT -p tcp --dport 3128 -j ACCEPT

启动

service squid reload

netstat -ntap | grep 3128

接下来,我们打开一台新的机器,web2

yum -y install httpd 
systemctl start httpd 

最后验证

打开一台W10机器,设置搜索代理,在手动设置代理中,开启【使用代理服务器】,地址就是第一台机器的地址,我这边是192.168.209.131 端口:3128

接下来,我们打开网页,访问192.168.209.132(这个是刚刚打开的新机器web2的地址)


透明代理

添加网卡

cd /etc/sysconfig/network-scripts
cp -p ifcfg-ens33 ifcfg-ens36
vim ifcfg-ens36

ens33改为ens36

IPADDR=192.168.10.1
NETMASK=255.255.255.0

service network restart

ifconfig

添加转发

vim /etc/sysctl.conf
net.ipv4.ip_forward=1

sysctl -p

修改配置文件

vim /etc/squid.conf

修改如下:
http_port 192.168.10.1:3128 transparent

squid -k parse

添加防火墙规则,并重启服务

iptables -t nat -I PREROUTING -i ens36 -s 192.168.10.0/24 -p tcp --dport 80 -j REDIRECT --to 3128

iptables -t nat -I PREROUTING -i ens36 -s 192.168.10.0/24 -p tcp --dport 443 -j REDIRECT --to 3128

service squid stop
service squid start

ACL访问控制

接下来,我们回到传统模式下

进行一个简单的ACL控制

vim /etc/squid.conf 

acl aaa src 192.168.209.250/32   ///这个IP是win机的IP地址,我这边用于测试,禁止这个IP访问///


http_access deny aaa

重启

service squid restart

squid日志分析

环境安装


yum install -y gd gd-devel pcre pcre-devel



mkdir /usr/local/sarg



tar zxvf sarg-2.3.7.tar.gz -C /opt/



cd /opt/sarg-2.3.7



./configure --prefix=/usr/local/sarg --sysconfdir=/etc/sarg --enable-extraprotection



make && make install


修改配置文件

cd /etc/sarg
修改如下
vim sarg.conf

修改如下

7     access_log /usr/local/squid/var/logs/access.log      //指定访问日志文件
25    title "Squid User Access Reports"                                  //网页标题
120  output_dir /var/www/html/squid-reports               //报告输出目录
178   user_ip no                                                                 //   使用用户名显示

184 topuser_sort_field BYTES reverse                                   // TOP排序中连接次数,访问字节,降序佩列,升序是 normal 
190 #user_sort_field BYTES reverse             //用户访问记录,连接此时,访问字节按降序排序
206  exclude_hosts /usr/local/sarg/noreport    // 不计入排序的站点列表文件
257 overwrite_report no                             //同名日志是否覆盖
289 mail_utility mailq.pstfix                             //发送邮件报告命令
434 charset UTF-8                                      //使用字符集
518 weekdays 0-6                                       //top 配合的星期周期
525 hours 0-23                                              //top排行的时间周期
633 www_document_root /var/www/html          //网页根目录
添加不计入站点的文件,添加的域名将不被显示在排序中
touch /usr/local/sarg/noreport
创建软连接
ln -s /usr/local/sarg/bin/sarg /usr/local/bin/
安装httpd
yum install httpd -y 
systemctl start httpd
systemctl stop firewalld

setenforce 0
启动sarg
sarg

打开网页,访问192.168.209.131/squid-reports

周期性执行每天生成报告
sarg -l /usr/local/squid/var/logs/access.log -o /var/www/html/squid-reports/ -z -d $(date -d "1 day ago" +%d/%m/%Y)-$(date +%d/%m/%Y)



接下来,我们再开启一台机器,做web2

开启后

yum -y install httpd 

关闭服务

setenforce 0

iptables -F

分别在两台web机器编写一个网页测试

echo "this is web1" > /var/www/html/index.html

echo "this is web2" > /var/www/html/index.html

回到squid机器

编辑配置文件
vim /etc/squid.conf

把3128接口的命令注释掉,添加如下

http_port 192.168.209.131:80 accel vhost vport
cache_peer 192.168.209.132 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1

cache_peer 192.168.209.133 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
cache_peer_domain web1 web2 www.yun.com
接下来,关键一步,要关闭squid上的httpd服务,否则会发生端口冲突
systemctl stop httpd
然后重启squid服务
service squid restart

接下来,我们到win机器上,这边我们就不添加dns解析了

我们带来C盘,找到system32,打开drivers里面的etc,找到hosts文件

首先,右键——打开方式——文本文档

在末尾添加:192.168.209.131 www.yun.com ;保存退出

然后,右键属性——安全栏中——Users…——编辑——勾选完全控制——确定

并且我们找到代理中,将之前的3128端口改成80端口,保存退出

打开网页,访问www.yun.com,进行刷新访问,轮询访问web1,web2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值