AWS EC2 公共 IP 与私有 IP

Posted

技术标签:

【中文标题】AWS EC2 公共 IP 与私有 IP【英文标题】:AWS EC2 Public IP vs Private IP 【发布时间】:2017-10-09 14:56:42 【问题描述】:

我是使用 EC2 的新手,并且有一个希望很容易回答的问题 - 我的 EC2 实例有一个公共 IP 和 DNS 以及一个私有 IP 和 DNS。从我的笔记本电脑工作站,我可以 ping 公共 IP,没问题。当我从笔记本电脑 ssh ubuntu@public-ip SSH 到公共 IP 时,这会将我带到私有 IP 提示符 ubuntu@private-ip。我相信网络地址转换器正在阻碍并将公共 IP 转换为私有 IP,并通过 ssh 将我转换为私有 IP。那里的 ifconfig 按预期向我显示了私有 ip。现在的问题是我无法按预期从 EC2 实例私有 IP 执行 ping 笔记本电脑 IP。

P:S。以下是 amazon.com 的摘录,可能与此处相关:

每个接收公共 IP 地址的实例也被赋予一个外部 DNS 主机名;例如,ec2-203-0-113-25.compute-1.amazonaws.com。我们将外部 DNS 主机名解析为实例网络外部的实例公共 IP 地址,以及实例网络内的实例私有 IPv4 地址。公共 IP 地址通过网络地址转换 (NAT) 映射到主要私有 IP 地址。有关 NAT 的更多信息,请参阅 RFC 1631:IP 网络地址转换器 (NAT)。

我想要的是能够 ssh 到公共 IP(提示应该显示 ubuntu@public IP 而不是 ubuntu@private IP),这样我就可以在我的笔记本电脑和 EC2 实例之间来回 ping。

非常感谢任何帮助。

最好的 罗汉

【问题讨论】:

为什么要在笔记本电脑和 Amazon EC2 之间进行 ping 操作?只是为了测试连接,还是通过执行 PING 来满足某些业务需求?限制 PING 的能力是一种很好的安全做法,因为它可能会泄露可用于破坏安全的信息。 【参考方案1】:

ping 问题与您所看到的无关。

您看到的是始终 -- 无一例外 -- EC2 是如何工作的,具有公共 IP 地址。实例只知道自己的私有 IP,并且基础架构会处理私有地址和公共地址之间的自动 1:1 NAT。

我在 Why do we need private subnets in VPC? 中提到过这个

如果您无法 ping 笔记本电脑,则问题很可能出在笔记本电脑端。

尝试从您的 EC2 实例ping 8.8.8.8。或 ping ***.com。 Ping 任何已知可 ping 通的东西。

或者,使用远程窥镜,例如 this one 来 ping 您的笔记本电脑。有用吗?

如果从实例 ping 到 any 目的地不起作用,那么想到的唯一其他解释是您可能更改了实例的 outbound 安全组设置而不了解更改的含义...或者您使用 iptables 做了一些不是您想要的事情...但我假设您会提到这些。

【讨论】:

【参考方案2】:

对于 SSH 到私有 ip,您应该在您的 VPC 的私有网络中,它可以通过 *** 完成

【讨论】:

以上是关于AWS EC2 公共 IP 与私有 IP的主要内容,如果未能解决你的问题,请参考以下文章

AWS EC2 Windows实例无法通过公共IP访问

无法恢复 AWS EC2 公共 IP 地址

具有私有 IP 的 AWS Gitlab Autoscale 运行器,不想启用公共 IP

如何使用 Ruby SDK 从 AWS 获取公共 IP 地址

使用 AWS api 网关 + lambda + Nodejs 的私有和公共 ip

如何为在 EC2 模式下运行在 AWS ECS 集群中的容器分配公共 IP