AWS 如何为 VPC 使用 public IPV4 地址范围并将它们作为私有 IP 地址分配给其资源(如 EC2)

How can AWS use public IPV4 address range for a VPC and assign them as private IP addresses to its resources like EC2s

我们都知道整个 IPV4 地址范围池中有保留的 IP 范围 CIDR,即 2^32(0.0.0.0 和 255.255.255.255),该范围包括 10.0.0.0/8 (10.0.0.0 - 10.255.255.255) 172.16.0.0/12 (172.16.0.0 - 172.31.255.255) 192.168.0.0/16 (192.168.0.0 - 192.168.255.255)

因此,如果任何组织要建立其局域网(内联网),则只能使用以上三种之一。

但是当涉及到 AWS 或任何云提供商时,他们似乎允许使用 public IPV4 CIDR 范围创建 VPC,这意味着在 private/public 子网中创建的任何实例 因为 VPC 可以默认为私有 IP 地址,该地址实际上仍然可以是上述保留私有池之外的 public 可路由地址。

https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html所述 "We refer to private IP addresses as the IP addresses that are within the IPv4 CIDR range of the VPC. Most VPC IP address ranges fall within the private (non-publicly routable) IP address ranges specified in RFC 1918; however, you can use publicly routable CIDR blocks for your VPC. Regardless of the IP address range of your VPC, we do not support direct access to the Internet from your VPC's CIDR block, including a publicly-routable CIDR block" 所以我的问题是 AWS 是如何做到这一点的。我知道 DHCP/routing 等有它们自己的机制,但是如何允许它甚至选择全局 public IPV4 地址(WAN 地址池)作为其 VPC 内的私有地址。 IETF/IANA 怎么允许的。另外,如果我要设置我的私人家庭网络,为什么我不能为我的 LAN 选择那些 public IPV4 地址范围而不是 10.0.0.0/8, 172.16.0.0/12 和 192.168.0.0/16.

我明白选择 public ips 有其自身的风险,如果它们与互联网上的实际 ips 冲突,我将无法从我的私人网络浏览那些 public 网站.但是 AWS 如何管理这个。它是否将首字母缩写词作为私有 IP,因此如果命中相同的对应 public ip,它仍会将其解析为 public 并向您呈现该站点(我的意思是直接访问该站点 public IP) 或者它不会看到它自己的私有 ip 并通过它自己的私有 DNS

解析它

如果您选择全局 public IPV4(在保留池之外)作为您的 EC2 私有地址,EC2 所在子网的路由 table 将决定如何解析它在这种情况下,优先顺序将是路由 table 的设置方式。所以通常是这样的:- 目的地(您的 VPC CIDR) 目标本地

因此,当您从您的网络访问该私有 IP 时,路由 table 将看到它的本地 VPC IP 并将其解析为该 EC2 私有 DNS,因此您将无法解析它到实际的全球IP。

我知道这个问题已经过时了但是...

正如文档所说 - AWS 不会公布这些路由(与 BYOIP 不同,他们会公布这些路由) - 因此 AWS 无法路由到它们。

VPC 常见问题解答说明您必须通过站点到站点 VPN 或 Direct Connect 路由到它们。

因此您必须从您的数据中心公布这些 CIDR,并通过 VPN 将这些 CIDR 路由到 VPC。

我不知道 NAT 网关是否适用于传出。