代理--Squid

目录

一、Squid配置信息

二、正向代理

1.标准代理服务器

(1)环境准备

(2)配置代理

 (3)配置网页服务

(4)不使用代理访问测试

a.客户机打开浏览器访问

b.观察日志

(5)使用代理访问测试

(6)代理服务器查看缓存

2.透明代理缓冲服务器

三、反向代理

1.先配置两个内网的机器配置网关

2.代理服务器(网关)

 3.测试机配置网关,访问代理服务器外网网关ip,测试

四、访问控制

1.ACL元素类型

2.ACL格式

3.访问条目

4.访问控制实例


一、Squid配置信息

软件包:    squid

服务:     squid

配置文件:   /etc/squid/squid.conf

端口号:    TCP 3128

默认访问日志文件:  /var/log/squid/access.log

说明:Squid 在3.0 版本后使用C语言进行重构,效率大大提升,Centos6标配Squid 3.0 以上版本

二、正向代理

1.标准代理服务器

(1)环境准备

三台虚拟机,一台代理服务器,一台客户端(图形化),一台网页服务器

(2)配置代理

#代理服务器,添加网卡,10网段和11网段

#更改网段,ip addr 查看需要添加的网卡名,添加的新网卡里删除UUID,更改网卡名和网段。
vim /etc/sysconfig/network-scrips/ifcfg-ens33

#重启网卡
systemctl restart network

#开启路由转换
vim/etc/sysctl.conf
    net.ipv4.ip_forward=1
sysctl -p
#配置squid代理
yum -y install squid

#文件里为可以识别的文件后缀
vim /etc/squid/mime.conf

vim /etc/squid/squid.conf
    #取消注释即可
    cache_dir /var/spool/squid 100 16 256
    #/var/spool/squid为缓存路径,100为100MB的缓存空间
    #在squid内最多创建16个一级子目录,每个一级子目录可以创建256个子目录。

#重启服务
systemctl restart squid
#客户机添加网卡,10网段
#修改网段,网关指向代理服务器
vim /etc/sysconfig/network-scripts/ifcfg-ens33

systemctl restart network

 (3)配置网页服务

#网页服务器,添加网卡,11网段

#修改网段为11网段,网关指向代理服务器
vim /etc/sysconfig/network-scripts/ifcfg-ens33

#配置网页文件
echo “hello world” >> /var/www/html/index.html

systemctl restart network httpd
systemctl enable network httpd

#监听访问日志
tailf /var/log/httpd/access_log

(4)不使用代理访问测试

a.客户机打开浏览器访问

浏览器—设置—高级网络—设置—不使用代理

浏览器访问192.168.11.120(网页服务器IP)

b.观察日志

  网页服务器

  查看监听日志,此时没有开启代理功能,所以IP来源为客户机

(5)使用代理访问测试

  网页服务器

  查看监听日志,此时开启代理功能,所以IP来源为代理服务器

(6)代理服务器查看缓存

cd /var/spool/squid/

ls

tree	

2.透明代理缓冲服务器

#代理服务器执行

vim /etc/squid/squid.conf
#添加transparent,即可实现
http_port 3128 transparent

#限制用户下载大于10MB的文件
reply_body_max_size 10 MB
systemctl restart squid
#添加防火墙规则
iptables -t nat -A PREROUTING -i ens33 -s 192.168.10.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 3128

#客户端取消代理再次访问测试

三、反向代理

4台机器。

一个网关,一个外网,两台内网服务器,用来搭建网站

1.先配置两个内网的机器配置网关

安装Apache 在创建一个首页文件 并启动服务

2.代理服务器(网关)

yum -y install squid
vim /etc/squid/squid.conf
#允许客户端访问
http_access allow all

#监听的IP和端口
http_port 200.200.200.102:80 vhost

#配置后端服务器
cache_peer 192.168.14.101 parent 80 0 originserver round-robin weight=1
cache_peer 192.168.14.104 parent 80 0 originserver round-robin weight=1
systemctl restart squid

 3.测试机配置网关,访问代理服务器外网网关ip,测试

错误一:若不删除测试机的环境变量,不然会出现proxy3128端口的拒绝访问报错

错误二:若从上面的实验做过来,可能会出现拒绝访问,没有到服务器的路由,原因是路由转发没了,重新写一遍路由转发或服务器网关

扩展:就是反向代理负载均衡,与Nginx功能相同,但是生产中用Nginx较多,因为处理高并发强,(当访问量特别高时,可先用硬件负载调节器,然后分给多个Nginx负载均衡,硬件处理能力最高)

Nginx配置文件中可以写worker_processes auto; 代表自动分配线程,会按照当前硬件线程数来

四、访问控制

       使用访问控制特性,可以控制在访问时根据特定的时间间隔进行缓存、访问特定站点或一组站点等等。 squid访问控制有两个要素:ACL元素和访问列表。访问列表可以允许或拒绝某些用户对此服务的访问。

