Squid是功能齐全的缓存代理,支持流行的网络协议,例如HTTP,HTTPS,FTP等。 Squid主要用于通过缓存重复的请求,过滤Web流量和访问受地理限制的内容来提高Web服务器的性能。
本教程将说明如何在Ubuntu 18.04上设置Squid代理以及配置Firefox和Google Chrome浏览器以使用Squid的步骤。包括使用apt命令安装Squid,配置Squid默认监听端口和ACL访问控制列表,Squid的身份认证,配置UFW防火墙以允许来自远程的连接,配置Chrome/Firefox浏览器以使用Squid代理。
在Ubuntu上安装Squid
Squid包含在默认的Ubuntu 18.04存储库中。可使用apt命令安装Squid,请使用具有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
指令将其包含在内。配置文件包含了描述每个配置选项注释。进行任何更改之前,最好使用cp命令备份原始配置文件:
sudo cp /etc/squid/squid.conf{,.orginal}
要编辑/etc/squid/squid.conf
文件,请在文本编辑器中打开文件:
sudo vim /etc/squid/squid.conf
默认情况下,Squid在所有网络接口上监听端口3128
。如果要更改端口并设置监听的接口/网卡,请找到以http_port
开头的行,并指定接口IP地址和新端口。如果未指定接口,Squid将在所有接口上侦听。
对于大多数用户来说,在所有接口和默认端口上运行Squid就可以。在Squid中,您可以使用访问控制列表ACL控制客户端如何访问Web资源。
默认情况下,Squid仅允许从本地主机访问。如果所有将使用代理的客户端都具有静态IP地址,则可以创建一个ACL,其中将包含允许的IP。我们将创建一个新的专用文件来保存IP,而不是在主配置文件中添加IP地址:
完成后,打开主配置文件并创建一个名为allowed_ips
的新ACL,并允许使用http_access
指令允许访问该ACL:
http_access
规则的顺序很重要。确保在http_access deny all
之前添加行http_access
。
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
文件。使用vim打开文件/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
防火墙管理工具,则需要打开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代理
现在您已经设置了Squid,最后一步是配置您喜欢的浏览器以使用Squid代理。
Firefox
在右上角,单击汉堡包图标☰
以打开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浏览器
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"
如果配置文件不存在,则会自动创建。要确认代理服务器正常工作,请打开google.com
,然后键入what is my ip。浏览器中显示的IP应该是Squid服务器的IP地址。
结论
您已了解如何在Ubuntu 18.04上安装Squid并配置浏览器以使用它。Squid是最流行的代理缓存服务器之一。它提高了Web服务器的速度,可以帮助您限制用户访问Internet。如果您遇到问题或有反馈,请在下面发表评论。