如何安装和配置 Squid Linux 代理服务器

2023-10-15

Linux代理服务器或代理服务器通常是保存访问过的网页以供以后请求的服务器,因此如果您尝试访问同一个网页或其他任何人,您将从代理服务器获取页面。

这非常有用,它使网上冲浪速度更快并减少流量,这意味着成本更低。缓存服务器可以将外部流量减少至 45%。

代理服务器的另一个主要优点是,您可以使用一些访问控制设置来配置代理。例如,您可以限制对特定网站的访问。

如果您以前通过匿名代理上网,那么这就是代理服务器。您可以选择任何可用的 Linux 代理服务器,例如Squid、Varnish、Polipo、TinyProxy 等。在这篇文章中,我们将讨论最常见的 Linux 代理服务器,即 Squid。

 

 

安装鱿鱼

安装squid代理服务器非常简单。对于基于 Red Hat 的发行版,您可以像这样安装它:


$ dnf -y install squid  

或者,如果您使用基于 Debian 的发行版,您可以像这样安装:


$ apt-get -y install squid  

现在您可以启动squid服务并在启动时启用它:


$ systemctl start squid

$ systemctl enable squid  

对于squid代理服务器,可以查看配置文件


/etc/squid/squid.conf  

在深入研究配置之前,让我们先看看代理服务器的运行情况。

只需将浏览器上的代理设置更改为代理的 IP 地址和端口 3128因为这是鱿鱼的默认端口。您可以通过更改默认端口来更改http_端口配置文件中的选项。

如图所示,我已将浏览器指向 Linux 代理服务器,并且可以毫无问题地浏览网页。

如果您正在使用iptables防火墙,别忘了打开squid服务器端口。

 

允许的 IP 地址范围

如果打开配置文件/etc/squid/squid.conf,您将看到允许 IP 地址连接到代理服务器的规则,如下所示:


acl localnet src 192.168.0.0/16  

但是,您可以添加新的 ACL 条目以允许一系列 IP 地址连接到您的代理服务器:


acl localnet src 212.80.113.0/16  

然后保存文件并重新启动squid服务:


$ systemctl restart squid  

很容易,对吧?

此外,如果从文件中删除任何 ACL,则该范围内的所有 IP 地址将无法连接到代理服务器。

 

允许特定端口

您可以在配置文件中找到允许的所有端口,如下所示:


acl Safe_ports port 80  

考虑为您的客户端需要的任何端口添加 Safe_ports ACL 规则。

您可以添加端口范围,而不是为每个端口编写规则,如下所示:


acl Safe_ports port 6000-7000  

修改后不要忘记重启squid代理服务器:


$ systemctl restart squid  

 

验证用户身份

您可以强制用户在使用 Linux 代理服务器之前进行身份验证Apache 身份验证.

首先,我们创建一个用于存储用户的文件:


$ touch /etc/squid/passwd  

然后将所有权更改为鱿鱼​​守护程序,以便它可以访问该文件:


$ chown squid /etc/squid/passwd  

现在我们将使用 htpasswd 命令创建一个新用户:


$ htpasswd /etc/squid/passwd likegeeks  

它会提示您输入密码两次。

如果打开创建的文件,您将看到用户和散列密码。

然后,您更改鱿鱼配置以告诉它应该使用的身份验证。

添加以下行位于 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 3 hours
acl auth_users proxy_auth REQUIRED
http_access allow auth_users  

然后重新启动squid服务并尝试再次打开浏览器。


$ systemctl restart squid  

如您所见,如果您尝试连接到 Linux 代理服务器,它会提示您输入用户名和密码。

 

阻止网站

您可以阻止代理用户访问网站,只需创建一个单独的文件,该文件将成为您要阻止的域的列表,并从鱿鱼配置中指向该文件,如下所示:


$ touch /etc/squid/blocked  

然后在该文件中每行键入要阻止的所有网站并保存。

现在更改鱿鱼配置以阻止以下网站acl 列出和http_访问list.


acl blocked_sites dstdomain "/etc/squid/blocked"

http_access deny blocked_sites  

然后重启squid服务:


$ systemctl restart squid  

网络上有很多现成的列表,您可以在 Squid 中使用它们,例如 MESD 黑名单、Shalla 黑名单。

 

修改内容

由于 Linux 代理服务器位于浏览器和互联网之间,因此这是更改所传递内容的一个非常好的位置。

您可以使用以下命令更改图像、广告或任何内容url_rewrite_program module.

你可以做更多的事情,但我们不想作恶。

在我们的示例中,我们将翻转图像并浏览翻转后的图像而不是原始图像。

首先,我们需要安装ImageMagick:


$ dnf -y install imagemagick  

然后我们将编写能够发挥魔力的脚本。该脚本是用 Perl 编写的。

你可以找到脚本here.