1.ACL元素类型

  • src:源地址(即客户机IP地址)

  • dst:目标地址(即服务器IP地址)

  • srcdomain:源域名(即客户机名称)

  • dstdomain:目标域名(即服务器名称)

  • time:一天中的时刻和一周内的一天

  • url_regex:URL规则表达式匹配

  • urlpath_regex:URL-path规则表达式匹配,省略协议和主机名

  • proxy_auth:通过外部程序进行用户验证

  • maxconn:单一IP的 大连接数

2.ACL格式

为了使用控制功能,必须先设置ACL规则并应用。ACL声明的格式如下:

别名的声明:acl命令

       格式:acl  {自定义别名}  {匹配元素类型}  {匹配对象}

       案例:acl   client   src   192.168.10.110

访问控制:

       http_access deny 声明了的别名             

       http_access allow 声明了的别名              

       案例:http_access deny client

注:

        ①acl_element_name 可以是任一个在ACL中定义的名称

        ②任何两个ACL元素不能用相同的名字

        ③每个ACL由列表值组成。当进行匹配检测的时候,多个值由逻辑或运算连接;即任一ACL元素的值被匹配,则这个ACL元素即被匹配。

        ④并不是所有ACL元素都能使用访问列表中的全部类型

        ⑤不同的ACL元素写在不同行中,squid将把他们组合在一个列表中

3.访问条目

我们可以使用许多不同的访问条目。下面是我们常用的几个:        

    a、http_access:允许HTTP访问

    b、no_cache:定义对缓存请求的响应。

访问列表的规则由一些类似'allow'或‘deny’的关键字构成,用以允许或拒绝向特定或一组ACL元素提供服务。

        ①一个访问列表可以由多条规则组成

        ②如果没有任何规则与访问请求匹配,默认动作将与列表中 后一条规则对应。

        ③一个访问条目中所有元素将用逻辑与运算连接

        ④http_access Action 声明1 AND 声明2 AND 声明 OR.

        ⑤http_access Action 声明3

        ⑥多个http_accesss声明间用或运算连接,但每个访问条目的元素间用与运算连接。

        ⑦列表中的规则总是遵循由上而下的顺序

        ⑧这些规则按照他们的排列顺序进行匹配检测,一旦检测到匹配的规则,匹配就立即结束。

4.访问控制实例

(1)允许网段10.0.0.124/24以及192.168.10.15/24内的所有客户机访问代理服务器,并且允许在 文件/etc/squid/guest列出的客户机访问代理服务器。拒绝除此之外其他所有的客户机。

acl clients src 10.0.0.124/24 192.168.10.15/24
acl guest src "/etc/squid/guest"
acl all src 0.0.0.0/0

#规则执行策略,自上而下依次执行,匹配即停止
http_access allow clients
http_access allow guest
http_access deny all

其中/etc/squid/guest的内容为

192.168.10.3/24
210.113.24.8/24
10.0.1.24/25

(2)允许域名为kernal.com、linuxlc.com的两个域名访问你本地代理服务器,其他的域名都将拒绝本地代理服务器:

acl permitted_domain src kernal.com linuxlc.com
acl all src 0.0.0.0/0

http_access allow permitted_domain
http_access deny all

(3)使用正则表达式,拒绝客户机通过代理访问包含“sexy”等关键字的网站

acl deny_url url_regex -i sexy

htttp_access deny deny_url

(4)拒绝客户机通过代理访问文件中指定IP或者域名的网站,其中文件/etc/squid/deny_ip中存放有拒绝访问的IP地址,文件/etc/squid/deny_dns中存放有拒绝访问的域名:

acl deny_ip dst "/etc/squid/deny_ip"
acl deny_dns dst "/etc/squid/deny_dns"

http_access deny deny_ip
http_access deny deny_dns

(5)允许和拒绝指定的用户访问指定的网站,其中,允许客户1访问网站http://www.sina.com.cn,而拒绝客户端2访问网站http://www.163.com

acl client1 src 192.168.0.118
acl client1_url url_regex ^http://www.sina.com.cn
acl client2 src 102.168.0.119
acl client2_url url_regex ^http://www.163.com

http_access allow client1 client1_url
http_access deny client2 client2_url

(6)允许所有的用户在规定时间内(周一至周四的8:30到20:30)访问代理服务器,只允许特定的用户(系统管理员,网段为192.168.10.0/24)在周五下午访问代理服务器,其他的在周五下午一点至六点一律拒绝访问代理服务器:

acl allclient src 0.0.0.0/0
acl administrator src 192.168.10.0/24
acl common_time time MTWH 8:30-20:30
acl manager_time time F 13:00-18:00

http_access allow allclient common_time
http_access allow administrator manager_time
http_access deny manager_time
  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值