RHEL8.8部署Squid代理——入门
2024/04/17 16:49 投稿

本文章也是我第一次接触并使用,类似于自学笔记类型,可能以下内容个别部分表述的不够充分或者不完全正确,希望大家指出,互相学习。

Squid 有广泛的用途,从作为网页服务器的前置 cache 服务器缓存相关请求来提高 Web 服务器的速度,到为一组人共享网络资源而缓存万维网,域名系统和其他网络搜索,到通过过滤流量帮助网络安全,到局域网通过代理上网。

[root@localhost ~]# yum install squid -y    ##安装squid

###/etc/squid/squid.conf 部分配置解读
acl localnet src 0.0.0.1-0.255.255.255 ##需要放行的网段,私有网络已经写了,可以不做处理。
acl SSL_ports port 443
acl Safe_ports port 80 ##这些ACL规则用于限制通过代理服务器的流量类型和使用的端口
http_access deny !Safe_ports ##拒绝所有非安全端口(非Safe_ports)的HTTP访问请求。
http_access deny CONNECT !SSL_ports ##拒绝除了安全SSL端口(SSL_ports)之外的所有CONNECT请求
http_access allow localhost manager ##允许本地主机(localhost)的管理访问(manager),如缓存管理器。
http_access deny manager ##拒绝所有其他主机的管理访问(manager)。
http_access allow localnet ##允许来自本地网络(localnet)的访问请求
http_access deny all ##拒绝所有http请求
http_port 3128 ##Squid监听的默认端口号是3128
coredump_dir /var/spool/squid ##Squid在/var/spool/squid目录中存储核心转储文件(core dumps)
refresh_pattern ^ftp: 1440 20% 10080 ##对FTP内容进行刷新,保持不超过1440分钟,占总容量的20%,最长保留时间为10080分钟。

[root@localhost ~]# vim /etc/squid/squid.conf   ##编辑配置文件 

配置文件中的SSL_ports 以及 Safe_ports 只是名字 没有其他含义,可以随意自定义,我只是懒得默认了

[root@localhost ~]# cat /etc/squid/squid.conf  | egrep -v "^#|^$"   ##测试保留一些基础配置即可
acl localnet src 192.168.0.0/16         # RFC 1918 local private network (LAN)
acl SSL_ports port 9720
acl Safe_ports port 9721          
http_access allow Safe_ports
http_access deny SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localnet
http_access allow localhost
http_port 3128
coredump_dir /var/spool/squid
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320
[root@localhost ~]# systemctl enable squid.service --now  ##开启并开机自启

我们在Windows上配置好 代理,即可开始测试。

利用到了firefox浏览器,指向我们的代理。按照我们之前配置的是,只允许9721拒绝9720的请求。

我们可以尝试 访问一个9720的网站,即会被拒绝。

这时候访问9721,就可以。

这时候观察系统日志 就能看到如下两条

[root@localhost ~]# tail -f /var/log/squid/access.log
1713344244.236      1 192.168.137.1 TCP_DENIED/403 4309 GET http://192.168.137.67:9720/ - HIER_NONE/- text/html
1713344265.342      5 192.168.137.1 TCP_MISS/200 430 GET http://192.168.137.66:9721/ - HIER_DIRECT/192.168.137.67 text/html

我们可以反过来测试一下,我现在把server端配置改成如下,仅允许9720,不允许9721

[root@localhost ~]# cat /etc/squid/squid.conf  | egrep -v "^#|^$"
acl localnet src 192.168.0.0/16 
acl SSL_ports port 9720
acl Safe_ports port 9721         
http_access deny Safe_ports
http_access allow SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localnet
http_access allow localhost
http_port 3128
coredump_dir /var/spool/squid
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320

这时候观察系统日志 就能看到如下两条

[root@localhost ~]# tail -f /var/log/squid/access.log
1713344422.215      1 192.168.137.1 TCP_DENIED/403 4428 GET http://192.168.137.67:9721/ - HIER_NONE/- text/html
1713344487.115      6 192.168.137.1 TCP_MISS/200 425 GET http://192.168.137.66:9720/ - HIER_DIRECT/192.168.137.66 text/html