Squid 是一款很受欢迎的开源代理服务器,可以提升网络性能、安全性与隐私性。它可以用来缓存常被访问的内容、过滤不需要的流量,并让客户端连接匿名化。

在开始之前,需要有 Linux 9 系统的 root 权限,以及稳定的网络连接,并具备基本的 Linux 终端命令和网络协议知识。

1. 安装 Squid

使用包管理器安装 Squid:

sudo dnf install squid

这会下载并安装 Squid 包及其依赖包。如果安装成功,就可以进行下一步。

2. 在服务器上配置 Squid

Squid 默认的配置文件位于 /etc/squid/squid.conf。要编辑这个文件,可以用 root 权限打开 Nano 或 Vim 等文本编辑器:

sudo vim /etc/squid/squid.conf

可以依照需求自定义配置文件中的各项设置。以下是一个允许任何客户端访问代理服务器的配置示例:

http_port 3128
cache_dir ufs /var/spool/squid 100 16 256
acl all src all
http_access allow all
  • http_port 指定 Squid 监听传入请求所使用的 TCP 端口号。
  • cache_dir 指定 Squid 存储缓存文件的目录。
  • acl all src all 定义了一个允许任何客户端访问代理服务器的访问控制列表。
  • http_access allow all 授予 ACL 中的客户端使用代理服务器的权限。

用以下命令启动并启用 Squid 服务:

sudo systemctl enable --now squid

检查状态以确认 Squid 正在运行:

sudo systemctl status squid

应该会看到显示服务处于活动状态且正在运行的消息。

3. 保护 Squid

Squid 默认没有任何安全机制,因此需要采取一些步骤来保护 Squid 的安装。可以设置访问控制来限制谁能访问代理服务器、监控 Squid 日志以留意可疑活动,并让 Squid 保持在最新的安全补丁状态。

使用访问控制列表(ACL)来限制对代理服务器的访问。例如,可以创建一个只允许特定 IP 地址或网段发出请求的 ACL。

监控 Squid 日志,留意异常活动,例如来自未知客户端的请求,或单一 IP 地址产生的大量流量。可以使用 Logwatch 或 Splunk 之类的工具来解析和分析 Squid 日志。

要使用 https_proxy,需要一张证书:

sudo openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 -keyout /etc/squid/ssl/squid.key -out /etc/squid/ssl/squid.crt 

4. Squid 故障排查

如果遇到 Squid 的问题,可以用各种故障排查技巧来诊断和解决。以下是一些起步的建议:

检查 Squid 日志中的错误消息或警告。默认的日志文件位于 /var/log/squid/access.log/var/log/squid/cache.log

使用 squidclient 命令测试 Squid 的连接和性能。例如,可以执行 squidclient -h localhost -p 3128 http://www.google.com 来测试 Squid 是否能够获取网页。

利用在线资源和社区论坛,向其他 Squid 用户寻求帮助。Squid 官方网站、邮件列表和 IRC 频道都是不错的起点。

通过以下命令安装认证工具:

sudo dnf install httpd-tools -y

并新增账号:

sudo htpasswd -c /etc/squid/passwords your_accout_name

编辑配置文件 vim /etc/squid/squid.conf,加入以下几行:

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwords
auth_param basic children 5
auth_param basic realm "Squid proxy-caching web server"
auth_param basic credentialsttl 5 hours

acl auth_users proxy_auth REQUIRED
http_access allow auth_users

5. 在客户端配置

在 Linux 服务器上配置好 Squid 之后,可能会想要配置客户端设备,让它们通过 Squid 代理服务器连上互联网。其中一种方式是在机器上设置 http_proxyhttps_proxy 这两个环境变量。

export http_proxy=http://<squid_server_ip>:3128
export https_proxy=http://<squid_server_ip>:3128

squid_server_ip 换成 Squid 服务器的 IP 地址。如果已经把 Squid 配置成监听其他端口号,也要把 3128 换成对应的端口号。

如果有加上密码,代理地址中也需要加上认证信息:

export http_proxy=your_account_name:your_password@<squid_server_ip>:3128
export https_proxy=your_account_name:your_password@<squid_server_ip>:3128

要让这些环境变量在不同终端会话之间持续生效,可以把上面两行命令加进 shell 的启动文件(bash 用 ~/.bashrc,zsh 用 ~/.zshrc 等等)。

现在就可以通过 Squid 代理服务器连上互联网了。请注意,并非所有应用程序都会遵循这些环境变量,因此有些应用程序可能需要另外单独配置代理服务器。

6. 小结

本教程演示了如何在 Linux 上部署 Squid,并依照需求进行相关配置。