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

相关推荐
老师用之于民1 天前
【DAY21】Linux软件编程基础&Shell 命令、脚本及系统管理实操
linux·运维·chrome·经验分享·笔记·ubuntu
路由侠内网穿透.1 天前
本地部署代码托管解决方案 Gitea 并实现外部访问( Windows 版本)
运维·服务器·网络协议·gitea
serve the people1 天前
python环境搭建 (十三) tenacity重试库
服务器·python·php
jake don1 天前
GPU服务器搭建大模型指南
服务器·人工智能
江畔何人初1 天前
pod的内部结构
linux·运维·云原生·容器·kubernetes
不做无法实现的梦~1 天前
PX4编译环境配置和qgc配置安装教程(2)
linux·stm32
齐鲁大虾1 天前
Linux下用什么编程语言方便开发B/S架构程序
linux·运维·架构
范纹杉想快点毕业1 天前
状态机设计与嵌入式系统开发完整指南从面向过程到面向对象,从理论到实践的全面解析
linux·服务器·数据库·c++·算法·mongodb·mfc
三块钱07941 天前
群晖docker部署Mattermost,对接openclaw
运维·docker·容器
博客-小覃1 天前
内网穿透/端口映射之二层穿透访问”FTP共享文件“示例操作教程
运维·服务器·网络