Squid是功能齐全的缓存代理,支持流行的网络协议,例如HTTP,HTTPS,FTP等。 它可以通过缓存重复的请求,过滤Web流量以及访问受地理限制的内容来提高Web服务器的性能。
本教程介绍了如何在Ubuntu 20.04上设置Squid代理,以及如何配置Firefox和Google Chrome浏览器以使用它。
在Ubuntu上安装Squid
squid软件包包含在标准Ubuntu 20.04存储库中。 要安装它,请以 sudo用户的身份运行以下命令:
sudo apt updatesudo 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 3128http_port IP_ADDR:PORT
对于大多数用户来说,在所有接口和默认端口上运行Squid应该没问题。
Squid允许您控制客户端如何使用访问控制列表(ACL)访问Web资源。 默认情况下,仅允许从本地主机访问。
如果所有使用代理的客户端都有一个静态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支持 Samba ,LDAP和HTTP基本身份验证。
在本指南中,我们将使用基本身份验证。 这是内置在HTTP协议中的简单身份验证方法。
要生成加密的密码,请使用openssl
工具。 以下命令将USERNAME:PASSWORD
对附加到/etc/squid/htpasswd
文件中:
printf "USERNAME:$(openssl passwd -crypt PASSWORD)\n" | sudo tee -a /etc/squid/htpasswd
例如,要创建一个密码为“ [email protected]
”的用户“ josh”,您可以运行:
sudo systemctl status squid
0
sudo systemctl status squid
1
下一步是启用HTTP基本身份验证,并将包含用户凭据的文件包含到squid配置文件中。
打开主要配置并添加以下内容:
sudo nano /etc/squid/squid.conf
/etc/squid/squid.conf
sudo systemctl status squid
3
前三个突出显示的行将创建一个名为authenticated
的新ACL,http_access allow authenticated的行将允许访问经过身份验证的用户。
重新启动Squid服务:
sudo systemctl restart squid
配置防火墙
要打开Squid端口,请启用 UFW
“ Squid”配置文件:
sudo systemctl status squid
5
如果Squid正在另一个非默认端口上运行,例如8888
,则可以使用以下命令允许该端口上的流量:
sudo systemctl status squid
6
配置您的浏览器以使用代理
现在您已经设置了Squid,最后一步是配置您喜欢的浏览器以使用它。
Firefox
以下步骤与Windows,macOS和Linux相同。
在右上角,单击汉堡包图标☰
以打开Firefox的菜单:
单击⚙ Preferences
链接。
向下滚动到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浏览器使用默认的系统代理设置。 您可以使用 SwitchyOmega 之类的插件,也可以从命令行启动Chrome Web浏览器。而无需更改操作系统代理设置。
要使用新的配置文件启动Chrome并连接到Squid服务器,请使用以下命令:
Linux:
sudo systemctl status squid
7
macOS:
sudo systemctl status squid
8
Windows:
sudo systemctl status squid
9
如果配置文件不存在,则会自动创建。 这样,您可以同时运行多个Chrome实例。
要确认代理服务器正常工作,请打开google.com
,然后输入“ what is my ip”。 浏览器中显示的IP应该是服务器的IP地址。
结论
Squid是最流行的代理缓存服务器之一。 它可以提高Web服务器的速度,并可以帮助您限制用户访问Internet。
我们向您展示了如何在Ubuntu 20.04上安装和配置Squid以及如何设置浏览器以使用它。
如果您遇到问题或有反馈,请在下面发表评论。
还没有评论,来说两句吧...