squid代理的三种模式

本文介绍了Squid代理的三种模式:传统模式需要客户端设置代理;透明模式无需手动配置,提升用户体验;反向代理用于隐藏真实Web服务器IP并实现负载均衡。详细阐述了每种模式的配置、测试与应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

squid代理

优势:

1.提高客户端访问速度;

2.隐蔽内部主机的ip地址;

3.部署简单,可以实现访问控制;

作用

——代理上网(正向代理,透明代理)

——网站静态页面缓存加速(反向代理)

主机名称IP地址角色
client192.168.40.24客户端
squid192.168.40.23 10.10.10.11squid服务器
web10.10.10.12web服务器

一、传统模式

客户端必须在自己的浏览器里指定代理服务器的ip地址和代理服务监听的端口号,才能通过squid代理服务器上网。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iFaF32xq-1599749777244)(squid.assets/1599732894308.png)]
前提条件两张网卡能够两两ping通

[root@client ~]# ping 192.168.40.23
PING 192.168.40.23 (192.168.40.23) 56(84) bytes of data.
64 bytes from 192.168.40.23: icmp_seq=1 ttl=64 time=0.260 ms
64 bytes from 192.168.40.23: icmp_seq=2 ttl=64 time=0.335 ms
^C
--- 192.168.40.23 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.260/0.297/0.335/0.041 ms
[root@squid ~]# ping 10.10.10.12
PING 10.10.10.12 (10.10.10.12) 56(84) bytes of data.
64 bytes from 10.10.10.12: icmp_seq=1 ttl=64 time=0.163 ms
64 bytes from 10.10.10.12: icmp_seq=2 ttl=64 time=0.860 ms
64 bytes from 10.10.10.12: icmp_seq=3 ttl=64 time=0.339 ms
^C
--- 10.10.10.12 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.163/0.454/0.860/0.295 ms
[root@squid ~]#

将客户端的网关指向squid服务器
[root@client ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE=Ethernet
ONBOOT=yes
DNS1=192.168.40.2
IPADDR=192.168.40.24
PREFIX=24
GATEWAY=192.168.40.23
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
[root@client ~]#
开启路由转发功能
[root@squid ~]# echo "1" >/proc/sys/net/ipv4/ip_forward
[root@squid ~]# sysctl -p
[root@squid ~]# yum install -y squid
[root@squid ~]# systemctl start httpd
[root@squid ~]# systemctl enable httpd
测试访问
[root@client ~]# curl 10.10.10.12
^C
[root@client ~]# curl -x sockers5://192.168.40.23:3128 10.10.10.12
bbs.jw.com-1

关闭web服务器测试
[root@web ~]# systemctl stop httpd
[root@web ~]#

[root@client ~]# curl -x sockers5://192.168.40.23:3128 10.10.10.12
bbs.jw.com-1

结论:客户端访问得到的结果是使用的squid的缓存的数据并非web服务器的数据,在大型的网站当中可以使用这种缓存的方式减少web服务器的压力

二、透明模式

透明代理,本质作用是和普通代理是一样的,但是透明代理,客户端不需要在自己的浏览器里指定代理服务器的ip地址和代理服务监听的端口号,给客户端的感觉自己是直接和公网通信,但是必须把网关地址指向代理服务器的内网接口ip地址

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aYOdkmb3-1599749777246)(squid.assets/1599732976427.png)]

修改配置信息
[root@squid ~]# vim /etc/squid/squid.conf
# Squid normally listens to port 3128
http_port 192.168.40.23 3128 transparent
[root@squid ~]# systemctl reload squid
[root@squid ~]# iptables -t nat -A PREROUTING -i eno16777736 -s 192.168.40.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 3128
访问测试
[root@client ~]# curl  10.10.10.12
bbs.jw.com-1
[root@client ~]#
限制访问文件的大小

正常情况下

[root@web html]# dd if=/dev/zero of=s count=1M bs=1024
[root@client ~]# wget  10.10.10.12/size.html
--2020-09-10 04:16:38--  http://10.10.10.12/s
Connecting to 10.10.10.12:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1073741824 (1.0G) [text/html]
Saving to: ‘size.html’

30% [===========>                             ] 328,439,473 87.1MB/s  eta 10s    ^C

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kgdokgQh-1599749777248)(squid.assets/1599726445959.png)]

添加访问策略

[root@squid ~]# grep "500" /etc/squid/squid.conf
reply_body_max_size 500 MB
[root@squid ~]# systemctl restart squid

在这里插入图片描述

总结:传统模式与透明模式的主要区别就是访问的时候不用手动添加代理和端口对用户的体验更加的友好

三、反向代理

实验拓扑图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jf4hTr4g-1599749777253)(squid.assets/1599732191580.png)]

主机名称IP地址角色
client192.168.40.24客户端
squid192.168.40.23 10.10.10.11squid服务器
web-110.10.10.12web服务器
web-210.10.10.13web服务器

传统模式和透明是为客户端服务的,借助squid加快访问web服务的速度,或者是公司内部对员工上网行为做限制使用的,而反向代理模式下的squid的服务对象是web服务器,通过squid来隐藏真实web服务器IP,加快客户的访问速度,还有负载均衡的功能

将两台web服务器的网关指向squid服务器
[root@web-1 html]# grep -i "gateway" /etc/sysconfig/network-scripts/ifcfg-eno16777728
GATEWAY=10.10.10.11
[root@web2 ~]# grep -i "gateway" /etc/sysconfig/network-scripts/ifcfg-eno16777736
GATEWAY=10.10.10.11
web服务端测试
[root@squid ~]# curl 10.10.10.12
web-1
[root@squid ~]# curl 10.10.10.13
web-2
[root@squid ~]#
squid配置
[root@squid ~]# grep -A 2 "^http_port" /etc/squid/squid.conf
http_port 80 vhost
cache_peer 10.10.10.12 parent 80 0 originserver no-query originserver round-robin name=apache1
cache_peer 10.10.10.13 parent 80 0 originserver no-query originserver round-robin name=apache2
[root@squid ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
[root@squid ~]# sysctl -p
[root@squid ~]# systemctl restart squid

在这里插入图片描述

squid做反向代理缓存静态页面内容
[root@web-1 ~]# systemctl stop httpd

停止其中的一台机器无论怎么刷新访问都是web-2

在这里插入图片描述

要是两台机器都停止了就会出现访问最后访问的页面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-baFh5P2S-1599749777257)(squid.assets/1599747813373.png)]

四、ACL配置

之所以我们没有做ACL访问策略就能访问是因为在默认的配置文件当中就是包含了这些网段的内容

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 fc00::/7       # RFC 4193 local private network range
acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines
初识ACL规则

我们将其中的 acl localnet src 192.168.0.0/16给注释掉重启服务就会发现访问被拒绝

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NoHKP9Ce-1599749777258)(squid.assets/1599747016311.png)]

由两部分组成
1、acl 列表名称 列表类型 列表内容

2、http access allow或者deny列表名称

内容字段说明
src源地址
dst目标地址
port目标端口
dstdomain目标域
time访问时间
maxconn最大连接
url_regex目标URL地址
urlpath_regex整个目标URL地址

备注:要是只是写了acl没有写http access默认是拒绝。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值