使用 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 首次发布