使用 squid 搭建 http 透明代理
欢迎访问新站点: https://www.yidiankuaile.com/post/squid-http-proxy
安装
安装 apache2-utils 用于 HTTP 认证文件的生成,
1  | apt-get install apache2-utils -y  | 
安装 Squid,
1  | apt-get install squid3 -y  | 
安装 stunnel
1  | apt-get install stunnel4 -y  | 
配置 Squid
修改 Squid 默认配置
配置文件位于 /etc/squid/squid.conf
修改监听地址与端口号
找到 TAG: http_port 注释,把其下方的
1  | # Squid normally listens to port 3128  | 
中 http_port 修改为 127.0.0.1:3128
使得 Squid 只能被本地(127.0.0.1)访问。此处可以修改为监听其他端口号。
修改访问权限与 HTTP 认证(可选)
若不需要添加 HTTP 认证,只需将 http_access deny all 修改为 http_access allow all 即可,无需下列的操作。
使用如下命令生成认证文件,
1  | htpasswd -c /etc/squid/squid.passwd <登录用户名>  | 
找到 TAG: auth_param 注释,在其下方添加,
1  | auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid3/squid.passwd  | 
找到 TAG: acl ,在其下方添加,
1  | acl ncsa_users proxy_auth REQUIRED  | 
找到 TAG: http_access ,在其下方添加,使得只允许经过认证的用户访问,
1  | http_access deny !ncsa_users  | 
重启 Squid
1  | service squid3 restart  | 
配置 stunnel
接下来,我们需要在 Squid 上添加一层加密。
生成公钥和私钥
生成私钥( privatekey.pem )
1  | openssl genrsa -out privatekey.pem 2048  | 
生成公钥( publickey.pem )
1  | openssl req -new -x509 -key privatekey.pem -out publickey.pem -days 1095  | 
(需要注意的是, 命令中中输入 Common Name 需要与服务器的 IP 或者主机名一致)
合并:
1  | cat privatekey.pem publickey.pem >> /etc/stunnel/stunnel.pem  | 
修改 stunnel 配置
新建一个配置文件 /etc/stunnel/stunnel.conf ,输入如下内容
1  | client = no  | 
配置中指定了 stunnel 所暴露的 HTTPS 代理端口为 4128,可以修改为其他的值。
修改 /etc/default/stunnel4 配置文件中 ENABLED 值为 1。
1  | ENABLED=1  | 
重启 stunnel
1  | service stunnel4 restart  | 
至此,服务器端已配置完成了。
更新记录
- 2019/6/18 20:04:37 首次发布