Squid:修订间差异

无编辑摘要
无编辑摘要
 
(未显示同一用户的3个中间版本)
第4行: 第4行:
===时间轴===
===时间轴===
===安装===
===安装===
在 Ubuntu/Debian 系统上,可以通过以下命令安装:
 
在 Ubuntu/Debian 系统上,有两个squid包,一个是支持ssl版本的版本,一个是不支持。之前安装squid,也可以直接安装squid-openssl,程序会移除squid 包,但配置文件和缓存目录通常会保留。可以通过以下命令安装:
<syntaxhighlight lang="bash" >
<syntaxhighlight lang="bash" >
sudo apt update
sudo apt update
# 不支持ssl版本
sudo apt install squid
sudo apt install squid
# 支持ssl版本,
sudo apt install squid-openssl
</syntaxhighlight>
</syntaxhighlight>


==快速开始==
==快速开始==
配置一个匿名代理
配置一个匿名代理,该版本使用http代理,客户端到squid全部明文发送。


1.编辑squid配置文件<code>sudo vim /etc/squid/squid.conf</code>
1.编辑squid配置文件<code>sudo vim /etc/squid/squid.conf</code>
第28行: 第34行:


# 允许所有ip访问,建议设置认证(如用户名密码)
# 允许所有ip访问,建议设置认证(如用户名密码)
# acl all src 0.0.0.0/0
acl all src 0.0.0.0/0
# http_access allow all
http_access allow all
 
# 添加用户名密码认证
# htpasswd 工具通常包含在 Apache2 工具包中。安装sudo apt install apache2-utils
# 创建用户名和密码:sudo htpasswd -c /etc/squid/passwd 用户名
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
http_access deny all
 
# 禁用日志或定期清理
access_log none
</syntaxhighlight>
</syntaxhighlight>


第97行: 第92行:


==HTTPS 代理==
==HTTPS 代理==
通过 apt 在 Ubuntu 上安装的 Squid 默认版没有启用 SSL/TLS 支持(即不支持 HTTPS 代理或 SSL Bump 功能)。因为默认包未编译进相关的 SSL 模块。要启用 SSL 功能,需要重新编译 Squid 并启用 OpenSSL 支持。
通过 apt 在 Ubuntu 上安装的 Squid 默认版没有启用 SSL/TLS 支持(即不支持 HTTPS 代理或 SSL Bump 功能)。要启用 SSL 功能,需要重新编译 Squid 并启用 OpenSSL 支持。或者安装支持ssl的版本:<code>sudo aptinstall squid-openssl</code>。之前安装squid,也可以直接安装squid-openssl,程序会移除squid 包,但配置文件和缓存目录通常会保留。 使用<code>squid -v</code>可以看到含有<code>'--with-openssl' '--enable-ssl-crtd'</code>
 
*1.申请证书
使用[[acme.sh]]申请Let's Encrypt的免费SSL证书示例:
<syntaxhighlight lang="bash" >
# 使用curl下载安装acme.sh
curl https://get.acme.sh | sh
 
# 在域名服务,新建A解析a.yourdomain.com到服务器IP
# 使用dns方式,导入域名商api key
export Namesilo_Key="xxx"
# 签发ssl证书
.acme.sh/acme.sh --issue --dns dns_namesilo -d a.yourdomain.com  --server letsencrypt  --dnssleep 600
</syntaxhighlight>
 
*2.编辑squid配置文件<code>sudo vim /etc/squid/squid.conf</code>
<syntaxhighlight lang="bash" >
https_port 443 cert=/path/to/fullchain.cer key=/path/to/key/a.yourdomain.com.key
 
forwarded_for off
via off
httpd_suppress_version_string on
dns_nameservers 8.8.8.8 8.8.4.4
 
# 添加用户名密码认证
# htpasswd 工具通常包含在 Apache2 工具包中。安装sudo apt install apache2-utils
# 创建用户名和密码:sudo htpasswd -c /etc/squid/passwd 用户名
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
http_access deny all
 
# 禁用日志或定期清理
access_log none
</syntaxhighlight>
 
2.重启Squid 服务
<syntaxhighlight lang="bash" >
# 重启Squid
sudo systemctl restart squid
 
# 检查是否运行正常
sudo systemctl status squid
</syntaxhighlight>


==配置==


==资源==
==资源==

2025年2月23日 (日) 17:21的最新版本

