



运维人员;开发人员


- 以亚太地区(东京)区域为例,如果您将方案部署在该区域,且您按照教程中的步骤操作并在教程结束的 1 小时内终止相应资源,所需费用将不超过 3USD。
- 亚马逊云科技免费套餐配额
背景
随着 IPv4 地址的日益稀缺,AWS 开始对 IPv4 地址进行收费,我们建议用户采取 IPv6 来进行架构优化,但对于某些场景比如:某些应用程序或服务不支持 IPv6,在 lightsail 出站访问其时如果没有 IPv4,则会造成访问问题。所以对于这些出站访问场景,为了兼容性,无法完全弃用 IPv4,导致需要额外支付 IPv4 地址费用。本文将介绍一种使用 Squid 代理来解决此问题的方案,帮助您在不放弃 IPv4 的情况下,有效降低 Lightsail 集群采用 IPv4 的数量,以便达到成本节省。
实现方式
第一步:在 Lightsail 中创建 Squid 实例
1. 创建 Lightsail
进入 Lightsail 控制台,点击“创建实例”

选择“Linux/Unix” 平台,“仅限操作系统(OS)” → “Ubuntu”

在“可选启动脚本中”填入以下内容,以在启动实例时完成 Squid 的配置。之后,在选择“双堆栈”网络类型以及合适的实例类型,实例类型的选择请根据您实际业务负载选择合适的尺寸,在这里我选择“$5 美元/月(前 90 天免费)”,之后点击“创建实例”
sudo apt update
sudo apt install squid -y
sed -i 's/http_access deny all/http_access allow all/g' /etc/squid/squid.conf
sudo systemctl restart squid

2. 配置安全组。
进入刚刚创建好的实例的详细页面内,选择“联网”,在“IPv4 防火墙”增加允许“3128”端口的进站请求。

提示:在安全组配置中,您也可以选择“限制 IP 地址”以提升安全性,只允许其他需要进行代理的 lightsail 实例 IP。
第二步:配置其他没有 IPv4 Lightsail 集群实例,以应用 Squid 代理出站。
Linux:
编辑系统代理设置,设置代理为之前 Squid 服务器的 IP 和端口号。以 Ubuntu 为例:
1. 使用文本编辑器(如 nano)编辑/etc/environment 文件:
sudo nano /etc/environment
2. 在文件末尾添加以下两行,替换 "<私有 ip>:3128" 为刚刚在“第一步”中创建好的 Squid 代理服务器私有 IP 和端口,私有 IP 可以在 Lightsail 控制台中查看:以私有 ip 为 192.168.1.100 举例
http_proxy="http://192.168.1.100:3128/"
3. 保存并退出文件
4. 使环境变量生效:
source /etc/environment
5. 验证环境变量是否生效:
echo $http_proxy
如果输出了你配置的代理地址,说明配置成功。
6.(可选)如果只是临时使用代理,也可以在终端中直接导出环境变量:以私有 ip 为 192.168.1.100 举例:注:但这种方式只对当前终端有效,重启后会失效。
export http_proxy=http://192.168.1.100:3128
通过上述步骤,你已经为系统设置了全局的 HTTP/HTTPS 代理,所有需要访问网络的应用程序都会通过配置的 Squid 代理服务器进行网络通信。对于某些特定的应用程序,你也可以单独为它们设置代理,而不影响其他应用的网络访问。
Windows:
- 打开 "Control Panel" 搜索选择 "Internet Option",选择“Connections”→“LAN settings”
- 勾选 "Use a Proxy Server for your LAN" 选项框。
- 在 "Address" 和 "端 Port" 字段中,分别输入 Squid 代理服务器的 IP 地址和端口号。例如,如果 Squid 服务器的 IP 地址为 192.168.1.100,端口号为 3128,则输入:http://192.168.1.100:3128
- 单击 "OK" 保存设置。

通过在 Linux 和 Windows 上配置 Squid 代理,您可以让没有公网 IPv4 地址的 Lightsail 实例通过代理服务器访问互联网,从而降低对公网 IPv4 地址的需求,节省成本。
第三步(可选):优化
除了基本的代理功能外,Squid 还提供了一些可选的优化和安全增强措施,以满足不同场景的需求。
添加 Squid ACL(可选)
访问控制列表 (ACL) 提供了一种限制哪些 IP 地址可以连接到互联网的方式。可以使用以下命令为 Squid 创建 ACL:
在 squid.conf 文件中添加以下行以允许单个 IP 地址访问:
acl permittedips src [ip地址]
例如,要允许本地 IP 地址例如 192.168.0.15,请输入:
acl permittedips src 192.168.0.15
注意:在大型 ACL 中,最好为每个条目添加注释,以跟踪允许的系统。要添加注释,请使用(#)符号:
acl permittedips src 192.168.0.15 # [注释]
使用以下语法指定一个IP地址范围:
acl permittedips src [起始IP地址]-[结束IP地址]
通过添加 Safe_ports 指令打开特定端口:
acl Safe_ports port [端口号]
在 Squid 上阻止网站(可选)
Squid 可以防止用户访问某些网站,这对于管理员控制管理很有帮助。以下是配置 Squid 阻止网站的步骤:
1. 在 /etc/squid 目录中创建一个新的文本文件 blocked.acl:
sudo nano /etc/squid/blocked.acl
2. 添加你要阻止的网站,每个条目前面加一个点。这个点告诉 Squid 阻止主网站的所有子域名。例如:
.facebook.com
.instagram.com
列出网站后,保存文件并退出。
3. 打开 squid.conf 文件:
sudo nano /etc/squid/squid.conf
4. 在 ACL 列表上方添加以下行:
acl blocked_websites dstdomain "/etc/squid/blocked.acl"
http_access deny blocked_websites
5. 保存文件并退出,然后重启 Squid。
通过这些可选的优化和安全增强措施,您可以根据具体需求对 Squid 进行定制,以获得更好的性能和安全性。
清理资源
当不再需要使用 Squid 代理时,在Lightsail 控制台中删除该实例,释放资源。
总结
通过使用 Squid 代理,我们可以有效地将没有 IPv4 的 Lightsail 集群的出站请求转发到具备 IPv4 地址的这台代理机上,从而减少对 IPv4 地址的需求,降低 Lightsail 的成本。这种方法简单易行,能够满足大多数场景的需求。
更多教程
快速搭建容量高达 35GB 的免费个人网盘
本教程将介绍如何搭建一个没有使用限制的免费私人网盘。
构建企业专属智能客服机器人
本文将演示如何结合多种服务,打造企业专属的智能客服。
使用生成式 AI 构建多语言问答知识库
使用多种服务,构建可汇总搜索结果的多语言知识库。
免费套餐
AWS 海外区域
拓展海外业务或个人体验
免费使用 100 余种云产品或服务, 长达 12 个月
AWS 中国区域
发展中国业务
免费使用 40 余种核心云服务产品,长达 12 个月