关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

如何在Ubuntu 20.04上安装和配置Squid Proxy

发布时间:2022/12/5 9:15:45
香港云服务器


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

本教程解释了如何在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)来控制客户如何访问网络资源。默认情况下,只允许从本地主机访问。

如果所有使用代理服务器的客户都有一个静态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使用后端来验证用户。Squid支持Samba、LDAP和HTTP基本认证。

在本指南中,我们将使用basic auth。它是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

前三行是创建一个新的ACL,名为authenticated,最后一行是允许认证用户访问的。

重新启动Squid服务。

$ sudo systemctl restart squid