Squid是功能齐全的缓存代理,支持流行的网络协议,例如HTTP,HTTPS,FTP等。它可以通过缓存重复的请求,过滤Web流量和访问受地理限制的内容来提高Web服务器的性能。
在本教程中,我们将说明如何在Debian Buster上安装和配置Squid代理。我们还将向您展示如何配置Firefox和Google Chrome浏览器以使用它。以及Squid代理的UFW防火墙配置和Squid身份验证等。
在Debian上安装Squid
Squid软件包包含在Debian 10标准存储库中。以具有sudo权限的用户运行以下命令以安装Squid:
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 Sat 2019-08-03 08:52:47 PDT; 3s ago
...
此时,我们已经成功安装Squid。
配置Squid
可以通过编辑/etc/squid/squid.conf
配置文件来配置Squid,你也可以使用include指令包含单独的配置文件。squid.conf
配置文件包含描述每个配置选项功能的注释。进行任何更改之前,最好备份原始文件:
sudo cp /etc/squid/squid.conf{,.orginal}
要修改配置,请使用你喜欢的文本编辑器中打开/etc/squid/squid.conf文件,这里,我们使用vim编辑器:
sudo vim /etc/squid/squid.conf
默认情况下,Squid侦听所有网络接口(网卡)的3128
端口。如果要更改端口并设置监听接口,请找到以http_port
开头的行,并指定接口IP地址和新的端口。如果未指定接口,Squid将在所有接口上侦听。
# Squid normally listens to port 3128
http_port IP_ADDR:PORT
对于大多数用户来说,在所有接口和默认端口上运行Squid就以足够。访问控制列表(ACL)使您可以控制客户端如何访问Web资源。默认情况下,Squid仅允许从本地主机访问。
如果使用代理的所有客户端都具有静态IP地址,最简单的选择是创建一个将包含允许的IP的ACL。我们将创建一个新的文件来存储IP地址然后将它inlcude在主配置文件中,而不是在主配置文件中添加IP地址:
192.168.33.1
# All other allowed IPs
完成后,打开主配置文件并创建一个名为allowed_ips
的ACL,并允许使用http_access
指令访问该ACL:
# ...
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身份验证。这是HTTP协议中内置的一种简单的身份验证方法。
我们将使用openssl
命令生成密码,并通过tee
命令和管道将username:password
对追加到/etc/squid/htpasswd
文件,如下所示:
printf "USERNAME:$(openssl passwd -crypt PASSWORD)\n" | sudo tee -a /etc/squid/htpasswd
让我们创建一个名为buster的用户,其密码为Sz$Zdg69
:
printf "buster:$(openssl passwd -crypt 'Sz$Zdg69')\n" | sudo tee -a /etc/squid/htpasswd
buster:RrvgO7NxY86VM
下一步是启用HTTP基本身份验证。使用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配置文件来打开端口3128
:
sudo ufw allow 'Squid'
如果您使用nftables来过滤与系统的连接,请通过以下命令来打开必要的端口:
sudo nft add rule inet filter input tcp dport 3128 ct state new,established counter accept
如果Squid在另一个非默认端口上运行,则需要允许该端口上的流量。
配置您的浏览器以Squid代理
在本节中,教程将说明如何配置浏览器以使用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网络浏览器。而无需更改操作系统代理设置。要使用新的配置文件启动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地址。
结论
我们已经介绍了如何在Debian 10上安装Squid以及如何配置浏览器以使用它的基础知识。Squid是最流行的代理缓存服务器之一。它可以提高Web服务器的速度,并可以帮助您限制用户访问Internet。如果您遇到问题或有反馈,请在下面发表评论。