Squid是功能齐全的缓存代理,支持流行的网络协议,例如HTTP,HTTPS,FTP等。 Squid主要用于通过缓存重复的请求,过滤Web流量和访问受地理限制的内容来提高Web服务器的性能。

本教程将引导您完成在Ubuntu 18.04上设置Squid代理以及配置Firefox和Google Chrome浏览器以使用它的过程。

在Ubuntu上安装Squid

Squid软件包包含在默认的Ubuntu 18.04存储库中。要安装它,请以 sudo用户的身份输入以下命令:

sudo apt update
sudo apt install squid

安装完成后,Squid服务将自动启动。

要验证安装是否成功并且Squid服务正在运行,请键入以下命令,以显示服务状态:

sudo systemctl status squid
● squid.service - LSB: Squid HTTP Proxy version 3.x
   Loaded: loaded (/etc/init.d/squid; generated)
   Active: active (running) since Thu 2019-06-27 11:45:17 UTC
...

配置Squid

可以通过编辑/etc/squid/squid.conf文件来配置

Squid。您还可以使用带有配置选项的单独文件,可以使用“ include”指令将其包含在内。

配置文件包含描述每个配置选项功能的注释。

进行任何更改之前,最好备份原始配置文件:

sudo cp /etc/squid/squid.conf{,.orginal}

要编辑文件,请在文本编辑器中将其打开:

sudo nano /etc/squid/squid.conf

默认情况下,Squid配置为侦听服务器上所有网络接口上的端口3128

如果要更改端口并设置侦听接口,请找到以http_port开头的行,并指定接口IP地址和新端口。如果未指定接口,Squid将在所有接口上侦听。

/etc/squid/squid.conf

# Squid normally listens to port 3128
http_port IP_ADDR:PORT

对于大多数用户来说,在所有接口和默认端口上运行Squid应该可以。

在Squid中,您可以使用访问控制列表(ACL)控制客户端如何访问Web资源。

默认情况下,Squid仅允许从本地主机访问。

如果所有将使用代理的客户端都具有静态IP地址,则可以创建一个ACL,其中将包含允许的IP。

我们将创建一个新的专用文件来保存IP,而不是在主配置文件中添加IP地址:

/etc/squid/allowed_ips.txt

192.168.33.1
# All other allowed IPs

完成后,打开主配置文件并创建一个名为allowed_ips的新ACL(第一行突出显示),并允许使用http_access指令(第二行突出显示的行)访问该ACL:

/etc/squid/squid.conf

# ...
acl allowed_ips  src "/etc/squid/allowed_ips.txt"
# ...
#http_access allow localnet
http_access allow localhost
http_access allow allowed_ips
# And finally deny all other access to this proxy
http_access deny all

http_access规则的顺序很重要。确保在http_access deny all

之前添加行。

http_access指令的工作方式与防火墙规则类似。 Squid从上到下读取规则,当一个规则与下面的规则匹配时,将不进行处理。

无论何时对配置文件进行更改,都需要重新启动Squid服务以使更改生效:

sudo systemctl restart squid

Squid认证

Squid可以使用不同的后端,包括对已认证用户的 Samba ,LDAP和HTTP基本身份验证。

在本教程中,我们将配置Squid以使用基本身份验证。这是HTTP协议中内置的一种简单的身份验证方法。

我们将使用openssl生成密码,并使用 tee 命令将username:password对附加到/etc/squid/htpasswd文件,如下所示:

printf "USERNAME:$(openssl passwd -crypt PASSWORD)\n" | sudo tee -a /etc/squid/htpasswd

让我们创建一个名为“ josh”的用户,其密码为“ Sz$Zdg69”:

printf "josh:$(openssl passwd -crypt 'Sz$Zdg69')\n" | sudo tee -a /etc/squid/htpasswd
josh:RrvgO7NxY86VM

现在已创建用户,下一步是启用HTTP基本身份验证并包含htpasswd文件。

打开主要配置并添加以下内容:

/etc/squid/squid.conf

# ...
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/htpasswd
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
# ...
#http_access allow localnet
http_access allow localhost
http_access allow authenticated
# And finally deny all other access to this proxy
http_access deny all

前三行突出显示的行将创建一个名为authenticated的新ACL,最后一行突出显示的行允许访问经过身份验证的用户。

重新启动Squid服务:

sudo systemctl restart squid

配置防火墙

假设您正在使用 UFW 管理防火墙,则需要打开teg Squid端口。为此,请启用“ Squid”配置文件,其中包括默认Squid端口的规则。

sudo ufw allow 'Squid'

要验证状态类型:

sudo ufw status

输出将类似于以下内容:

Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
Squid                      ALLOW       Anywhere            
22/tcp (v6)                ALLOW       Anywhere (v6)             
Squid (v6)                 ALLOW       Anywhere (v6)  

如果Squid正在另一个非默认端口上运行,例如8888,则可以使用以下命令允许该端口上的流量:sudo ufw allow 8888/tcp

配置浏览器以使用代理

现在您已经设置了Squid,最后一步是配置您喜欢的浏览器以使用它。

Firefox

以下步骤与Windows,macOS和Linux相同。

  1. 在右上角,单击汉堡包图标以打开Firefox的菜单:
  2. 单击⚙ Preferences链接。
  3. 向下滚动到Network Settings部分,然后单击Settings...按钮。

将打开一个新窗口。

  • 选择Manual proxy configuration单选按钮。
  • HTTP Host字段中输入您的Squid服务器IP地址,在Port字段中输入3128
  • 选中Use this proxy server for all protocols复选框。
  • 单击OK按钮保存设置。

至此,您的Firefox已配置完毕,您可以通过Squid代理浏览Internet。要验证它,请打开google.com,键入“ what is my ip”,您应该会看到自己的Squid服务器IP地址。

要恢复为默认设置,请转到Network Settings,选择Use system proxy settings单选按钮并保存设置。

有几个插件也可以帮助您配置Firefox的代理设置,例如 FoxyProxy

Google Chrome浏览器

Google Chrome使用默认的系统代理设置。您可以使用 SwitchyOmega 之类的插件,也可以从命令行启动Chrome网络浏览器。

无需更改操作系统代理设置。

要使用新的配置文件启动Chrome并连接到Squid服务器,请使用以下命令:

Linux:

/usr/bin/google-chrome \
    --user-data-dir="$HOME/proxy-profile" \
    --proxy-server="http://SQUID_IP:3128"

macOS:

"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
    --user-data-dir="$HOME/proxy-profile" \
    --proxy-server="http://SQUID_IP:3128"

Windows:

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" ^
    --user-data-dir="%USERPROFILE%\proxy-profile" ^
    --proxy-server="http://SQUID_IP:3128"

如果配置文件不存在,则会自动创建。这样,您可以同时运行多个Chrome实例。

要确认代理服务器正常工作,请打开google.com,然后键入“ what is my ip”。浏览器中显示的IP应该是服务器的IP地址。

结论

您已了解如何在Ubuntu 18.04上安装Squid并配置浏览器以使用它。

Squid是最流行的代理缓存服务器之一。它提高了Web服务器的速度,可以帮助您限制用户访问Internet。

如果您遇到问题或有反馈,请在下面发表评论。

如果你喜欢我们的内容可以选择在下方二维码中捐赠我们,或者点击广告予以支持,感谢你的支持