帮助中心
如何在Ubuntu 20.04上安装和配置Squid Proxy



Squid是一个全功能的缓存代理,支持HTTP、HTTPS、FTP等流行网络协议。它可以通过缓存重复请求来提高网络服务器的性能,过滤网络流量,并访问有地理限制的内容。

本教程解释了如何在Ubuntu 20.04上设置Squid代理,并配置Firefox和Google Chrome网络浏览器使用它。

在Ubuntu上安装Squid


squid包包含在Ubuntu 20.04的标准软件库中。要安装它,以sudo用户身份运行以下命令。

$ sudo apt update$ sudo apt install squid

一旦安装完成,Squid服务将自动启动。要验证它,请检查服务状态。

$ sudo systemctl status squid

输出结果将是这样的。

 squid.service - Squid Web Proxy Server
     Loaded: loaded (/lib/systemd/system/squid.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2020-10-23 19:02:43 UTC; 14s ago
       Docs: man:squid(8)
...


配置Squid


可以通过编辑/etc/squid/squid.conf文件来配置squid服务。该配置文件包含注释,描述了每个配置选项的作用。你也可以将你的配置设置放在单独的文件中,这些文件可以通过 "include "指令包含在主配置文件中。

在做任何修改之前,建议备份原始配置文件。

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

要开始配置你的squid实例,在你的文本编辑器中打开该文件。

$ 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)来控制客户如何访问网络资源。默认情况下,只允许从本地主机访问。

如果所有使用代理服务器的客户都有一个静态IP地址,那么限制访问代理服务器的最简单的办法就是创建一个ACL,其中包括允许的IP。否则,你可以将squid设置为使用认证。

不要在主配置文件中添加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认证


如果基于IP的访问限制对你的使用情况不起作用,你可以配置squid使用后端来验证用户。Squid支持Samba、LDAP和HTTP基本认证。

在本指南中,我们将使用basic auth。它是HTTP协议中内置的一种简单认证方法。

要生成一个加密的密码,请使用openssl工具。下面的命令将USERNAME:PASSWORD对附加到/etc/squid/htpasswd文件中。

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

例如,要创建一个密码为 "P@ssvv0rT "的用户 "josh",你需要运行。

$ printf "josh:$(openssl passwd -crypt 'P@ssvv0rd')\n" | sudo tee -a /etc/squid/htpasswd
josh:QMxVjdyPchJl6

下一步是启用HTTP基本认证,并将包含用户凭证的文件纳入squid配置文件。

打开主配置,添加以下内容。

$ sudo nano /etc/squid/squid.conf
/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

前三行是创建一个新的ACL,名为authenticated,最后一行是允许认证用户访问的。

重新启动Squid服务。

$ sudo systemctl restart squid


配置防火墙


为了打开Squid端口,启用UFW "Squid "配置文件。

$ sudo ufw allow 'Squid'

如果Squid运行在另一个非默认的端口上,例如8888,你可以允许该端口的流量:sudo ufw allow 8888/tcp。

配置你的浏览器以使用代理


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

火狐

下面的步骤对Windows、macOS和Linux都是一样的。

1、在右上角,点击汉堡包图标☰,打开Firefox的菜单

2、点击⚙"偏好 "链接

3、向下滚动到网络设置部分,点击设置...按钮

4、一个新的窗口将打开

  • 选择手动代理配置单选按钮
  • 在HTTP主机栏中输入Squid服务器的IP地址,在端口栏中输入3128
  • 选择 "对所有协议使用此代理服务器 "复选框
  • 点击 "确定 "按钮,保存设置

至此,你的Firefox已经配置好了,你可以通过Squid代理浏览互联网。要验证它,请打开google.com,输入 "what is my ip",你应该看到你的Squid服务器IP地址。

要恢复到默认设置,请进入网络设置,选择使用系统代理设置单选按钮并保存设置。

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

谷歌浏览器

谷歌浏览器使用默认的系统代理设置。你可以使用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地址。

总结


Squid是最受欢迎的代理缓存服务器之一。它能提高网络服务器的速度,并能帮助你采取限制用户访问互联网的措施。

我们已经向你展示了如何在Ubuntu 20.04上安装和配置Squid,并设置你的浏览器来使用它。

文章相关标签: 安装Squid Proxy
购物车