我必须 EC2 实例。它们都在同一个 VPC 中,并且都有分配给它们的公共 IP。
我的问题是我需要使用安全组中的公共 IP 来允许它们进行通信。如果我尝试使用私有 IP,它们的连接将被拒绝。
我最终将删除他们的公共 IP,并且希望以后不必更改我的安全组设置。
为什么我不能使用私有 IP 作为同一 VPC 中两台机器的源?
我必须 EC2 实例。它们都在同一个 VPC 中,并且都有分配给它们的公共 IP。
我的问题是我需要使用安全组中的公共 IP 来允许它们进行通信。如果我尝试使用私有 IP,它们的连接将被拒绝。
我最终将删除他们的公共 IP,并且希望以后不必更改我的安全组设置。
为什么我不能使用私有 IP 作为同一 VPC 中两台机器的源?
tl;dr:当您使用其公共 IP 地址连接到实例时,您也必须使用源计算机的公共地址作为源地址(或它的 NAT 网关,如果源实例没有 publig IP),并且当你这样做时,你的流量会传到 Internet 并返回(尽管你承认你并没有远离 Internet)。
让我们举两个例子:
如果实例 #1 使用实例 #2 的公共 IP 203.0.113.2 连接到 #2:
如果实例 #1 使用 172.31.3.2 连接到实例 #2,则基本上不会发生这种情况,因此 #2 的安全组会将 172.31.3.1 视为源地址。
使用目标实例的私有 IP 是可行的方法。
请注意,使用私有 IP 时,您还可以在实例 #2 的安全组规则中列出实例 #1 的安全组 ID,而不是列出实例 #1 的私有 IP 地址。它与控制台中的 IP 位于同一位置——
sg
在该框中键入,您应该能够选择一个。如果您将实例#1 放在一个自动缩放的“一组”中,这可能更容易维护并且运行良好——这样如果机器失败,自动缩放会替换机器。另请注意,当两个实例使用它们的公共 IP 进行通信时,您需要为进出和返回付费。它不像 Internet 流量成本那么高,但该费率类似于区域内跨可用区的费率和区域内 VPC 对等流量。