2、squid代理服务器

squid代理服务器

squid简介

# 定义:
	# 一款缓存服务的守护进程
# 主程序:/usr/sbin/squid
# 主配置文件: /etc/squid/squid.conf
# 默认监听端口: TCP 3128
# 默认访问日志:/var/log/squid/access.log

squid 原理

在这里插入图片描述

# 用户访问squid代理服务器,代理服务器查询自己的缓存,如果有则返回数据给用户;如果没有,则代理服务器向后端真实服务器请求,后端真实服务器返回数据后,将数据发送给用户并记录缓存中,当有下次访问数据时,提供给用户;此过程是两个tcp连接的过程。

squid工作类型

代理服务器基本类型:
    传统代理:适用于Internet,需明确指定服务端,
            针对内网用户提供缓存,简单需要用户在客户端进行配置
    透明代理:适用于共享上网网关,不需指定服务端
            通过防火墙规则,使用户无需配置客户端
    反向代理:位于网站前端,代理web接受客户端的请求
            支持RR算法
            支持同类型服务器的相互数据转换

squid简介

软件包:squid-3.xxxx  
系统服务:squid
主程序:/usr/sbin/squid
主配置文件:/etc/squid/squid.conf
默认监听端口:TCP 3128
默认访问日志:/var/log/squid/access.log

5
2   4  5  6    3
1s
	hash tables     #相当于目录
	digest tables   #相当于对目录的介绍
    #两个目录便于寻找数据在哪个目录下,反馈给用户
常见参数:
    http_port 3128  #指定端口
    access_log /var/log/squid/access.log squid #访问日志
    cache_mem 64 MB  #当前进程使用的内存大小
    cache_dir ufs /var/spool/squid 100 16 256 
    #当前的缓存目录 采用的文件系统  放在、、目录下 当前目录最大使用的存储空间 
    默认MB  一级目录的个数是16个,二级目录的个数是256个 
    visible_hostname proxy.benet.com #指定当前可用主机名
    dns_testnames www.google.com www.163.com #探测自己网络连通性
    maximum_object_size 4096 KB # 最大缓存对象的大小
    reply_body_max_size  10 MB # 请求当前的最大大小

ACL( Access Control List ,访问控制列表):

根据源地址、目标URL、文件类型等定义列表
	acl  列表名称  列表类型  列表内容 ... 
针对已定义的acl列表进行限制
	http_access  allow或deny  列表名称 ... 

[root@localhost ~]# vi /etc/squid/squid.conf
……
acl a1 src 0.0.0.0/0.0.0.0
http_access deny a1
[root@localhost ~]# service squid reload

支持列表类型

src    			    源地址
dst   		        目标地址
port  			    目标端口
dstdomain    		目标域
time    			访问时间
maxconn    			最大并发连接
url_regex  			目标URL地址
					www.baidu.com
Urlpath_regex   	整个目标URL路径
					http://www.baidu.com/1.jpeg

squid实验的构建

传统代理方式

在这里插入图片描述

实验环境

三台虚拟机(自定义模式)
内网用户端:192.168.66.11
squid:内网:192.168.66.12
       公网:10.10.10.12
公网端: 10.10.10.13

# squid去ping下内网和公网看看能不能通

外网(公网)机器配置

yum -y install httpd
service httpd start
chkconfig httpd on 
echo "www.hongfu.com" >> /var/www/html/index.html

#抓包命令
tcpdump -nA port 80
用内网访问公网  curl 10.10.10.13  然后再公网使用抓包命令(先抓包,后访问)

squid 网关机器

vim /etc/sysctl.conf #开启路由转发
    net.ipv4.ip_forward = 1
sysctl -p

yum -y install squid
vim /etc/squid/squid.conf
    http_port 3128
    visible_hostname www.hongfu.com #加主机名(不加会报错,不过没影响)
    cache_dir ufs /var/spool/squid 100 16 256 #取消注释初始化缓存目录
    service squid start
    service squid reload

内网机器

echo "GATEWAY=192.168.190.112" >> /etc/sysconfig/network-scripts/ifcfg-eth0
service network restart
route -n

测试

#windows浏览器测试(内网端init5去图形化界面操作)
浏览器——编辑——首选项——高级——网络——设置——手动代理——网关内网IP——3128   下面打勾
#11机器操作字符界面访问方式
vim /etc/profile
    HTTP_PROXY=HTTP://192.168.66.12:3128
    export HTTP_PROXY

source /etc/profile
echo $HTTP_PROXY #查看变量

yum -y install elinks
elinks 10.10.10.13

透明代理方式

在这里插入图片描述

实验环境

三台虚拟机(自定义模式)
内网:192.168.190.111
squid网关:内:192.168.190.112
           外:10.10.10.12
外网:10.10.10.13

内网机器

# router add default gw 192.168.190.112

echo "GATEWAY=192.168.190.112" >> /etc/sysconfig/network-scripts/ifcfg-eth0
service network restart
route -n

网关服务器

yum -y install squid

