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

在我们之前的文章如何在 Linux 上安装 Squid 代理服务器中,我们已经为您提供了 Squid 服务器的基本介绍及其在 Linux 系统中的安装。 在这篇文章中,我们将跟进配置 Squid 代理服务器。 我们将涵盖以下主题:

  1. 配置 Squid 监听不同的端口
  2. 为 Squid 代理服务器配置主机名
  3. 设置 Squid 缓存大小
  4. 指定要使用的 DNS 名称服务器
  5. 拒绝访问 Squid 代理服务器中的某些网站
  6. 配置 Squid 代理客户端身份验证
  7. 配置客户端通过 Squid 代理服务器连接

笔记: 本文中讨论的命令和过程已经过测试 Ubuntu 20.04 LTS (焦点窝)。 相同的命令和过程也适用于 Debian 发行版。

先决条件

  • 安装了 Ubuntu 或 Debian 的机器
  • 须藤用户

Linux 上 Squid 代理服务器的配置

Squid 代理服务器配置文件位于 /etc/squid/squid.conf。列表。 该文件包含配置 Squid 代理服务器的指令。

配置 Squid 监听不同的端口

默认情况下,Squid 代理服务器在端口 3128 上侦听来自客户端计算机的流量。 但是,您可以将其配置为侦听默认端口以外的其他端口 http_port 指示。

使用以下命令编辑 squid 配置:

$ sudo nano /etc/squid/squid.conf

现在在配置文件中找到以下条目。

笔记: 您可以使用 Ctrl+W 搜索任何行。 按 Ctrl+W,输入关键字,然后点击 Enter.

http_port 3128

现在更换 3128 使用您希望 Squid 代理服务器侦听的端口号,比如说 3155

http_port 3155

现在,重新启动 squid 代理服务器服务以使更改生效:

$ sudo service squid restart

为 Squid 代理服务器配置主机名

如果 Squid 代理服务器无法自行确定机器的主机名,您可以为其配置主机名。 要配置主机名,您可以使用 可见主机名 指示。 Squid 在错误消息、内部 URL、FTP 目录列表等中使用此名称。

使用以下命令编辑 squid 配置:

$ sudo nano /etc/squid/squid.conf

现在在配置文件中添加以下条目替换 <主机名> 使用您想要设置为 Squid 代理服务器主机名的任何名称。 不必使用系统的实际主机名。

visible_hostname <host_name>

例如,设置“linux方式” 作为 Squid 代理服务器的主机名,条目将是:

visible_hostname linuxways 

完成配置后,保存并退出配置文件。

现在,重新启动 Squid 代理服务以使配置更改生效。

$ sudo service squid restart

如果 Squid 客户端收到任何错误页面,他将看到网页底部列出的主机名。

配置squid代理服务器

设置 Squid 缓存大小

Squid 将经常访问的内容缓存在内存中。 Squid 高速缓存内存的默认大小为 256 MB。 要更改 Squid 高速缓存的大小, 缓存内存 使用指令。

使用以下命令编辑配置文件:

$ sudo nano /etc/squid/squid.conf

然后在配置文件中搜索以下条目,并将 256 替换为要为缓存大小设置的数量。

cache_mem 256 MB

例如,要将缓存大小设置为 512 MB,条目将更改为:

cache_mem 512 MB

完成配置后,保存并退出配置文件。

现在,重新启动 squid 服务以应用更改:

$ sudo service squid restart

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

默认情况下,Squid 使用 /etc/resolv.conf 解析域名。 如果您希望 Squid 使用不同的名称服务器,您可以使用 dns_nameservers 指示。 使用以下命令编辑 squid 配置:

$ sudo nano /etc/squid/squid.conf

现在在配置文件中添加以下条目替换:

dns_nameservers <IP address of DNS server>

例如,要设置 8.8.4.4 作为名称服务器,条目将是:

dns_nameservers 8.8.8.8 8.8.4.4

完成配置后,保存并退出文件。

现在,重新启动 squid 服务以应用更改:

$ sudo service squid restart

控制对代理服务器的访问

Squid ACL 的工作原理

对于访问控制,ACL 与访问控制指令结合使用。 单独的 ACL 是没有用的,它们只能帮助根据各种规则识别用户请求。 为了允许或拒绝访问,它们与 http_access 指示。

要定义 ACL,语法是:

acl NAME TYPE value

例子: 允许 LAN 流量通过 Squid 代理服务器

匹配来自 LAN 的流量 192.168.5.0/24,我们需要在 Squid 配置文件中创建一个 ACL 规则:

acl myacl src 192.168.5.0/24

定义 ACL 后,您可以使用 http_access 允许/拒绝访问的指令。 这是 http_access 指示:

http_access allow|deny NAME

其中 NAME 标识您要允许/拒绝访问的流量。

要允许 ACL 中标识的流量,您需要添加以下内容 http_access Squid 配置文件中的指令:

