网站搜索

如何在 Ubuntu 和 Debian 上设置“Squid 代理”服务器


Squid 是最流行的缓存和转发 HTTP Web 代理服务器,我的众多公司都使用它来缓存 Web 服务器上的网页,以提高 Web 服务器速度、减少响应时间并减少网络带宽使用。

另请阅读:如何在 CentOS 7 上使用 Squid 创建 HTTP 代理

在本文中,我们将解释如何在 Ubuntu 和 Debian 发行版上安装鱿鱼代理服务器并将其用作 HTTP 代理服务器。

如何在 Ubuntu 上安装 Squid

在开始之前,您应该知道 Squid 服务器没有任何要求,但 RAM 利用率可能会根据通过代理服务器浏览互联网的客户端而有所不同。

Squid 软件包可以从 Ubuntu 基础存储库安装,但在此之前请确保通过运行更新您的软件包。

sudo apt update

一旦您的软件包是最新的,您可以使用以下命令进一步安装鱿鱼并在系统启动时启动并启用它。

sudo apt -y install squid
sudo systemctl start squid
sudo systemctl enable squid

此时,您的 Squid Web 代理应该已经在运行,您可以使用以下命令验证服务的状态。

sudo systemctl status squid
样本输出
● squid.service - LSB: Squid HTTP Proxy version 3.x
   Loaded: loaded (/etc/init.d/squid; generated)
   Active: active (running) since Tue 2018-12-04 06:42:43 UTC; 14min ago
     Docs: man:systemd-sysv-generator(8)
    Tasks: 4 (limit: 1717)
   CGroup: /system.slice/squid.service
           ├─2761 /usr/sbin/squid -YC -f /etc/squid/squid.conf
           ├─2766 (squid-1) -YC -f /etc/squid/squid.conf
           ├─2768 (logfile-daemon) /var/log/squid/access.log
           └─2772 (pinger)

Dec 04 06:42:43 tecmint systemd[1]: Starting LSB: Squid HTTP Proxy version 3.x...
Dec 04 06:42:43 tecmint squid[2708]:  * Starting Squid HTTP Proxy squid
Dec 04 06:42:43 tecmint squid[2708]:    ...done.
Dec 04 06:42:43 tecmint systemd[1]: Started LSB: Squid HTTP Proxy version 3.x.
Dec 04 06:42:43 tecmint squid[2761]: Squid Parent: will start 1 kids
Dec 04 06:42:43 tecmint squid[2761]: Squid Parent: (squid-1) process 2766 started

以下是您应该注意的一些重要的鱿鱼文件位置:

  • Squid配置文件:/etc/squid/squid.conf
  • Squid 访问日志:/var/log/squid/access.log
  • Squid 缓存日志:/var/log/squid/cache.log

默认配置文件包含一些需要配置的配置指令来影响 Squid 的行为。

现在使用 Vi 编辑器打开此文件进行编辑,并进行如下所示的更改。

sudo vim /etc/squid/squid.conf

现在,您可以搜索以下行并根据要求更改它们,在 Vi 编辑器中,您可以通过点击 'ESC' 并输入“/ 来搜索这些行”键写入要查找的特定行。

  • http_port :这是 HTTP 代理服务器的默认端口,默认为 3128,您可以将其更改为您想要的任何其他端口,也可以添加如果您愿意,可以在行尾添加 “透明” 标记,例如 http_port 8888 透明,以使 Squid 代理充当透明代理。
  • http_access拒绝所有:此行不会让任何人访问HTTP代理服务器,这就是为什么你需要将其更改为http_access允许所有才能开始使用你的Squid代理服务器。
  • visible_hostname:该指令用于设置鱿鱼服务器的特定主机名。您可以为鱿鱼指定任何主机名。

进行上述更改后,您可以使用命令重新启动 Squid 代理服务器。

sudo systemctl restart squid

在 Ubuntu 上将 Squid 配置为 HTTP 代理

在本squid配置部分中,我们将向您解释如何将squid配置为仅使用客户端IP地址进行身份验证的HTTP代理。

添加 Squid ACL

如果您希望仅允许一个 IP 地址通过新代理服务器访问互联网,则需要在配置文件中定义新的 acl访问控制列表)。

