亚马逊如何为其 EC2 实例分配公共 IP 地址?
由于这个 IP 地址是公开的,因此我可以从任何地方使用它,并且可以通过互联网访问它,这意味着它在全球范围内是独一无二的。我从新闻中看到,北美已经用尽了所有 IPV4 地址,那么亚马逊如何仍然能够将公共 IPV4 地址分配给客户呢?
答案1
Amazon Web Services 分配了多个 IPv4 地址池,其中一些池包含超过一百万个地址。
看http://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html
有两种方法可以为 EC2 实例获取公共 IP 地址:从动态池和从弹性池。
弹性 IP 地址与 AWS 账户相关联。您可以自由地将它们与任何实例相关联,并将它们从一个实例移动到另一个实例,但如果您重新映射它们的次数超过每月允许的重新映射次数,则需要支付象征性的费用。每个弹性 IP 不收取任何费用,除非您 (a) 将其保留为未附加到任何实例,(b) 将其绑定到已附加弹性 IP 地址的实例(同一实例上的第 2、3、4 等需要收费,但第 1 个不需要)。这两种情况都适用象征性的小时费用,以鼓励有效利用可用的地址空间。每个区域的默认限制为 5 个弹性 IP 地址,但当您向 AWS 支持发送请求并附上使用案例说明时,限制会增加。在账户持有人释放这些地址之前,AWS 不会回收这些地址供其他客户使用。
动态池中的地址会附加到您要求实例具有公共 IP 地址但不具有弹性 IP 的实例。每次启动实例时,都会从池中分配其中一个地址。如果实例终止,地址会立即回收到池中,然后可以随时将其重新分配给其他客户。即使您停止并且不终止具有此类地址的实例,该地址也会立即被池回收。重新启动实例将使其从池中获取新的公共 IP。
在 VPC 内,任意数量的实例都可以使用任一池中的单个公共 IP 进行出站 Internet 访问,方法是将 IP 地址绑定到“NAT 实例”(技术上称为端口地址转换,是 NAT 的一个子集),这是一个 EC2 实例,作为仅具有私有 IP 的实例通向 Internet 的默认路由。
因此,AWS 能够实现这一目标的方式就是利用现有的大量地址,加上鼓励高效使用的政策。