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

[复制链接] |主动推送
查看33 | 回复0 | 2024-9-11 18:10:53 | 显示全部楼层 |阅读模式
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_ADDRORT
在所有接口和默认端口上运行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工具。下面的命令将USERNAMEASSWORD对附加到/etc/squid/htpasswd文件中。



printf "USERNAME(openssl passwd -crypt PASSWORD)\n" | sudo tee -a /etc/squid/htpasswd
例如,要创建一个密码为 "@ssvv0rT "的用户 "josh",你需要运行。

$ printf "josh(openssl passwd -crypt 'P@ssvv0rd')\n" | sudo tee -a /etc/squid/htpasswd
joshMxVjdyPchJl6
下一步是启用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
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则