Linux:Squid正向代理实现内网访问互联网

前言:

之前有写过一个 Linux:Nginx 正向代理实现内网访问互联网 博客,生产环境运行了好一段时间,一直相安无事;最近公司审计要求访问外网代理必须设置访问外网的网站白名单,我在网上搜索了一些方法,尝试了几种方式,并没有理想的效果(对http生效,但是https不生效),所以就打算另辟蹊径了。

一、安装

主要有两种方式,一是下载源码编译,我这边网络不具备条件就放弃了;二是直接dnf或者yum安装。

bash 复制代码
#安装前更新下yum源
sudo yum update

#查一下源里面是有有squid(如果没有就只能下载源码编译安装了)
yum info squid

#安装
sudo yum install squid -y

二、配置

yum 安装后的配置文件在 /etc/squid/squid.conf,配置文件有英文的说明,如果不清楚可以网上搜索一下。

我这边的需求是:

1.支持源客户端IP的白名单控制;

2.支持访问外网网站的白名单控制;

3.需要有所有网站的访问日志(审计需要);

直接贴修改后的 squid.conf 配置文件:

bash 复制代码
#源客户端IP的白名单控制(这里引用的是一个文件地址,相关的白名单在文件里面配置)
acl client_white src "/etc/squid/client_white.ip"

#外网网站的白名单控制(这里引用的是一个文件地址,相关的白名单在文件里面配置)
acl site_white dstdomain "/etc/squid/site_white.net"

#声明SSL端口443
acl SSL_ports port 443

#声明安全端口80
acl Safe_ports port 80

#声明安全端口21
acl Safe_ports port 21

#声明安全端口443
acl Safe_ports port 443

#这行配置高版本的上面没有,低版本需要加上要不然报错
acl CONNECT method CONNECT

#拒绝非安全端口访问
http_access deny !Safe_ports

#拒绝非 SSL 端口的 CONNECT 请求
http_access deny CONNECT !SSL_ports

#只允许来自本机(localhost)的用户访问 Squid 的管理接口
http_access allow localhost manager

#拒绝其他用户访问管理接口
http_access deny manager

#允许 client_white site_white (白名单在这里生效)访问
http_access allow client_white site_white

#允许本地用户访问
http_access allow localhost

#拒绝其他访问
http_access deny all

#服务端口
http_port 3128

# Squid 崩溃时生成的 core dump 文件(核心转储文件)的存放目录
coredump_dir /var/spool/squid

#访问日志
access_log /var/log/squid/access.log

#缓存日志
cache_log /var/log/squid/cache.log

#ftp的配置
refresh_pattern ^ftp:           1440    20%     10080

#动态内容永不缓存(防止缓存登录页、订单状态等动态内容)
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0

#静态资源(HTML、CSS、JS、图片等)的默认策略
refresh_pattern .               0       20%     4320

源客户点白名单配置文件 client_white.ip,IP是CIDR格式,每行一个

bash 复制代码
192.0.12.12/32
192.0.11.0/24

外网网站的白名单配置文件 site_white.net,点号表示匹配子域名

bash 复制代码
.baidu.com
blog.csdn.net

三、服务

bash 复制代码
#启动前先校验一下配置文件是否有错误(没有报错就行)
sudo squid -k parse

#服务启动
sudo systemctl start squid

#服务停止
sudo systemctl stop squid

#服务重启
sudo systemctl restart squid

#服务状态查看
sudo systemctl status squid

#开机自启
sudo systemctl enable squid

#关闭开机自启
sudo systemctl disable squid

另外,热加载命令经常用

bash 复制代码
sudo squid -k reconfigure

其他

实测发现,依据上述配置,本地localhost使用代理时不会受白名单限制。

相关推荐
BreezeJiang4 小时前
从域名到 Node.js:一次云服务器请求经过了哪些层?
服务器
草莓熊Lotso6 小时前
【Redis 初阶】Set 类型深度解析:去重集合的运算能力与实战场景
linux·网络·数据库·windows·redis·tcp/ip·缓存
张文君6 小时前
ubuntu26.04坏道坏块分区隔离急速版260831-V0.12
linux·python
IT大白鼠6 小时前
Docker 实战 ELKF 日志监控:容器日志全栈收集分析方案
运维·docker·容器
贝锐15 小时前
从国产化信创设备到商用安卓终端,向日葵如何帮助企业实现统一运维管理?
linux·运维·远程控制
Julien200416 小时前
调查和解决 SELinux 问题
linux·运维·服务器·网络·学习方法
天远Date Lab17 小时前
零信任架构实战:基于天远双人婚姻评估查询构建自动化房产按揭联合审查网关
运维·人工智能·架构·自动化
2601_9620746818 小时前
自己编译RustDesk,并将自建ID服务器和key信息写入客户端
运维·服务器
小张同学a.18 小时前
Docker 容器实战 1—— docker 基础与镜像构建
linux·运维·docker·容器
大模型丫丫18 小时前
Hermes Agent:轻量级智能体框架实战指南
大数据·运维·服务器