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

相关推荐
乌托邦的逃亡者9 分钟前
CentOS/Openeuler主机中,为一个网卡设置多个IP地址
linux·运维·网络·tcp/ip·centos
拾贰_C1 小时前
【OpenClaw | openai | QQ】 配置QQ qot机器人
运维·人工智能·ubuntu·面试·prompt
桌面运维家1 小时前
服务器进程异常监控:快速定位与排障实战指南
运维·服务器
@CLoudbays_Martin111 小时前
UniApp是否能够接入SDK游戏盾呢?
服务器·网络·网络协议·tcp/ip·安全
念恒123061 小时前
进程控制---自定义Shell
linux·c语言
风曦Kisaki1 小时前
# Linux Shell 编程入门 Day02:条件测试、if 判断、循环与随机数
linux·运维·chrome
木雷坞2 小时前
视觉算法环境 Docker 镜像拉取失败排查
运维·人工智能·docker·容器
郝亚军2 小时前
ubuntu 22.04如何安装libmodbus
运维·服务器·ubuntu
李日灐2 小时前
< 6 > Linux 自动化构建工具:makefile 详解 + 进度条实战小项目
linux·运维·服务器·后端·自动化·进度条·makefile
JZC_xiaozhong2 小时前
跨系统审批自动化怎么做?从采购到销售合同的完整方案
大数据·运维·自动化·流程自动化·数据集成与应用集成·业务流程管理·异构数据集成