在 Ubuntu 22.04 | 20.04 | 安装和配置 Squid 代理服务器
Squid 是一个代理和缓存服务器。它充当代理,欧博官网将请求转发到所需的目的地,但也保存请求的内容。如果另一台服务器在鱿鱼服务器中尚未过期之前请求相同的信息,它将向请求者提供相同的内容,从而提高下载速度并节省带宽。
Squid 代理服务器支持缓存通过不同协议请求的内容,例如http、SSL 请求、DNS 查找和FTP。本指南介绍如何在 Ubuntu 22.04|20.04 上安装和配置 Squid 代理
在 Ubuntu 22.04|20.04 上安装 Squid 代理服务器首先,更新您的系统软件包。请注意,对于所有命令,我将以 root 用户身份运行它们
sudo apt update && sudo apt upgrade -y检查升级成功后是否需要重启系统。
[ -e /var/run/reboot-required ] && sudo reboot接下来,在 Ubuntu 上安装鱿鱼代理。在 Ubuntu 中安装 Squid 代理很容易,因为它已经在 Ubuntu 20 存储库中可用。使用以下命令确认这一点。
sudo apt-cache policy squid输出
要安装 Squid 代理,请运行以下命令。还可以在系统启动时启动然后检查状态
sudo apt install -y squid sudo systemctl start squid sudo systemctl enable squid sudo systemctl status squid如果鱿鱼正确安装并运行,您应该输出如下所示:
在 Ubuntu 22.04|20.04 上配置 Squid 代理服务器默认的 Squid 代理配置文件位于 /etc/squid/squid.conf 中。 该文件已经有许多至少可以工作的设置,但我们可以修改以适应我们的偏好。首先,欧博创建原始文件的备份。
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.orig现在,在/etc/squid/squid.conf中进行自定义设置。使用您喜欢的文件编辑器打开文件
sudo vim /etc/squid/squid.conf1.更改squid默认端口默认的 Squid tcp 端口是 3128。要更改此端口,请打开 squid.conf 文件并查找 http_port 行。更改为您所需的端口号并保存文件。
#http_port 3128 http_port 8080确保允许该端口通过防火墙
sudo ufw allow 8080/tcp sudo ufw enable2.设置Squid缓存大小要设置所需的高速缓存,请使用以下设置。对于我的情况,我使用 256 MB
cache_mem 256 MB3. 指定要使用的 DNS 名称服务器要定义您自己的 DNS 服务器,请使用如下所示的命令
dns_nameservers 8.8.8.8 8.8.4.44.Squid ACL和http_access现在,编辑squid.conf 添加您选择的规则。代理服务器会选择性地选择通过它的内容。我们可以允许来自特定网络/IP 地址的访问并拒绝其他网络/IP 地址。它还可用于通过限制对某些网站的访问或基于某些关键字阻止内容来过滤流量。这是通过使用 ACL(访问控制列表)来实现的,ACL 定义允许什么和拒绝什么。 Http_access 根据 ACL 定义允许或拒绝。
如何为 Squid 代理服务器定义 ACLACL(访问控制列表)是定义允许哪些内容通过代理服务器以及拒绝哪些内容的语句。每个语句必须以 acl 开头,后跟规则名称。名称后面是acltype,最后是参数或文件。 在使用文件的情况下,文件中的每一行必须仅包含一项。
acl aclname acltype argument.. acl aclname acltpe “file”…默认定义的ACL规则如图所示。您可以通过在每行开头添加 # 来选择禁用。要创建新规则,请按照以下示例操作:
示例1:允许局域网网络通过Squid代理服务器
创建acl规则
acl my_lan src 192.168.100.0/24现在,使用 http_access 指令根据定义的规则允许或拒绝。在我们的例子中,我们需要允许
http_access allow my_lan请注意,每次创建 ACL 访问规则时的最后一条规则应该是拒绝全部。当您允许所有必需的站点时应执行此操作,否则您可能会阻止自己访问某些所需的站点。
http_access deny all拒绝访问 Squid 代理服务器中的特定网站当处理多个网站时,将所有网站放在一个文件中然后调用它会更容易且更有组织性,否则您将在 acl 规则中列出引用。在我们的示例中,我将在squid 目录中创建一个名为deniedsites.squid 的文件。
sudo vim /etc/squid/deniedsites.squid添加您希望拒绝访问的站点。就我而言,我使用的是 facebook 和 youtube。之后保存文件。
.facebook.com .youtube.com现在打开squid.conf并为被拒绝的站点创建acl规则并添加拒绝规则然后保存文件。
acl deniedsites dstdomain “/etc/squid/deniedsites.squid” http_access deny deniedsites如果您要在 acl 规则中列出站点:
acl deniedsites dstdomain facebook.com youtube.com http_access deny deniedsites注意每次修改后都必须重启squid服务器
sudo systemctl restart squid如何在Squid代理服务器中根据某些关键字来阻止流量创建一个包含关键字的文件。使用文件名创建拒绝流量的 ACL 规则。
sudo vim /etc/squid/keywords.squid.添加您的关键字并保存。
gamble nudes xxx编辑squid.conf以创建acl和拒绝规则保存并记住重新启动squid。
acl keywords url_regex -i "/etc/squid/keywords.squid" http_access deny keywords您的文件最终出现并添加了如下内容。
对于 ACL
对于http_访问
要在 Squid 代理服务器中打开端口,请使用如下所示的命令语法
acl Safe_ports port <port-number>如何屏蔽 Squid 代理服务器上的传出流量代理服务器应该通过暴露代理 IP 地址而不是我们自己的 IP 地址来隐藏我们的身份。但是,代理可以通过 http 传出流量让我们的 IP 获知。要禁用此功能,请编辑 squid.conf 文件并通过标头禁用。 为此,请检查带有 #via on 的行。取消注释并从开启更改为关闭。
# via on via off此外,代理服务器不应在其转发的 http 请求中附加客户端 IP 地址。通过修改 squid.conf 文件中的以下行来禁用此功能。
为了避免泄露您的 Squid 代理服务器,您可以删除 Squid 代理标头。在TAG中添加以下行;请求头访问。
request_header_access From deny all request_header_access Server deny all request_header_access WWW-Authenticate deny all request_header_access Link deny all request_header_access Cache-Control deny all request_header_access Proxy-Connection deny all request_header_access X-Cache deny all request_header_access X-Cache-Lookup deny all request_header_access X-Forwarded-For deny all request_header_access Pragma deny all request_header_access Keep-Alive deny all保存squid.conf文件并记得重新启动squid
systemctl restart squid如何检查Squid配置错误下面的命令将指出您的配置文件中可能存在错误的地方
sudo squid -k parse配置客户端通过 Squid 代理服务器进行连接配置用户认证首先,让我们创建并允许用户通过 Squid 代理进行身份验证。我们需要在squid.conf 文件中启用http 身份验证。安装 apache2-utils。
sudo apt update sudo apt install -y apache2-utils创建一个用于存储用户的文件。我的叫做“passwd”。该文件应由默认 Squid 用户proxy拥有。
sudo touch /etc/squid/passwd sudo chown proxy: /etc/squid/passwd让我们添加一个名为 lorna 的用户
$ sudo htpasswd /etc/squid/passwd lorna New password: Re-type new password: Adding password for user lorna现在在 squid.conf 文件中添加以下行。添加完成后,保存并重启squid。
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd auth_param basic children 5 auth_param basic realm Squid Basic Authentication auth_param basic credentialsttl 2 hours acl auth_users proxy_auth REQUIRED http_access allow auth_users检查 basic_ncsa_auth 的位置非常重要,以确保您使用正确的路径并且不会出现错误。使用以下命令:
dpkg -L squid | grep ncsa_auth您的 Squid 文件应如下所示:
要测试您的 Squid 代理服务器是否正常工作,请转至您的客户端 Web 浏览器(例如 Firefox),并配置手动代理身份验证。打开Firefox,单击最右侧的三栏。在编辑下,点击首选项。单击网络设置下的设置。在出现的页面上,点击手动代理配置单选按钮并填写您的代理服务器详细信息。如果您愿意,您可以在“无代理”下排除其他 IP 地址的代理
现在确认您的 Squid 代理设置正在运行。打开 Firefox 浏览器并尝试在受限制的网站(例如 youtube.com)中搜索我的案例。您应该看到一个页面显示“代理服务器拒绝连接”
现在打开另一个不受限制的站点。系统应该提示您进行身份验证,输入用户名和密码后,您应该能够访问该网站。
这是有关如何在 Ubuntu 22.04|20.04 中安装和配置 Squid 代理服务器的分步指南。我希望你喜欢。以下是您日常 Linux 安装的更详细指南
如何在 Debian 上安装和配置 HAProxy
如何为 Semaphore Ansible Wed UI 配置 Nginx 代理
如何在 Ubuntu/Debian Linux 上安装 Envoy 代理
如何从 Web 界面管理 HAProxy 服务器