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 存储日志文件包含有关传递的对象的信息。
这些文件上的每个条目都有生成消息时的时间戳。