留言

引入不使用公共 IPv4 的双栈应用负载均衡器 网络与内容交付

无需公共 IPv4 的双栈应用负载均衡器

关键要点

亚马逊网络服务AWS推出了一项新功能,允许您在无需公共 IPv4 地址的情况下设置互联网可访问的应用负载均衡器。客户端可以仅使用 IPv6 地址进行连接,避免了公共 IPv4 的费用。此功能仍支持双栈配置,可以使用私有 IPv4 地址与目标进行通信。设置可以通过 AWS 命令行界面AWS CLI或 AWS 管理控制台完成。

在 2024 年 5 月,亚马逊网络服务AWS推出了一项新功能,为互联网可访问的应用负载均衡器提供服务。此增强功能使您可以在不需要公共 IPv4 地址的情况下配置应用负载均衡器,允许客户端仅通过 IPv6 地址连接。客户端通过解析分配给负载均衡器的 AAAA DNS 记录来进行连接。该应用负载均衡器仍然支持双栈,能够使用私有 IPv4 地址与负载均衡器和目标之间进行通信。此功能的好处在于,您可以灵活地为应用目标使用 IPv4 和 IPv6,同时避免不必要的公共 IPv4 费用。

在深入了解该功能之前,让我们回顾一下应用负载均衡器支持的 IP 地址类型:

地址类型描述ipv4客户端必须使用 IPv4 地址连接负载均衡器例如:192021。dualstack客户端可以同时使用 IPv4 地址例如:192021和 IPv6 地址例如:2001db885a38a2e03707334连接负载均衡器。dualstackwithoutpublicipv4客户端必须使用 IPv6 地址连接负载均衡器例如:2001db885a38a2e03707334。

功能如何运作?

如图 1 所示,一个应用负载均衡器已在两个双栈子网中创建。这些子网具有指向互联网网关的默认 IPv6 (/0) 路由。应用负载均衡器提供了一个客户端可以通过互联网连接的 IPv6 地址,然后使用私有 IP 地址与目标进行通信。接下来,您可以在 Amazon Route 53 的公共托管区域中创建一个指向应用负载均衡器的 AAAA 别名记录,供您的应用用户使用。

图 1 无公共 IPv4 的双栈应用负载均衡器

下面我们来看看如何使用 AWS 命令行界面AWS CLI 或 AWS 管理控制台 来配置此功能。

使用 AWS CLI 配置此功能

使用 createloadbalancer 命令创建一个双栈负载均衡器。与任何应用负载均衡器一样,您必须在不同的可用区中指定两个子网,并且在创建应用负载均衡器之前,需要创建安全组。

bashaws elbv2 createloadbalancer name DualstackwithoutPublicIPv4ALB subnets subnet05ba35492f49ebf96 subnet07f835be0c4841904 securitygroups sg008c280444b05d751 ipaddresstype dualstackwithoutpublicipv4json{ LoadBalancers [ { LoadBalancerArn arnawselasticloadbalancinguseast1777788889999loadbalancer/app/DualstackwithoutPublicIPv4ALB/c32fa99f5dd20f18 DNSName DualstackwithoutPublicIPv4ALB949941269useast1elbamazonawscom CanonicalHostedZoneId Z35SXDOTRQ7X7K CreatedTime 20240524T2100488800000000 LoadBalancerName DualstackwithoutPublicIPv4ALB Scheme internetfacing VpcId vpc03d1bfe794747c9d8 State { Code provisioning } Type application AvailabilityZones [ { ZoneName useast1a SubnetId subnet05ba35492f49ebf96 LoadBalancerAddresses [] } { ZoneName useast1d SubnetId subnet07f835be0c4841904 LoadBalancerAddresses [] } ] SecurityGroups [ sg008c280444b05d751 ] IpAddressType dualstackwithoutpublicipv4 } ]}

要创建目标组或监听器等,请遵循文档:使用 AWS CLI 创建应用负载均衡器的教程。

使用 AWS 控制台配置此功能

通过打开亚马逊 EC2 控制台在同一地区,进入负载均衡器部分,然后单击 创建负载均衡器 创建一个新的应用负载均衡器,如图 2 所示。

接着,如图 3 所示,输入负载均衡器的名称,选择 互联网可访问 作为计划,以及 双栈无需公共 IPv4 作为 IP 地址类型。

选择虚拟私有云VPC、子网、安全组和目标组,如图 4 所示。

确保创建一个目标组和监听器。有关如何配置此操作的详细信息,请参考如何配置目标组和监听器。

验证

确认新创建的应用负载均衡器只有一个 AAAA DNS 名称,如图 5 所示。

在 网络映射 选项卡中,应用负载均衡器被证明未配置任何公共 IPv4 地址,如图 6 所示。应用负载均衡器仍然会创建私有 IPv4 地址以便与目标进行通信。

您可以使用 nslookup 或 dig 验证负载均衡器仅返回 IPv6 地址:

bash nslookup DualstackwithoutPublicIPv4ALB368593218useast2elbamazonawscomServer 10102Address 10102#53

Nonauthoritative answerName DualstackwithoutPublicIPv4ALB368593218useast2elbamazonawscomAddress 2001db81063f105de70b4042fd8f27fName DualstackwithoutPublicIPv4ALB368593218useast2elbamazonawscomAddress 2001db81063f1065a412957435050c3

dig DualstackwithoutPublicIPv4ALB368593218useast2elbamazonawscom AAAA short2001db81063f1065a412957435050c32001db81063f105de70b4042fd8f27f

