使用 Squid 搭建 HTTP 透明代理

创建
阅读 2819

安装

安装 apache2-utils 用于 HTTP 认证文件的生成,

apt-get install apache2-utils -y

安装 Squid,

apt-get install squid3 -y

安装 stunnel

apt-get install stunnel4 -y

配置 Squid

修改 Squid 默认配置

配置文件位于 /etc/squid/squid.conf

修改监听地址与端口号

找到 TAG: http_port 注释,把其下方的

# Squid normally listens to port 3128
http_port 3128

中 http_port 修改为 127.0.0.1:3128

使得 Squid 只能被本地(127.0.0.1)访问。此处可以修改为监听其他端口号。

修改访问权限与 HTTP 认证(可选)

若不需要添加 HTTP 认证,只需将 http_access deny all 修改为 http_access allow all 即可,无需下列的操作。

使用如下命令生成认证文件,

htpasswd -c /etc/squid/squid.passwd <登录用户名>

找到 TAG: auth_param 注释,在其下方添加,

auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid3/squid.passwd
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

找到 TAG: acl ,在其下方添加,

acl ncsa_users proxy_auth REQUIRED

找到 TAG: http_access ,在其下方添加,使得只允许经过认证的用户访问,

http_access deny !ncsa_users
http_access allow ncsa_users

重启 Squid

service squid3 restart

配置 stunnel

接下来,我们需要在 Squid 上添加一层加密。

生成公钥和私钥

生成私钥( privatekey.pem )

openssl genrsa -out privatekey.pem 2048

生成公钥( publickey.pem )

openssl req -new -x509 -key privatekey.pem -out publickey.pem -days 1095

(需要注意的是, 命令中中输入 Common Name 需要与服务器的 IP 或者主机名一致)

合并:

cat privatekey.pem publickey.pem >> /etc/stunnel/stunnel.pem

修改 stunnel 配置

新建一个配置文件 /etc/stunnel/stunnel.conf ,输入如下内容

client = no
[squid]
accept = 4128
connect = 127.0.0.1:3128
cert = /etc/stunnel/stunnel.pem

配置中指定了 stunnel 所暴露的 HTTPS 代理端口为 4128,可以修改为其他的值。

修改 /etc/default/stunnel4 配置文件中 ENABLED 值为 1。

ENABLED=1

重启 stunnel

service stunnel4 restart

至此,服务器端已配置完成了。

更新记录

  1. 2019-06-18 20:04:37 首次发布

参考链接

  1. 使用 Squid 搭建 HTTPS 代理服务器

本文链接 https://www.yidiankuaile.com/post/squid-http-proxy