vim /etc/squid/squid.conf
  http_port 192.168.190.112:3128 transparent
  visible_hostname www.hongfu.com
  cache_dir ufs /var/spool/squid 100 16 256 #取消注释初始化缓存目录​
service squid start

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

#​添加防火墙规则
 service iptables start
 chkconfig iptables on
 iptables -F # 清空防火墙规则
iptables -t nat -A PREROUTING -i eth0(内网网卡) -s 192.168.190.0/255.255.255.0 -p tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -L #查看nat地址表
service iptables save
chkconfig iptables on

外网服务器

yum -y install httpd
service httpd start
echo "www" >> /var/www/html/index.html​
curl localhost

测试或下载限速测试

#内网机测试
curl 10.10.10.13
#关闭httpd再次查看,有说明存在缓存
#透明模式解决了客户端需要配置的问题
#外网服务器配置
cd /var/www/html/
dd if=/dev/zero of=1.txt bs=1M count=15
du -sh 1,txt  #查看文件
wget 10.10.10.13/1.txt
#squid服务器配置
vim /etc/squid/squid.conf
  reply_body_max_size 10 MB #限制10 MB一下
/etc/init.d/squid reload
#内网客户端下载测试  
  wget 10.10.10.13/1.txt

反向代理

实验环境

四台虚拟机:(轮训)
内网服务器:1:192.168.190.111
           2:192.168.190.112
squid网关服务器:
            192.168.190.113
            10.10.10.13
公网客户端:10.10.10.14

两台内网服务器

#router add default gw 192.168.1.1
#两台内网服务器分别做一下操作
echo "GATEWAY=192.168.190.113" >> /etc/sysconfig/network-scripts/ifcfg-eth0
service network restart
route -n
yum -y install httpd
service httpd start
chkconfig httpd on

cd /var/www/html/
echo "www1.html-11" >> index1.html
echo "www2.html-11" >> index2.html

curl localhost
#第二台httpd服务器
cd /var/www/html/
echo "www1.html-12" >> index1.html
echo "www2.html-12" >> index2.html

网关服务器

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

yum -y install squid
vim /etc/squid/squid.conf
	http_access allow all
    http_port 10.10.10.13:80  vhost
	visible_hostname www.hongfu.com
    cache_dir ufs /var/spool/squid 100 16 256 #取消注释初始化缓存目录
	cache_peer 192.168.190.111  parent 80 0  originserver round-robin
	cache_peer 192.168.190.112  parent 80 0  originserver round-robin

/etc/init.d/squid start

/etc/init.d/squid reload

公网客户端

#测试,是否访问到
curl 10.10.10.13/index1.html
curl 10.10.10.13/index2.html
#关闭httpd服务,测试缓存
curl 10.10.10.13/index1.html
curl 10.10.10.13/index2.html

ACL访问控制

环境准备

在3配置好的反向代理模式下,并修改一下内容
将公网客户端机器的ip改为30.30.30.14
重启网卡
  网关服务器
  把eth1 改成 30.30.30.13
vim /etc/squid/squid.conf
    http_port 30.30.30.13:80  vhost
/etc/init.d/squid reload
service squid reload
#用浏览器测试结果,不能访问到访问被拒绝。
#想要30网段也能够正常访问,做下面操作 

修改配置文件

vim /etc/squid/squid.conf
    #根据源地址、目标URL、文件类型等定义列表
    acl localnet src 10.0.0.0/8     # RFC1918 possible internal network
    acl localnet src 172.16.0.0/12  # RFC1918 possible internal network
    acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
    acl localnet src 30.30.30.0/24    #添加公网网段,使其能够访问30.0.0.0/8
/etc/init.d/squid reload
#添加并重载后即可访问。
    
    如果把添加的放到上面
   acl wan src 30.0.0.0/24 
   拒绝
   http_access deny all #注释掉
   最后一行改成  http_access deny localhost
   能访问
   
   
{  acl 列表名称  列表类型  列表内容
 
   #列表类型 
    src    			    源地址
    dst   		        目标地址
    port  			    目标端口
    dstdomain    		目标域
    time    			访问时间
    maxconn    			最大并发连接
    url_regex  			目标URL地址	www.baidu.com
    Urlpath_regex   	整个目标URL路径
    			 		http://www.baidu.com/1.jpeg
  
      #针对已定义的acl列表进行限制
    http_access allow manager localhost
    http_access deny manager
    http_access allow localnet
    http_access allow localhost 
#   http_access  allow或deny  列表名称 ... 
}

在这里插入图片描述

ACL规则

 #如果之定义acl范围不做http_access动作,那么默认放行
 acl test src 30.30.30/24    # RFC1918 possible internal network
#(浏览器测试)
 30.30.30.14、index.html
  
#如果之定义acl范围不做http_access动作,并且关闭了http_access deny all,那么
    #当前acl范围会根据当前配置文件中的最后一行http_access做反向操作
 http_access deny all #注释掉
 #(浏览器测试)
  30.30.30.14、index.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值