Squid是功能齐全的缓存代理,支持流行的网络协议,例如HTTP,HTTPS,FTP等。 它可以通过缓存重复的请求,过滤Web流量以及访问受地理限制的内容来提高Web服务器的性能。
本教程介绍了如何在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)访问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
例如,要创建一个密码为“ 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
前三个突出显示的行将创建一个名为authenticated
的新ACL,http_access allow authenticated的行将允许访问经过身份验证的用户。
重新启动Squid服务:
sudo systemctl restart squid
配置防火墙
要打开Squid端口,请启用 UFW
“ Squid”配置文件:
sudo ufw allow 'Squid'
如果Squid正在另一个非默认端口上运行,例如8888
,则可以使用以下命令允许该端口上的流量:
sudo ufw allow 8888/tcp
配置您的浏览器以使用代理
现在您已经设置了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:
/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是最流行的代理缓存服务器之一。 它可以提高Web服务器的速度,并可以帮助您限制用户访问Internet。
我们向您展示了如何在Ubuntu 20.04上安装和配置Squid以及如何设置浏览器以使用它。
如果您遇到问题或有反馈,请在下面发表评论。