使用 Squid 部署代理缓存服务(RHEL7)—学习笔记
配置 Squid 服务程序
ping www.linuxprobe.com # 检查访问外部网络
yum install squid
// 常用的 Squid 服务程序配置参数以及作用
http_port 3128 监听的端口号
cache_mem 64M 内存缓冲区的大小
cache_dir ufs /var/spool/squid 2000 16256硬盘缓冲区的大小
cache_effective_user squid 设置缓存的有效用户
cache_effective_group squid 设置缓存的有效用户组
dns_nameservers [IP 地址] 一般不设置,而是用服务器默认的 DNS 地址
cache_access_log /var/log/squid/access.log 访问日志文件的保存路径
cache_log /var/log/squid/cache.log 缓存日志文件的保存路径
visible_hostname linuxprobe.com 设置 Squid 服务器的名称
正向代理
systemctl restart squid
systemctl enable squid
# 须在浏览器中填写服务器的 IP 地址以及端口号信息
# Squid 服务程序默认使用 3128、 3401 与 4827 等端口号
vim /etc/squid/squid.conf
59 http_port 10000 # 原有的 3128 修改为 10000
systemctl restart squid
systemctl enable squid
semanage port -l | grep squid_port_t
semanage port -a -t squid_port_t -p tcp 10000
semanage port -l | grep squid_port_t
ACL 访问控制
# 1_ 只允许IP地址为192.168.10.20的客户端使用服务器上的Squid服务程序提供代理服务
vim /etc/squid/squid.conf
26 acl client src 192.168.10.20 # 定义了一个名为 client 的别名
31 http_access allow client
32 http_access deny all
systemctl restart squid
# 2_ 禁止所有客户端访问网站中包含linux关键词的网站
vim /etc/squid/squid.conf
26 acl deny_keyword url_regex -i linux #定义了一个名为 deny_keyword 的别名
31 http_access deny deny_keyword
systemctl restart squid
# 3_ 禁止所有客户端访问某个特定的网站
vim /etc/squid/squid.conf
26 acl deny_url url_regex http://www.linuxcool.com
31 http_access deny deny_url
systemctl restart squid
# 4_ 禁止员工在企业网内部下载带有某些后缀的文件
vim /etc/squid/squid.conf
26 acl badfile urlpath_regex -i \.rar$ \.avi$
31 http_access deny badfile
systemctl restart squid
# 透明正向代理 “透明”二字指的是让用户在没有感知的情况下使用代理服务
# 要想让内网中的客户端主机能够访问外网,客户端主机首先要能获取到 DNS 地址解析服
# 务的数据,这样才能在互联网中找到对应网站的 IP 地址
iptables -F
#实现 DNS 地址解析服务 53 端口的数据转发功能,并且允许 Squid 服务器转发 IPv4 数据包
iptables -t nat -A POSTROUTING -p udp --dport 53 -o eno33554968 -j MASQUERADE
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p # 让转发参数立即生效
vim /etc/squid/squid.conf
59 http_port 3128 transparent
62 cache_dir ufs /var/spool/squid 100 16 256 # 井号(#)注释符删除,设置缓存的保存路径
squid -k parse # 检查主配置文件是否有错误
squid -z # 透明代理技术进行初始化
systemctl restart squid
使用 iptables 防火墙管理命令把所有客户端主机
# 对网站 80 端口的请求转发至 Squid 服务器本地的 3128 端口上
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 –o eno33554968 -j SNAT --to 您的桥接网卡 IP 地址
service iptables save