一、ACL访问控制
- 在配置文件 squid.conf 中,ACL 访问控制通过以下两个步骤来实现:
- 步骤一:使用 acl 配置项定义需要控制的条件;
- 步骤二:通过 http_access 配置项对已定义的列表做“允许”或“拒绝”访问的控制。
1.访问控制列表格式
格式:acl 列表名称 列表类型 列表内容 …
列表类型 |
定义的列表内容 |
src |
源地址 |
dst |
目标地址 |
maxconn |
最大并发连接 |
port |
目标地址 |
dstdomain |
目标域 |
url_regex |
匹配请求URL的任何部分 |
urlpath_regex |
与url_regex非常相似(不包含传输协议和主机名) |
time |
访问时间 |
例如:
vim /etc/squid.conf
......
acl localhost src 192.168.28.10/32 #源地址为 192.168.28.10
acl MYLAN src 192.168.28.0/24 #客户机网段
acl destionhost dst 192.168.28.20/32 #目标地址为 192.168.28.20
acl MC20 maxconn 20 #最大并发连接 20
acl PORT port 21 #目标端口 21
acl DMBLOCK dstdomain .qq.com #目标域,匹配域内所有站点
acl BURL url_regex -i ^rtsp:// ^emule:// #以 rtsp://、emule:// 开头的 URL,-i表示忽略大小写
acl PURL urlpath_regex -i \.mp3$ \.mp4$ \.rmvb$ #以 .mp3、.mp4、.rmvb 结尾的 URL 路径
acl WORKTIME time MTWHF 08:30-17:30 #时间为周一至周五 8:30~17:30,“MTWHF”为每个星期的英文首字母
环境配置
主机 |
操作系统 |
IP地址 |
软件、安装包、工具 |
Squid-Server |
CentOS7 |
192.168.28.10 |
squid-3.5.28.tar.gz |
Web1 |
CentOS7 |
192.168.28.20 |
httpd |
Web2 |
CentOS7 |
192.168.28.30 |
httpd |
客户机 |
Windows |
192.168.28.15 |
----- |
Squid-Server(192.168.28.10)
iptables -F
iptables -t nat -F
mkdir /etc/squid
vim /etc/squid/dest.list
192.168.28.20
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210310193137703.png)
vim /etc/squid.conf
......
acl destionhost dst "/etc/squid/dest.list" #调用指定文件中的列表内容
......
http_access deny destionhost #注意,如果是拒绝列表,需要放在http_access allow all前面
http_port 3128
systemctl restart squid
netstat -natp | grep 3128