如何在 Ubuntu 20.04 上安装和配置 Squid 代理服务器

乌贼 是一个功能齐全的基于 Linux 的代理应用程序,主要用于过滤流量、安全性和 DNS 查找。 它还用于通过缓存资源来提高 Web 服务器性能。 简单来说,一个 鱿鱼服务器 是一台充当台式计算机和 Internet 之间的中介的计算机,它将入站客户端请求重定向到存储数据的服务器,以便于检索。 它支持多种协议,包括 HTTP、FTP、TLS、SSL、Internet Gopher 和 HTTPS。
本指南说明 如何在 Ubuntu 20.04 上安装和配置 Squid 代理。

如何在 CentOS 7 上安装和配置 Squid 代理

Ubuntu 20.04 服务器上的 Squid 代理服务器

在开始之前,您需要将系统包更新到最新版本。 您可以使用以下命令更新它们:

请注意,对于所有命令,我将以 root 用户身份运行它们!

$ sudo apt-get update $ sudo apt-get upgrade

更新所有软件包后,重新启动系统以应用更改。
要安装 Squid 代理,请运行以下命令。 还可以在系统启动时启动,然后检查状态:

$ sudo apt-get install -y squid $ sudo systemctl start squid $ sudo systemctl enable squid $ sudo systemctl status squid 

如果 squid 正确安装并运行,您应该输出如下所示:

在 Ubuntu 20.04 上配置 Squid 代理服务器

鱿鱼配置文件位于 /etc/squid/squid.conf/etc/squid/conf.d/ 目录。 让我们编辑 /etc/squid/squid.conf 使用文本编辑器。 备份原始文件,以便我们可以在出现问题时使用 cp命令

$ sudo cp -v /etc/squid/squid.conf{,.bkp}

现在,在 /etc/squid/squid.conf. 使用您喜欢的文件编辑器打开文件:

$ sudo nano /etc/squid/squid.conf

更改鱿鱼默认端口

默认 Squid tcp 端口 是 3128。要改变这个,打开 squid.conf 文件并寻找 http_port 线。 更改为所需的端口号并保存文件。

#http_port 3128 http_port 8080

确保允许端口通过防火墙

$ sudo ufw allow 8080/tcp $ sudo ufw enable

设置 Squid 缓存内存大小

要设置所需的缓存,请使用以下设置。 就我而言,我使用的是 512 MB:

cache_mem 512 MB

指定要使用的 DNS 名称服务器

要定义您自己的 DNS 服务器,请使用如下所示的命令

dns_nameservers 8.8.8.8 8.8.4.4

为 Squid 代理服务器定义 ACL

ACL (访问控制列表) 是定义允许通过代理服务器的内容和拒绝的内容的语句。 每个语句都必须以 acl 开头,后跟规则名称。 名称之后是 acltype,最后是参数或文件。 在使用文件的地方,文件中的每一行必须只包含一项。

acl aclname acltype argument.. acl aclname acltpe “file”…

例子:

通过 Squid 代理服务器允许 LAN 网络
创建 acl 规则

acl my_lan src 192.168.100.0/24

现在根据定义的规则允许或拒绝,使用 http_access 指令。 在我们的例子中,我们需要允许

http_access allow my_lan

请注意,每次创建 ACL 访问规则时的最后一条规则应该是 deny all。 这应该在您允许所有需要的站点时完成,否则您可能会阻止自己访问某些需要的站点。

如何在 Squid 代理服务器中阻止访问特定网站

让我们屏蔽 twitter.com 和 facebook.com:

acl deniedsites dstdomain facebook.com twitter.com http_access deny deniedsites

注意每次修改都必须重启squid server

$ systemctl restart squid

使用关键字阻止 URL

假设任何 url 包含诸如“foo”或“browse.php?u=”之类的关键字,请使用 url_regex acl 阻止它:

acl urlkeywordsblocks url_regex -i "/etc/squid/blocked-urls-keyword.conf" http_access deny urlkeywordsblocks

创建一个名为 /etc/squid/blockd-urls-keyword.conf 如下:

sudo nano /etc/squid/blocked-urls-keyword.conf

附加网址/关键字:

foo browse.php?u=

设置基于 IP 的身份验证

您可以通过多种方式限制客户端访问 Internet。 在本节中,我们将设置 Squid 以根据客户端的 IP 地址进行身份验证。
您可以通过编辑 Squid 默认配置文件来实现:

$ nano /etc/squid/squid.conf

在文件开头添加以下行:

acl client1 src 192.168.100.8 acl client2 src 192.168.100.17 http_access allow client1 client2

Save 和 close 完成后的文件。 然后重新启动 Squid 服务以应用更改:

$ systemctl restart squid

客户 1客户端2 是标识客户端计算机的名称。 192.168.100.8192.168.100.17 是客户端计算机的 IP 地址。

现在,只有配置了 IP 192.168.100.8 和 192.168.100.17 的计算机才能访问 Internet。

设置基于用户的身份验证

您还可以设置 Squid 根据用户和密码进行身份验证。 为此,您需要安装 Apache utils 包在您的系统中。
运行以下命令安装 Apache 实用程序包:

$ sudo apt install apache2-utils -y

安装后,使用以下命令创建第一个用户:

htpasswd /etc/squid/passwd client1

系统会要求您设置密码,如下所示:

New password:  Re-type new password:

为用户 client1 添加密码
接下来,使用以下命令创建第二个用户:

$ htpasswd /etc/squid/passwd client2

设置您的密码,如下所示:

New password:  Re-type new password: Adding password for user client2

接下来,打开 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

Save 和 close 文件。 然后,重新启动 Squid 代理服务以应用更改:

$ sudo systemctl restart squid

现在,您需要提供用户名和密码才能访问互联网。

验证 Squid 代理

接下来,您需要在 Mozilla Web 浏览器中定义您的代理服务器。
转到客户端系统,打开 Mozilla Web 浏览器,然后单击 Edit => Preferences,如下所示:

设置代理 firefox

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

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

选择手动代理配置单选按钮,在 HTTP 主机字段中输入您的 Squid 服务器 IP 地址,在端口字段中输入 8080,然后选中对所有协议使用此代理服务器复选框,然后单击确定按钮以保存设置。
现在确认您的 Squid 代理设置有效。 打开 Firefox 浏览器并尝试搜索受限制的站点,例如 youtube.com 以了解我的情况。 您应该会看到一个页面,上面写着“代理服务器拒绝连接”

现在打开另一个不受限制的站点。 系统会提示您进行身份验证,输入用户名和密码后,您应该能够访问该站点。

结论

这是一个分步指南 如何在 Ubuntu 20.04 中安装和配置 Squid 代理服务器. 我希望你喜欢。 请在评论部分分享您的反馈。