sudo vim /etc/squid/squid.conf

您应该添加的 acl 规则是:

acl localnet src XX.XX.XX.XX

其中XX.XX.XX.XX是客户端计算机的IP地址。此 acl 应添加到 ACL 部分的开头,如以下屏幕截图所示。

ACL 旁边定义注释始终是一个好习惯,例如,它会描述谁使用此 IP 地址。

acl localnet src 192.168.0.102  # Boss IP address

您需要重新启动 Squid 服务才能使新更改生效。

sudo systemctl restart squid

在 Squid 代理中打开端口

默认情况下,squid 配置中只允许某些端口,如果您想添加更多端口,只需在配置文件中定义它们,如图所示。

acl Safe_ports port XXX

其中 XXX 是您希望允许的端口号。同样,在 acl 旁边定义注释是一个很好的做法,该注释将描述端口的用途。

为了使更改生效,您需要再次重新启动squid。

sudo systemctl restart squid

Squid 代理客户端身份验证

为了允许用户在使用代理之前进行身份验证,您需要在配置文件中启用基本的 http 身份验证,但在此之前您需要使用以下命令安装 apache2-utils 包。

sudo apt install apache2-utils

现在创建一个名为“passwd”的文件,该文件稍后将存储用于身份验证的用户名。 Squid 使用用户“proxy” 运行,因此该文件应归该用户所有。

sudo touch /etc/squid/passwd
sudo chown proxy: /etc/squid/passwd
ls -l /etc/squid/passwd

现在我们将创建一个名为“howtoing”的新用户并设置其密码。

sudo htpasswd /etc/squid/passwd tecmint

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

现在要启用基本的 http 身份验证,请打开配置文件。

sudo vim /etc/squid/squid.conf

在端口 ACL 后添加以下行:

auth_param basic program /usr/lib64/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

保存文件并重新启动squid以使新的更改生效:

sudo systemctl restart squid

在 Squid 代理上阻止网站

要阻止访问不需要的网站,请首先创建一个名为“blacklisted_sites.acl”的文件,用于在其中存储列入黑名单的网站。

sudo touch /etc/squid/blacklisted_sites.acl

例如,现在添加您希望阻止访问的网站。

.badsite1.com
.badsite2.com

后面的通知squid阻止所有对该网站的引用,包括www.badsite1subsite.badsite1.com等。

现在打开 Squid 的配置文件。

sudo vim /etc/squid/squid.conf

在上述 ACL 后面添加以下两行:

acl bad_urls dstdomain "/etc/squid/blacklisted_sites.acl"
http_access deny bad_urls

现在保存文件并重新启动squid:

sudo systemctl restart squid

使用 Squid 阻止特定关键字

要阻止关键字列表,请首先创建一个名为“blockkeywords.lst”的文件,该文件将在其中存储列入黑名单的关键字。

sudo touch /etc/squid/blockkeywords.lst

例如,现在添加您希望阻止访问的关键字。

facebook
instagram
gmail

现在打开 Squid 的配置文件并添加以下规则。

acl blockkeywordlist url_regex "/etc/squid/blockkeywords.lst"
http_access deny blockkeywordlist

现在保存文件并重新启动squid:

sudo systemctl restart squid

准确配置所有内容后,您现在可以配置本地客户端 Web 浏览器或操作系统的网络设置以使用新配置的鱿鱼 HTTP 代理。

配置客户端使用 Squid 代理

现在要测试您的代理服务器是否正常工作,您可以打开 Firefox 并转到编辑 –> 首选项 –> 高级 –> 网络 –> 设置,然后选择“<手动代理配置”,然后输入您的代理服务器 IP 地址和用于所有连接的端口,如下所示。

一旦您填写了所有必需的代理详细信息,您将能够使用您的 Squid 代理服务器上网冲浪,您可以在任何其他浏览器或您想要的程序中执行相同的操作。

为了确保您使用代理服务器上网,您可以访问http://www.ipaddresslocation.org/,在右上角您必须看到与您的服务器相同的IP地址IP地址。

更多额外的配置设置,你可以查看官方的squid文档。如果您有任何问题或意见,请在下面的评论部分添加。