http_access allow myacl

配置代理源以访问互联网

首先,我们将配置我们希望允许通过代理服务器访问 Internet 的源。 例如,您可能希望只允许从内部网络访问代理服务器。

1. 要配置允许的来源,请编辑 squid 配置文件:

$ sudo nano /etc/squid/squid.conf

2.现在,搜索条目 acl 本地网 src.

笔记: 要在 Nano 编辑器中搜索条目,请按 Ctrl+w,然后键入要搜索的表达式。 在上述情况下 example, 按 Ctrl+w 并输入 acl 本地网 src 如以下屏幕截图所示。

3. 在这里,您将看到不同 IP 地址范围的条目数。 在这里,为您的网络添加一个条目,如下所示:

acl localnet src subnet_ID/subnet_mask

例如,您的本地网络运行在 192.168.72.0/24 子网。 在这种情况下,条目将是:

acl localnet src 192.168.72.0/255.255.255.0

4. 现在使用 http_access 指令,允许由命名的 acl 标识的源 本地网 定义如上。 http_access 指令已在配置中定义,您只需找到并取消注释即可。

搜索条目 #http_access 允许本地网络 然后通过删除 # 特点。

http_access allow localnet

现在保存并退出 squid 配置文件。

3. 现在,使用以下命令重新启动 squid 服务:

$ sudo service squid restart

拒绝访问 Squid 代理服务器中的某些网站

要拒绝访问 Squid 代理服务器中的某些网站,请创建一个文件并列出您要拒绝访问的所有网站。

$ sudo nano /etc/squid/deniedsites.acl

现在列出您要拒绝访问的站点,然后保存并退出文件。

.msn.com

.yahoo.com

.bbc.com

然后使用以下命令编辑 squid 配置文件:

$ sudo nano /etc/squid/squid.conf

现在为被拒绝的网站创建 ACL 规则并提及包含被拒绝网站列表的文件。

acl denied_sites dstdomain “/etc/squid/deniedsites.acl”

ACL 规则 拒绝网站 将匹配发往“/etc/squid/deniedsites.acl“ 文件。

现在您需要添加 http_access 拒绝由上述 ACL 规则标识的网站的指令 拒绝站点. 在 Squid 配置文件中添加以下行:

http_access deny denied_sites

完成配置后,保存并退出文件。

现在,使用以下命令重新启动 squid 服务:

$ sudo service squid restart

配置 Squid 代理客户端身份验证

使用 Squid 代理服务器,我们可以添加基本的基于用户的身份验证以提高安全性。 为此,我们将使用 密码 附带的程序 Apache HTTP 服务器。 然后我们将创建一个包含用于身份验证的用户名和密码的文件。

1. 首先,我们必须安装 Apache2-utils。 使用以下命令执行此操作:

$ apt install -y apache2-utils

2. 现在在 / 中创建 passwd 文件等/鱿鱼 存放密码的目录:

$ touch /etc/squid/passwd

3. 使用以下命令将所有权设置为用户“proxy”:

$ chown proxy: /etc/squid/passwd

4.现在添加一个用户 /etc/squid/passwd 文件:

htpasswd /etc/squid/passwd tin

输入密码,然后重新输入确认。 现在用户及其加密密码将保存到 /etc/squid/passwd 文件。

5. 编辑 /etc/squid/squid.conf 使用以下命令文件:

$ sudo nano /etc/squid/squid.conf

现在在文件中添加以下行:

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwdauth_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

Once you are done with the configurations, save and exit the configuration file.

配置客户端通过 Squid 代理服务器连接

在本节中,我们将配置客户端通过 Squid 代理服务器进行连接。

1. 在您的系统中打开网络浏览器。 这里我们将使用 Firefox 浏览器。

2. 进入浏览器右上角,点击三个横条图标。 然后点击 选项.

3. 然后在搜索栏中,输入网络。 出现搜索结果时,单击 设置 如下面的屏幕截图所示。

4. 选择 手动代理配置 选项按钮。 然后在输入框里输入 Squid 代理服务器的 IP 地址 HTTP 代理 字段和端口号 港口 场地。 另外,检查 也将此代理用于 FTP 和 HTTPS 复选框。 然后点击 好的.

配置 Squid 代理服务器

现在为了检查 Squid 服务器是否正常工作,请尝试在浏览器中访问任何网站。 您将看到一个身份验证对话框。 Enter 您之前创建的 squid 用户名和密码,然后单击 好的.

配置 Squid 代理服务器

现在您应该可以访问请求的网站了。

现在尝试使用访问列表访问您已阻止的另一个网站。 浏览器将显示以下页面“代理服务器拒绝连接”。

配置 Squid 代理服务器

这就是它的全部! 在本文中,您学习了如何在 Linux 系统上配置 Squid 代理服务器。 我们刚刚讨论了基本配置。 您可以使用 Squid 代理服务器做更多事情。 访问 官方文档 了解更多信息。