如何在 Ubuntu 20.04 上安装 Squid 代理服务器
在此页
- 先决条件
- 开始
- 安装鱿鱼代理
- 设置基于 IP 的身份验证
- 设置基于用户的身份验证
- 设置组合身份验证
- 设置 squid 以匿名化流量
- 验证鱿鱼代理
- 结论
Squid 是一个功能齐全的基于 Linux 的代理应用程序,主要用于过滤流量、安全性和 DNS 查找。它还用于通过缓存资源来提高 Web 服务器性能。简单来说,Squid 服务器是一台计算机,充当台式计算机和 Internet 之间的中介,它将入站客户端请求重定向到存储数据以便于检索的服务器。它支持多种协议,包括 HTTP、FTP、TLS、SSL、Internet Gopher 和 HTTPS。
在本教程中,我们将向您展示如何在 Ubuntu 20.04 服务器上安装和设置 Squid 代理服务器。
先决条件
- 一台运行 Ubuntu 20.04 的服务器。
- 为服务器配置了根密码。
入门
在开始之前,您需要将系统包更新到最新版本。您可以使用以下命令更新它们:
apt-get update -y
更新所有软件包后,重新启动系统以应用更改。
安装鱿鱼代理
默认情况下,Squid 包在 Ubuntu 20.04 默认存储库中可用。您可以使用以下命令安装它:
apt-get install squid -y
安装 Squid 后,您可以使用以下命令检查 Squid 服务的状态:
systemctl status squid
您应该得到以下输出:
? squid.service - Squid Web Proxy Server
Loaded: loaded (/lib/systemd/system/squid.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2020-08-23 12:00:24 UTC; 11s ago
Docs: man:squid(8)
Process: 49265 ExecStartPre=/usr/sbin/squid --foreground -z (code=exited, status=0/SUCCESS)
Process: 49282 ExecStart=/usr/sbin/squid -sYC (code=exited, status=0/SUCCESS)
Main PID: 49283 (squid)
Tasks: 4 (limit: 2353)
Memory: 16.4M
CGroup: /system.slice/squid.service
??49283 /usr/sbin/squid -sYC
??49285 (squid-1) --kid squid-1 -sYC
??49287 (logfile-daemon) /var/log/squid/access.log
??49288 (pinger)
Aug 23 12:00:24 ubunt4 squid[49285]: Max Swap size: 0 KB
Aug 23 12:00:24 ubunt4 squid[49285]: Using Least Load store dir selection
Aug 23 12:00:24 ubunt4 squid[49285]: Set Current Directory to /var/spool/squid
Aug 23 12:00:24 ubunt4 squid[49285]: Finished loading MIME types and icons.
Aug 23 12:00:24 ubunt4 squid[49285]: HTCP Disabled.
Aug 23 12:00:24 ubunt4 squid[49285]: Pinger socket opened on FD 14
Aug 23 12:00:24 ubunt4 squid[49285]: Squid plugin modules loaded: 0
Aug 23 12:00:24 ubunt4 squid[49285]: Adaptation support is off.
Aug 23 12:00:24 ubunt4 squid[49285]: Accepting HTTP Socket connections at local=[::]:3128 remote=[::] FD 12 flags=9
Aug 23 12:00:25 ubunt4 squid[49285]: storeLateRelease: released 0 objects
默认情况下,squid 监听 3128 端口。您可以使用以下命令查看:
netstat -plunt | grep 3128
您应该看到以下输出:
tcp6 0 0 :::3128 :::* LISTEN 50017/(squid-1)
完成后,您可以继续下一步。
设置基于 IP 的身份验证
您可以通过多种方式限制客户端访问互联网。在本节中,我们将设置 Squid 以根据客户端 IP 地址进行身份验证。
您可以通过编辑 Squid 默认配置文件来完成此操作:
nano /etc/squid/squid.conf
在文件开头添加以下行:
acl client1 src 192.168.10.10
acl client2 src 192.168.10.11
http_access allow client1 client2
完成后保存并关闭文件。然后重新启动 Squid 服务以应用更改:
systemctl restart squid
在哪里:
- client1 和 client2 是标识客户端计算机的名称。
- 192.168.10.10 和 192.168.10.11 是客户端计算机的 IP 地址。
现在只有配置了IP 192.168.10.10和192.168.10.11的电脑才能上网。
设置基于用户的身份验证
您还可以将 Squid 设置为基于用户和密码进行身份验证。为此,您需要在系统中安装 Apache utils 包。
运行以下命令来安装 Apache 实用程序包:
apt install apache2-utils -y
安装后,使用以下命令创建第一个用户:
htpasswd /etc/squid/passwd client1
系统将要求您设置密码,如下所示:
New password:
Re-type new password:
Adding password for user client1
接下来,使用以下命令创建第二个用户:
htpasswd /etc/squid/passwd client2
设置您的密码,如下所示:
New password:
Re-type new password:
Adding password for user client2
接下来,您可以使用以下命令验证这两个用户:
cat /etc/squid/passwd
您应该得到以下输出:
client1:$apr1$CPlx8eVt$NJq3CT/hzfDCnAZRypIq5/
client2:$apr1$XYxQ2npc$IW0Nqjp15O5WYCo/wCFlB0
接下来,打开squid默认配置文件:
nano /etc/squid/squid.conf
删除您在上一节中添加的前三行,并在文件开头添加以下行:
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwd
acl ncsa_users proxy_auth REQUIRED
http_access allow ncsa_users
保存并关闭文件。然后,重新启动 Squid 代理服务以应用更改:
systemctl restart squid
现在,您需要提供用户名和密码才能访问互联网。
设置组合身份验证
您还可以设置 Squid 以根据 IP 地址和用户名/密码对客户端进行身份验证。
打开squid默认配置文件:
nano /etc/squid/squid.conf
找到您在上一节中添加的以下行:
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwd
acl ncsa_users proxy_auth REQUIRED
http_access allow ncsa_users
并且,将它们替换为以下行:
acl client1 src 192.168.10.10
acl client2 src 192.168.10.11
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwd
acl ncsa_users proxy_auth REQUIRED
http_access allow client1 client2 ncsa_users
完成后保存并关闭文件,然后重新启动 Squid 服务以应用更改:
systemctl restart squid
设置 squid 以匿名化流量
接下来,您需要添加一些规则来屏蔽从您的 Squid HTTP 代理接收流量的服务器的客户端 IP 地址。
您可以通过编辑 Squid 默认配置文件来完成此操作:
nano /etc/squid/squid.conf
在文件开头添加以下行:
forwarded_for off
request_header_access Allow allow all
request_header_access Authorization allow all
request_header_access WWW-Authenticate allow all
request_header_access Proxy-Authorization allow all
request_header_access Proxy-Authenticate allow all
request_header_access Cache-Control allow all
request_header_access Content-Encoding allow all
request_header_access Content-Length allow all
request_header_access Content-Type allow all
request_header_access Date allow all
request_header_access Expires allow all
request_header_access Host allow all
request_header_access If-Modified-Since allow all
request_header_access Last-Modified allow all
request_header_access Location allow all
request_header_access Pragma allow all
request_header_access Accept allow all
request_header_access Accept-Charset allow all
request_header_access Accept-Encoding allow all
request_header_access Accept-Language allow all
request_header_access Content-Language allow all
request_header_access Mime-Version allow all
request_header_access Retry-After allow all
request_header_access Title allow all
request_header_access Connection allow all
request_header_access Proxy-Connection allow all
request_header_access User-Agent allow all
request_header_access Cookie allow all
request_header_access All deny all
完成后保存并关闭文件,然后重新启动 Squid 服务以应用更改:
systemctl restart squid
验证鱿鱼代理
接下来,您需要在 Mozilla 网络浏览器中定义代理服务器。
转到客户端系统,打开 Mozilla 网络浏览器,然后单击编辑 => 首选项,如下所示:

单击“网络设置”部分,然后单击“设置”。您应该会看到以下页面:

选择 Manual proxy configuration 单选按钮,在 HTTP Host 字段中输入您的 Squid 服务器 IP 地址,在 Port 字段中输入 3128,然后选中 Use this proxy server for all protocols 复选框,然后单击 OK 按钮保存设置。
现在,您的浏览器已配置为通过 Squid 代理浏览 Internet。
要验证它,请键入 URL https://www.whatismyip.com/。您将被要求提供用户名和密码,如下所示:

提供您之前创建的 Squid 代理服务器用户名和密码,然后单击“确定”按钮。您应该会看到以下页面:

在上面的页面上,您应该看到您的 Squid 服务器 IP 地址,而不是您的客户端计算机的 IP 地址。
结论
恭喜!您已经在 Ubuntu 20.04 服务器上成功安装并配置了 Squid 代理服务器。您还可以配置 Squid 代理以根据单词、域和 IP 限制特定网站。有关详细信息,请访问 Squid 官方文档。