这个 Perl 脚本搜索 JPG、GIF 和 PNG 等携带内容中的图像,一旦找到它们,它就会使用 ImageMagick 附带的 mogrify 实用程序来翻转图像,并将翻转后的图像放在 /var/www/html/ 中,即的根目录阿帕奇服务器。 apache 服务应该正在运行,然后发送翻转的图像作为响应。

只需确保为此文件夹添加 Squid 所有权:


$ usermod -aG www-data squid  

最后,你必须告诉 Squid 这个脚本。打开配置文件并输入以下内容:


url_rewrite_program /home/likegeeks/flip.pl  

然后重新启动您的鱿鱼服务:


$ systemctl restart squid  

网络上有很多 Perl 脚本可以处理内容,其中有些是好的,有些是邪恶的。

 

匿名浏览

默认情况下,squid 代理服务器将客户端 IP 地址转发到请求的站点,如果您希望代理为匿名冲浪用户,则应发送 sqid IP 而不是客户端 IP。

为此,请更改转发给关闭选项


/etc/squid/squid.conf  

file.


forwarded_for off  

并添加以下提到的选项here在配置文件的末尾。

然后重启服务:


$ systemctl restart squid  

您可以查看您的公网IP地址;你会注意到你的IP是squid代理服务器的IP。

 

连接 Squid 服务器

The 缓存对等体指令设置您的对等缓存并通知 Squid 如何与它们通信。

你可以这样写:


cache_peer hostname Server-type http-port icp-port [options]  

第一个参数是另一个squid 主机名或IP 地址。

第二个参数指定其他服务器的类型。

第三个参数是端口号。

第 4 个参数指定 ICP 端口(Internet 缓存协议),即3130。我们使用这个端口来查询其他缓存服务器。

cache_peer 有一些可以使用的选项,例如:

仅代理:此选项可防止 Squid 保存从其他鱿鱼服务器收到的任何响应。

no-delay:如有延迟,将被忽略。

登录=用户名:密码:其他服务器的身份验证凭据。它采用这个公式登录=用户:密码

连接超时:该选项指定与其他squid服务器的连接超时。

写入您的选项并保存配置文件并重新启动服务。

 

鱿鱼日志文件

日志文件是问题诊断和各种鱿鱼操作的主要来源。

有cache.log、access.log和store.log。您可以在 /var/log/squid 目录中找到它们。

The 缓存日志文件包含有关 Squid 操作的信息性消息。您可以在此文件上找到所有代理错误。

The 访问日志文件包含所有客户端的 HTTP 请求。

The 存储日志文件包含有关传递的对象的信息。

这些文件上的每个条目都有生成消息时的时间戳。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何安装和配置 Squid Linux 代理服务器 的相关文章

  • 使用 pip 安装软件包(摘要)

    在本视频课程中 您学习了如何使用安装第三方软件包 蟒蛇的包管理器 pip 了解了终端和虚拟环境后 您看到了一些有用的pip命令 包括pip install pip list 和pip uninstall 您还学习了如何声明项目的要求并找到第
  • Python 新闻:2021 年 5 月以来的新增内容

    目录 微软成为 PSF 第三位远见赞助商 Pallets Releases New Major Versions of All Core Projects Flask 获得原生 asyncio 支持 Jinja 改进了异步环境 Click

