Squid 是一个功能全面的缓存代理服务器,它支持著名的网络协议像 HTTP,HTTPS,FTP 等等。将 Squid 放在网页服务器的前端,通过缓存重复请求,过滤网络流量等,可以极大地提高服务器的性能。
这篇指南将会讲解如何在 Ubuntu 18.04 上建立 Squid,并且配置火狐和 Google 浏览器来使用这个代理服务器。
Squid 软件包包含在默认的 Ubuntu 18.04 源仓库中。想要安装它,以 sudo 用户身份运行下面的命令:
sudo apt update
sudo apt install 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
文件进行配置。新增文件可以使用"include"指令添加到配置文件中。
配置文件包含了注释,说明每一个配置选项的作用。
在做任何修改之前,最好先备份以下原来的配置文件:
sudo cp /etc/squid/squid.conf{,.orginal}
想要编辑文件,使用文本编辑器打开它:
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 对大部分用户都很适用。
你可以使用 Access Control Lists (ACLs)来控制 Squid 服务器的访问。
默认情况下,Squid 仅仅允许从本地主机和本地网络来的访问。
如果所有将要使用代理服务器的客户端都有一个固定 IP 地址,你可以创建一个 包含允许 IP 地址的 ACL。
不用在主要配置中添加 IP 地址,我们可以创建一个新配置文件,用来配置地址: /etc/squid/allowed_ips.txt
192.168.33.1
# All other allowed IPs
一旦完成,打开主要配置文件,并且创建一个新的 ACL ,命名为allowed_ips
,并且使用http_access
指令允许它访问: /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 可以使用不同的后端,包括 Samba,LDAP 和 HTTP 基本验证来验证用户。
在这个例子中,我们配置 Squid 使用基本验证。它是一个简单的验证方法,内置在 HTTP 协议中。
我们将使用openssl
来生成密码,并且附加username:password
对到文件/etc/squid/htpasswd
文件中,并且显示出来:
printf "USERNAME:$(openssl passwd -crypt PASSWORD)\n" | sudo tee -a /etc/squid/htpasswd
例如,创建一个用户名称为mike
,并且密码为Pz$lPk76
,你将要运行:
printf "mike:$(openssl passwd -crypt 'Pz$lPk76')\n" | sudo tee -a /etc/squid/htpasswd
mike:2nkgQsTSPCsIo
下一步是配置 Squid 去启用 HTTP 基本验证,并且使用这个文件。
打开主要配置文件,添加下面的内容: /etc/squid/squid.conf
# ...
auth_param basic program /usr/lib64/squid/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
假设你正在使用 UFW管理你的防火墙,你需要打开 Squid 端口。想要启用包含默认 Squid 端口的‘Squid’ profile:
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,最后一步是配置你喜欢的浏览器去使用它。
下面这些步骤对于 Windows, macOS, 和 Linux 都是一样的。
01.在右上角,点击汉堡包图标☰
打开 Firefox 的菜单:
02.点击⚙ Preferences
连接。
03.滚动到Network Settings
段,并且点击Settings...
按钮。
04.打开一个新窗口。
Manual proxy configuration
单选按钮。HTTP Host
文本域输入你的 Squid 服务器 IP 地址,在Port
文本域输入3128
。Use this proxy server for all protocols
复选框。ok
按钮来保存设置。此时,你的 Firefox 就被配置好了。你可以通过 Squid 代理服务器浏览网络了。想要验证它,打开google.com
,type"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"
如果这个配置不存在的话,会被自动创建。这种方式,你可以在同一时间运行多个实例。
想要确认代理服务器是否正常工作,打开google.com
,并且输入"what is my ip”。这个 显示在你浏览器中的 IP,应该是你服务器中的 IP。
你已经学会了如何在 Ubuntu 18.04 上安装 squid,并且配置你的浏览器去使用它。
Squid 是最著名的代理缓存服务器之一。它改进了网站服务器的速度,并且可以帮助你限制用户对网络的访问。