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

相关推荐
05大叔9 小时前
网络基础知识 域名,JSON格式,AI基础
运维·服务器·网络
安当加密9 小时前
无需改 PAM!轻量级 RADIUS + ASP身份认证系统 实现 Linux 登录双因子认证
linux·运维·服务器
dashizhi20159 小时前
服务器共享禁止保存到本地磁盘、共享文件禁止另存为本地磁盘、移动硬盘等
运维·网络·stm32·安全·电脑
内卷焦虑人士9 小时前
Windows安装WSL2+Ubuntu 22.04
linux·windows·ubuntu
卷福同学10 小时前
【养虾日记】QClaw操作浏览器自动化发文
运维·人工智能·程序人生·自动化
woho77889910 小时前
不同网段IP的网络打印机,打印、扫描设置
运维·服务器·网络
耗子会飞11 小时前
小白学习固定VM虚拟机的centos服务器的IP
运维·服务器·centos
dddddppppp12311 小时前
qemu模拟的一个内核驱动 io口中断
linux
程序员老赵11 小时前
超全 Docker 镜像源配置指南|Windows/Mac/Linux一键搞定,拉镜像再也不卡顿
linux·后端·容器
门豪杰11 小时前
Ubuntu下安装Claude Code
linux·运维·ubuntu·claude·claude code