随机推荐

  • 会话对象

    如果您想在多个请求中保留某些参数 可以使用会话对象 本课程将指导您完成创建新会话对象的过程以及如何使用它
  • 第 25 集:Python 中的数据版本控制和真实的 Python 视频脚本

    第 25 集 Python 中的数据版本控制和真实的 Python 视频脚本 真正的 Python 播客 2020 年 9 月 4 日 1h RSS Apple Podcasts Google Podcasts Spotify More 播
  • 第 44 集:为 PyCascades 2021 创建交互式在线 Python 会议

    第 44 集 为 PyCascades 2021 创建交互式在线 Python 会议 真正的 Python 播客 2021 年 1 月 22 日1小时4分钟 RSS Apple Podcasts Google Podcasts Spotif
  • 测试您的 Python 应用程序

    测试您的 Python 应用程序 学习路径 技能 测试 Python 代码 PyTest Mocking 没有一个开发人员是完美的 我们都会犯错误 如果不加以控制 其中一些错误可能会导致故障或错误 而恢复成本可能非常昂贵 测试您的代码有助于
  • 学习 Python 编程的 11 个初学者技巧

    目录 Make It Stick 提示 1 每天编码 技巧 2 写下来 提示 3 互动 秘诀 4 休息一下 提示 5 成为 Bug 赏金猎人 Make It Collaborative 提示 6 让自己周围都是正在学习的人 秘诀 7 教学
  • Python 对象的浅复制与深复制

    目录 制作浅副本 制作深层副本 复制任意Python对象 3 件事要记住 Python 中的赋值语句不会创建副本对于对象 它们仅将名称绑定到对象 为了不可变的对象 通常没有什么区别 但对于与可变的对象或可变对象的集合 您可能正在寻找一种方法
  • Pythonic 壁纸包

    通过以下方式表达您对 Python 的热爱 The Pythonic Wallpapers Pack 原价 9 99 美元 今日仅需 4 99 美元 使用这些为您的计算机 手机或平板电脑定制的独特壁纸 向世界展示您是 Python 达人 你
  • 理解 Python print() 函数:超越 Hello World

    您可能想知道 为什么要写一个关于简单打印功能的完整教程 但不要被欺骗 谦卑者print 函数虽然使用简单 但却是 Python 工具库中不可或缺的工具 本教程将引导您了解使用print 函数 探索其语法和参数 然后深入研究更高级的主题 您将
  • 在 Python 中删除字符串中标点符号的 5 种方法

    Python 提供了多种删除标点符号的方法 这里的目标是将字符串中的每个标点字符替换为空字符串 让我们为所有示例考虑以下原始字符串 original string Hello World Let s test some punctuatio
  • PyQt5 教程 – Python GUI 编程示例

    PyQt5 是用 Python 构建 GUI 应用程序时最常用的模块之一 这是因为它的简单性 正如您将看到的那样 鼓励开发人员使用 PyQt5 的另一个重要功能是 PyQt5 设计器 它使得在短时间内开发复杂的 GUI 应用程序变得非常容易
  • Python GUI 示例(Tkinter 教程)

    在本教程中 我们将通过使用 Tkinter 包编写一些 Python GUI 示例来学习如何开发图形用户界面 Tkinter 包作为标准包随 Python 一起提供 因此我们不需要安装任何东西即可使用它 Tkinter 包是一个非常强大的包
  • Python 中的凯撒密码(文本加密教程)

    密码学涉及将一条信息 以纯文本形式 加密或编码为一种看起来乱码且在普通语言中毫无意义的形式 此编码消息 也称为密文然后 目标接收者可以使用传达给最终用户的解码技术 通常与私钥一起 将其解码回纯文本 凯撒密码是我们将在本教程中重点介绍的最古老
  • 安装和使用非 Composer Laravel 包

    如果你想在 Laravel 中使用包 你只需在 Composer json 文件中添加一行即可完成工作 这是因为该包在 packagist org 中可用 如果您要使用的包是非 Composer Laravel 包怎么办 可能在 git 存
  • 文本处理中 Awk 命令的 30 个示例

    在上一篇文章中 我们谈到了sed命令我们看到了许多在文本处理中使用它的例子 我们看到了它在这方面的优点 但它有一些局限性 有时您需要一些强大的功能 让您能够更好地控制数据处理 这是哪里awk 命令进来 awk 命令或具体的 GNU awk
  • 安装、保护、访问和配置 Linux 邮件服务器 (Postfix)

    如果您想发送或接收电子邮件 您应该有一个邮件服务器 在这篇文章中 我们将讨论 Linux 邮件服务器以及 SMTP 简单邮件传输协议 以及其他邮件相关协议 例如邮局协议 POP 和互联网消息访问协议 IMAP 的工作原理以及它们之间的关系他
  • 了解和使用 Linux Subshel​​l(实用指南)

    子shell是由shell启动的子进程 shell本质上是一个命令行解释器 它共享父 shell 的属性 但在单独的进程空间中运行 子 shell 为执行命令和运行脚本提供了隔离性和灵活性 子 shell 通常用于任务自动化 并行执行和模块
  • 加速您的 Python 代码:Numba 实用指南

    Numba 是一个开源 JIT 编译器 可以翻译以下代码的子集Python and NumPy代码转换为快速机器代码 它通过使用行业标准的 LLVM 编译器库并优化执行速度来加速数值计算 在本教程中 我们将探索如何使用 Numba 使 Py
  • Linux 正则表达式教程(Sed 和 AWK)示例

    为了成功地与Linux sed编辑和awk 命令在 shell 脚本中 您必须了解正则表达式或简称正则表达式 由于正则表达式有很多引擎 我们将使用 shell 正则表达式并了解 bash 在使用正则表达式方面的强大功能 首先 我们需要了解什
  • 10 多个在 Linux 中终止进程的示例

    在本教程中 我们将通过多个示例讨论如何终止 Linux 中的进程 在大多数情况下 就像输入 kill 命令然后输入进程 ID 通常缩写为 PID 一样简单 正如你所看到的 我们杀死了一个ID为1813的进程 如果您是 Windows 用户
  • 如何安装和配置 Squid Linux 代理服务器

    Linux代理服务器或代理服务器通常是保存访问过的网页以供以后请求的服务器 因此如果您尝试访问同一个网页或其他任何人 您将从代理服务器获取页面 这非常有用 它使网上冲浪速度更快并减少流量 这意味着成本更低 缓存服务器可以将外部流量减少至 4