如何在Debian 10 Linux上安装和配置Squid代理

时间:2020-03-05 15:24:58  来源:igfitidea点击:

Squid是功能齐全的缓存代理,支持流行的网络协议,例如HTTP,HTTPS,FTP等。
它可以通过缓存重复的请求,过滤Web流量和访问受地理限制的内容来提高Web服务器的性能。

在本教程中,我们将说明如何在Debian Buster上设置Squid代理。
我们还将向我们展示如何配置Firefox和Google Chrome浏览器以使用它。

在Debian上安装Squid

Squid软件包包含在Debian 10存储库的标准中。
以sudo用户身份运行以下命令以安装Squid:

sudo apt updatesudo apt install squid

安装完成后,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

可以通过编辑'/etc/squid/squid.conf'配置文件来配置Squid。
可以使用“ include”指令包含单独的配置文件。

“ squid.conf”配置文件包含描述每个配置选项功能的注释。

进行任何更改之前,备份原始文件始终是一个好主意:

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应该可以。

使用访问控制列表(ACL),我们可以控制客户端如何访问Web资源。
默认情况下,Squid仅允许从本地主机访问。

如果将使用代理的所有客户端都具有静态IP地址,则最简单的选择是创建将包含允许的IP的ACL。

我们将创建一个新的包含文件来存储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认证

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

让我们创建一个名为“ buster”的用户,其密码为“'Sz $Zdg69'”:

printf "buster:$(openssl passwd -crypt 'Sz$Zdg69')\n" | sudo tee -a /etc/squid/htpasswd
buster:RrvgO7NxY86VM

下一步是启用HTTP基本身份验证。
打开主配置并添加以下内容:

/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'

如果使用nftable筛选到系统的连接,请通过发出以下命令来打开必要的端口:

sudo nft add rule inet filter input tcp dport 3128 ct state new,established counter accept

如果Squid在另一个非默认端口上运行,则需要允许该端口上的流量。

配置浏览器以使用代理

在本节中,将向我们展示如何配置浏览器以使用Squid代理。

火狐浏览器

对于Windows,macOS和Linux,以下步骤相同。

  • 在右上角,点击汉堡包图标“☰”以打开Firefox菜单:
  • 单击“⚙首选项”链接。
  • 向下滚动到“网络设置”部分,然后单击“设置...”按钮。
  • 一个新的窗口将会打开。
  • 选择“手动代理配置”单选按钮。
  • 在“ HTTP主机”字段中输入Squid服务器IP地址,在“端口”字段中输入“ 3128”。
  • 选中“将此代理服务器用于所有协议”复选框。
  • 单击“确定”按钮以保存设置。

至此,Firefox已配置完毕,我们可以通过Squid代理浏览Internet。
要进行验证,请打开“ google.com”,键入“ what is my ip”,我们应该会看到Squid服务器的IP地址。

要恢复为默认设置,请转到“网络设置”,选择“使用系统代理设置”单选按钮并保存设置。

还有一些插件可以配置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"

苹果系统 :

"/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地址。