一、实验环境与规划
1.企业网络拓扑
内网区域:VMnet1(仅主机)
外网区域:VMnet8(NAT)
防火墙/代理服务器:双网卡,做SNAT/DNAT/Squid 代理
2. 主机信息表
4. 实验目标
1.安装配置 Squid 正向代理
2.实现透明代理(客户端免配置)
3.实现 Squid 反向代理
4.故障排查与防火墙放行
二、
1.Server2 安装 squid 代理服务
sudo -i
rpm -qa | grep squid
mount /dev/cdrom /media
dnf clean all
dnf install squid -y
启动并开机自启
systemctl start squid
systemctl enable squid
2.Client1 安装配置 Web 服务
dnf install httpd -y
systemctl start httpd
systemctl enable httpd
systemctl start firewalld
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
测试Web服务
firefox 127.0.0.1
3.Server2 配置 squid 正向代理
vim /etc/squid/squid.conf
acl Localnet src 192.0.0.0/8
cache_dir ufs /var/spool/squid 10240 16 256
visible_hostname server2
4.Server1 添加手动代理配置
浏览器设置:
手动代理配置
HTTP Proxy:192.168.72.20
Port:3128
勾选 Use this proxy server for all protocols
访问:192.168.136.113
出现错误:The proxy server is refusing connections
5.故障排除
firewall-cmd --permanent --add-service=squid
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload
再次访问 192.168.136.113 成功打开 Apache 测试页。
之前访问报错,核心是Linux防火墙拦截了Squid代理和网页流量,执行三条命令给防火墙放行端口、重载规则后,流量可以正常通行,网页就成功打开了。
故障根源
firewalld默认拒绝外部未授权访问,即使Squid服务配置正确,流量也会被防火墙阻断,浏览器提示代理拒绝连接。
三条命令的作用
放行 squid 服务:开放代理默认3128端口,允许代理请求接入
放行 80/tcp 端口:放开HTTP网页访问通道
重载防火墙:永久规则即时生效,不用重启设备
最终效果客户端代理请求、网页往返流量全程无阻拦,Squid可以正常转发数据,顺利加载远端Apache默认测试页面。
6.客户端不需要配置代理服务器的解决方案
vim /etc/squid/squid.conf
添加
http_port 3128
http_port 3129 transparent
systemctl restart squid
防火墙端口转发:
firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=3129
firewall-cmd --reload
systemctl restart squid
客户端设置为 No proxy 即可访问。
7.反向代理解决方案
安装 httpd:
mount /dev/cdrom /media
dnf clean all
dnf install httpd -y
修改 squid 配置:
vim /etc/squid/squid.conf
acl localnet src 192.0.0.0/8
http_port 192.168.136.112:80 vhost
cache_peer 192.168.72.1 parent 80 0 originserver weight=5 max_conn=30
acl localnet :预先定义可访问的内网客户端网段范围
http_port + vhost :让Squid在代理服务器80端口监听外网请求,开启反向代理虚拟主机能力
cache_peer :指定后端真实内网Web服务器地址,配置反向转发、连接上限与负载权重
访问时提示: The requested url could not be retrieved ,页面无法正常打开。
报错根本原因
Squid有严格的默认安全机制:仅定义转发规则、网段标记,不等于允许访问。缺少权限放行规则时,即使转发链路配置无误,所有客户端请求也会被Squid默认拦截拒绝。
在配置中补充放行规则:
http_access allow localnet
http_access allow localhost
放行之前定义的内网网段,允许对应客户端接入
放行服务器本机本地访问,保障服务自测与回连通路
重启服务:
systemctl restart squid
访问:192.168.136.112
成功显示内网 Web 服务页面。
客户端访问代理服务器公网IP → 匹配内网网段ACL → 放行规则允许通行 → Squid将请求转发给后端真实Web站点 → 后端页面数据原路返回客户端,反向代理访问完全恢复正常。
声明:本文仅用于技术学习与合规企业内网运维,严禁用于任何违规网络行为