- A+
squid代理
优势:
1.提高客户端访问速度;
2.隐蔽内部主机的ip地址;
3.部署简单,可以实现访问控制;
作用
——代理上网(正向代理,透明代理)
——网站静态页面缓存加速(反向代理)
主机名称 | IP地址 | 角色 |
---|---|---|
client | 192.168.40.24 | 客户端 |
squid | 192.168.40.23 10.10.10.11 | squid服务器 |
web | 10.10.10.12 | web服务器 |
一、传统模式
客户端必须在自己的浏览器里指定代理服务器的ip地址和代理服务监听的端口号,才能通过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地址。
修改配置信息
[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
添加访问策略
[root@squid ~]# grep "500" /etc/squid/squid.conf reply_body_max_size 500 MB [root@squid ~]# systemctl restart squid
总结:传统模式与透明模式的主要区别就是访问的时候不用手动添加代理和端口对用户的体验更加的友好
三、反向代理
实验拓扑图
主机名称 | IP地址 | 角色 |
---|---|---|
client | 192.168.40.24 | 客户端 |
squid | 192.168.40.23 10.10.10.11 | squid服务器 |
web-1 | 10.10.10.12 | web服务器 |
web-2 | 10.10.10.13 | web服务器 |
传统模式和透明是为客户端服务的,借助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 ~]# systemctl reload squid [root@squid ~]# echo "1" > /proc/sys sys/ sysrq-trigger sysvipc/ [root@squid ~]# echo "1" > /proc/sys/net/ipv4/ip_forward [root@squid ~]# sysctl -p
squid做反向代理缓存静态页面内容
[root@web-1 ~]# systemctl stop httpd
停止其中的一台机器无论怎么刷新访问都是web-2
要是两台机器都停止了就会出现访问最后访问的页面
四、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给注释掉重启服务就会发现访问被拒绝
acl 列表名称 列表类型 列表内容
http access allow或者deny列表名称
内容 | 字段说明 |
---|---|
src | 源地址 |
dst | 目标地址 |
port | 目标端口 |
dstdomain | 目标域 |
time | 访问时间 |
maxconn | 最大连接 |
url_regex | 目标URL地址 |
urlpath_regex | 整个目标URL地址 |
备注:要是只是写了acl没有写http access默认是拒绝。