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使用代理时不会受白名单限制。

相关推荐
比兔代理7 小时前
正向代理与反向代理技术辨析,为什么代理 IP 属于正向代理
服务器·网络·http·ip
Wang's Blog9 小时前
Java 接入Redis: 通用命令与键管理
java·服务器·redis
Wang's Blog9 小时前
Java 接入Redis: 列表集合与有序集合操作命令
java·服务器·redis
蓝速科技9 小时前
会议室门牌公告通知发布选型与落地指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
Ivanqhz9 小时前
SVD++算法
java·服务器·网络·深度学习·神经网络
chicheese10 小时前
Linux 面试速查表:从初级到高级,附高频场景答题模板
linux·运维
Linux-lucky10 小时前
32-38-Linux学习之旅之MySQL综合
linux·运维·学习·mysql·ubuntu
智能运维指南11 小时前
2026年ITSM系统怎么选?四款主流方案与五维评估模型
运维·itsm·嘉为蓝鲸
vortex511 小时前
常用终端模拟器全面对比:Kitty、WezTerm、Ghostty 与 Konsole
linux
我命由我1234511 小时前
Git 推送报错:error: src refspec main does not match any
运维·git·gitee·github·运维开发·学习方法·版本控制