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的主要内容,如果未能解决你的问题,请参考以下文章
具有私有 IP 的 AWS Gitlab Autoscale 运行器,不想启用公共 IP
如何使用 Ruby SDK 从 AWS 获取公共 IP 地址