Squid是一个开源的web缓存代理服务器软件。专门设计用来缓存 Web 内容、控制访问权限、提高性能、减少带宽消耗。它是专门用于做 HTTP/HTTPS 代理,并且支持访问控制列表 (ACL),认证,日志记录等特性。

简介

时间轴

安装

在 Ubuntu/Debian 系统上,有两个squid包,一个是支持ssl版本的版本,一个是不支持。之前安装squid,也可以直接安装squid-openssl,程序会移除squid 包,但配置文件和缓存目录通常会保留。可以通过以下命令安装:

sudo apt update

# 不支持ssl版本
sudo apt install squid

# 支持ssl版本,
sudo apt install squid-openssl

快速开始

配置一个匿名代理,该版本使用http代理,客户端到squid全部明文发送。

1.编辑squid配置文件sudo vim /etc/squid/squid.conf

# 设置监听端口,也可以使用常用端口(如 80 或 443)
http_port 22001

# 禁用客户端 IP 转发
forwarded_for off
# 隐藏代理标识
via off
# 伪装 HTTP 请求,不暴露自身版本信息
httpd_suppress_version_string on
# 不通过系统的 DNS 查询
dns_nameservers 8.8.8.8 8.8.4.4

# 允许所有ip访问,建议设置认证(如用户名密码)
acl all src 0.0.0.0/0
http_access allow all


2.重启Squid 服务

# 重启Squid
sudo systemctl restart squid

# 检查是否运行正常
sudo systemctl status squid

3.测试,可以使用多种方法

  • 1. 浏览器设置
  • 2. 系统代理设置
  • 3. 应用程序设置

curl工具示例

curl --proxy http://127.0.0.1:22001 http://httpbin.org/headers
# 如果配置了认证
curl --proxy-user 用户名:密码 --proxy http://127.0.0.1:22001 https://httpbin.org/ip

通信

Squid 支持的通信方式

协议 描述
HTTP 最常用的协议,客户端通过 HTTP 协议向 Squid 发送请求,Squid 转发请求到目标服务器。
HTTPS 支持客户端与 Squid 之间的加密通信,Squid 转发 HTTPS 请求到目标服务器。可配置 SSL 证书进行加密。
SSL Bump 通过中间人方式解密 HTTPS 流量进行监控或内容过滤,通常用于透明代理或流量分析。
FTP Squid 作为 FTP 代理,客户端通过代理访问 FTP 服务器。
Gopher Squid 支持 Gopher 协议,尽管现代互联网使用较少,但 Squid 仍然提供此支持。
Transparent Proxy (透明代理) Squid 作为透明代理,客户端无需手动配置,所有流量都自动通过代理服务器转发。
ICP (Internet Cache Protocol) Squid 通过 ICP 与其他 Squid 缓存服务器通信,优化缓存性能。

HTTPS 代理

通过 apt 在 Ubuntu 上安装的 Squid 默认版没有启用 SSL/TLS 支持(即不支持 HTTPS 代理或 SSL Bump 功能)。要启用 SSL 功能,需要重新编译 Squid 并启用 OpenSSL 支持。或者安装支持ssl的版本:sudo aptinstall squid-openssl。之前安装squid,也可以直接安装squid-openssl,程序会移除squid 包,但配置文件和缓存目录通常会保留。 使用squid -v可以看到含有'--with-openssl' '--enable-ssl-crtd'

  • 1.申请证书

使用acme.sh申请Let's Encrypt的免费SSL证书示例:

# 使用curl下载安装acme.sh
curl https://get.acme.sh | sh 

# 在域名服务,新建A解析a.yourdomain.com到服务器IP
# 使用dns方式,导入域名商api key
export Namesilo_Key="xxx"
# 签发ssl证书
.acme.sh/acme.sh --issue --dns dns_namesilo -d a.yourdomain.com  --server letsencrypt  --dnssleep 600
  • 2.编辑squid配置文件sudo vim /etc/squid/squid.conf
https_port 443 cert=/path/to/fullchain.cer key=/path/to/key/a.yourdomain.com.key

forwarded_for off
via off
httpd_suppress_version_string on
dns_nameservers 8.8.8.8 8.8.4.4

# 添加用户名密码认证
# htpasswd 工具通常包含在 Apache2 工具包中。安装sudo apt install apache2-utils
# 创建用户名和密码:sudo htpasswd -c /etc/squid/passwd 用户名
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
http_access deny all

# 禁用日志或定期清理
access_log none

2.重启Squid 服务

# 重启Squid
sudo systemctl restart squid

# 检查是否运行正常
sudo systemctl status squid

配置

资源

官网

网站