测试与应用负载均衡器的连接:

bash

curl 6 http//DualstackwithoutPublicIPv4ALB368593218useast2elbamazonawscom

It works!

主要使用案例和客户

以下使用案例是可以利用此功能的客户示例:

引入不使用公共 IPv4 的双栈应用负载均衡器 网络与内容交付您的客户端可以在 IPv6 网络上与应用负载均衡器互通。这些客户端可以解析 IPv6 DNS,并连接到应用负载均衡器的 IPv6 端点。如果您需要公共 IPv4 连接,则必须继续使用双栈应用负载均衡器。使用支持 IPv6 端点的内容分发网络CDN作为源时,可以启用此功能。针对这种情况启用不带 IPv4 的双栈将消除应用负载均衡器的公共 IPv4 费用。

如何迁移

如果您当前只使用 IPv4 的应用负载均衡器,我们建议您先切换到双栈。这将使您在转换到不使用 IPv4 的双栈时更有信心,因为这是一个更渐进的改变。

然后,您应该测试所有的 IPv6 基础设施,特别是应用负载均衡器、互联网网关和路由表是否正确设置。确保所有客户端通过 nslookup 或 dig 获取应用负载均衡器的 IPv6 地址,并且客户端可以成功使用 curl 6 命令连接到 IPv6 应用负载均衡器的端点。在确认所有客户端都能成功连接到 IPv6 应用负载均衡器端点后,您可以使用选项 2 将地址类型切换到禁用 IPv4 的双栈,以平稳地将流量导向 IPv6 端点。

选项 1 迁移到新创建的不使用公共 IPv4 的双栈应用负载均衡器

对于此选项,您可以创建两个独立但相同的环境。一个环境运行当前应用版本双栈或 IPv4 应用负载均衡器,另一个环境运行新应用版本无公共 IPv4 的双栈。验证客户端在执行 nslookup 或 dig 时,仅获取应用负载均衡器的 IPv6 地址,并且客户端能够成功通过 curl 6 命令完成请求。有关更多详细信息,请参考关于 部署策略 的白皮书。

使用这种方法可以提高应用的可用性,降低部署风险,并简化故障回滚过程。如果部署失败,则可以迅速回退。一旦对新环境完成测试,生产应用流量将重定向到新环境,旧环境将被弃用。

在这种情况下,您可以根据前面“配置该功能”部分中的步骤为不带 IPv4 地址的双栈应用负载均衡器创建新的部署,经过彻底测试后,将流量故障转移到新部署。

flyingbird 飞鸟机场

选项 2 从双栈迁移到不使用公共 IPv4 的双栈

将应用负载均衡器的 HTTP 客户端保持活动 持续时间 修改为 60 秒,以优雅地终止客户端连接。该设置可以在控制台中的应用负载均衡器的 属性 选项卡下找到,默认值为 3600 秒。修改您的双栈互联网可访问应用负载均衡器,选择 操作 并选择 编辑 IP 地址类型。在 基本配置 中选择 双栈无公共 IPv4。验证应用负载均衡器的详细信息中显示 DNS 名称的 AAAA 记录,而不再显示之前的 A 记录和 AAAA 记录。改回应用负载均衡器的 HTTP 客户端保持活动持续时间,直到至少等待 1 小时以及切换到无公共 IPv4 的双栈的客户端保持活动时间。这是为了确保在更改后,应用负载均衡器能够处理完 IPv4 流量。此更改不会影响应用负载均衡器与其关联的目标之间的连接。您的应用堆栈需求在切换到无公共 IPv4 的双栈时保持不变。这意味着应用负载均衡器的目标组配置保持不变。如果应用负载均衡器和目标之间的通信之前使用 IPv4,它们仍然将继续使用 IPv4。如果配置之前使用 IPv6,它们将继续使用 IPv6。应用客户端查询应用 DNS 名称并接收端点的 IPv6 地址。客户端使用 IPv6 打开与应用端点的连接。应用负载均衡器通过 IPv4/IPv6 连接将流量分配给目标组中的健康目标。

注意事项

在准备实施无公共 IPv4 的双栈应用负载均衡器时,请考虑以下事项:

在将应用负载均衡器迁移到无公共 IPv4 的双栈之前,请确认您没有任何客户端仍使用公共 IPv4 进行连接。您可以使用应用负载均衡器访问日志验证客户端详细信息,并查看 clientport 字段。如果您使用外部身份提供者IdP认证与应用负载均衡器一起使用,则应用负载均衡器与 IdP 或 Cognito 端点之间的所有通信仅使用 IPv4。如果您使用不带 IPv4 的应用负载均衡器,必须将其子网配置为能够访问 IdP 公共端点。您可以查看我们关于使用 NAT 网关连接只有 IPv6 的工作负载到 IPv4 服务的博客文章了解一个选项。如果您使用 AWS WAF,防火墙或安全服务支持 IPv6 端点作为目标,能够启用此功能。对于这种用途,启用禁用 IPv4 的双栈将消除应用负载均衡器的公共 IPv4 费用。创建负载均衡器时,您可以设置 IP 地址类型ipv4、dualstack 或 dualstackwithoutpublicipv4,并随时更新。有关配置的详细信息,请参见 双栈要求 部分。当您
保障生成式 AI:应用相关安全控制 安全博客 最新的 PCI DSS v40 合规包已在 AWS Artifact 上发布 安全博客