EC2 t2.micro实例没有公共DNS

时间:2014-11-03 01:51:10

标签: amazon-ec2 amazon-vpc

EC2 t2.micro实例没有公共DNS

我已经启动了一个亚马逊网络服务(AWS)EC2实例t2.micro,该实例必须在VPC中启用。 VPC已将“自动分配公共IP”设置为“是”。 DNS解析:是的 DNS主机名:是的 但是在EC2仪表板上,该实例仍然具有空白的公共DNS和公共IP。我曾尝试多次重启实例,但仍未分配公共IP。我们的AWS账户附带的5个弹性IP已被使用。是否可以在不使用弹性IP的情况下将公共IP分配给t2.micro实例?

我已阅读帖子:EC2 instance has no public DNS, 但我没有声望点可以添加评论,所以我发布这个作为新问题。

13 个答案:

答案 0 :(得分:31)

右键单击VPC管理控制台页面中的VPC行,然后选择“编辑DNS主机名”。将其设置为“是”。必须允许所有具有相同VPC的实例。

在“步骤3:配置实例详细信息”中创建新实例时,需要启用“自动分配公共IP”。

就是这样! :-)

答案 1 :(得分:26)

根据您提供的信息,我无法100%确定我的回答是正确的,但这是一个想法。

EC2实例没有公共IP地址的最常见原因是您在私有子网中启动了EC2实例。私有子网意味着位于该子网中的任何EC2实例都无法直接从公共Internet进行寻址。换句话说,根据定义,私有子网中的EC2实例不能具有公共IP地址。

这可以解释为什么检查“公共IP地址”没有效果,以及为什么您无法分配弹性IP地址。

您不能只是将实例从一个子网重定位到另一个子网。如果需要,可以创建实例的AMI(右键单击EC2实例并单击create image),然后从另一个子网中的AMI启动新实例。

要确定您的子网是否为私有,请查看路由表,看看您是否有 Internet Gateway 路由。转到 VPC > 子网>选择一个子网> 路线表标签。查找类似igw-***的条目。如果你看到这个,它就是一个公共子网。如果您看到类似eni-*** / i-***的内容,则它是私有子网。

答案 2 :(得分:8)

今天面对同样的问题。我的EC2实例没有公共DNS,因此我无法通过ssh连接。

我尝试了以下步骤并取得了成功:

  • 转到VPC> Internet网关:确保创建Internet网关并将其连接到EC2的VPC

  • 转到VPC>路由表,选择VPC路由,导航到路由选项卡:使用

  • 添加新规则

++目的地:0.0.0.0/0

++目标:选择创建的Internet网关

  • 转到VPC>子网>路由表选项卡:单击编辑,切换到路由表,目的地为上面的目的地0.0.0.0/0

完成。

答案 3 :(得分:6)

同时检查: VPC - >子网 - >子网操作 - >修改自动分配公共IP

答案 4 :(得分:2)

我有同样的问题。我的问题的原因结果是我使用的是与子网无关的路由表。

enter image description here

更改子网后,我的实例被分配了公共网址。

答案 5 :(得分:2)

嗯。这么多回应。所有这些都按照“您做错了事”的顺序进行。

Newsflash:AWS并非总是能正常工作。我已经使用AWS很长时间了。我亲眼目睹了实例没有启动,实例没有停止,已部署实例上的磁盘损坏以及正在运行的实例上的网络故障。

我从未见过没有创建公共IP的情况。直到今天早上。现在,我可以将其添加到列表中。

作记录-这是我验证过的内容:)

  • 集群中的三个相同实例
  • 所有实例都在同一可用区中
  • 所有实例具有相同的VPC
  • VPC DNS设置正确(启用了解析/主机名)
  • 所有实例具有相同的子网
  • 子网具有:a)公共路由表; b)已启用创建公共IP的选项
  • 子网中有足够的IP空间

三个实例中的两个实例获得公共IP。第三个没有。

因此,对于将来的任何其他人,请转至这篇文章:不,您不是疯子。是的,AWS可能会搞砸。

在我们的案例中,手动终止问题实例并发布新的群集...“修复”了问题。

而且-我赞成答案,该答案表明STOPPED实例的“类似启动”对公共IP产生了影响。不是因为它是正确的答案(不是),而是因为它对其他无法解释的情况表现出了令人钦佩的响应:反复试验/实验。好老的“ Gee,如果我尝试 this ...会发生什么?”。作为云专家:如果所有其他标准故障排除步骤均失败,并且唯一的替代方法是销毁实例(或子网,Lambda函数,DynamoDb或SNS队列;无论发生故障的资源如何),那么明智的做法是:尝试其他操作。

换句话说:保持开放的态度

答案 6 :(得分:1)

有很多可能的原因。检查以下内容。

您需要创建一个VPC。

应启用DNS解析和DNS主机名。

选择您的VPC->操作->编辑DNS解析->启用 选择您的VPC->操作->编辑DNS主机名->启用

进入VPC也许您需要一个专用和公用子网。

在专用子网中,您需要与此相关联的NAT网关。 在公共子网中,您需要与此关联的Internet网关。

您需要为您的公共子网启用自动分配IP。  选择公共子网->操作->修改自动分配IP设置->启用

稍后在中启动新实例时 步骤3:配置实例详细信息。

您应该选择VPC和公共子网。然后在“自动分配公共IP”部分中选择“使用子网设置(启用)”

我认为那应该可以解决您的问题...

答案 7 :(得分:0)

创建子网后-确保自动分配公共IPv4设置设置为是或启用。 确保上述设置已打开后-然后启动EC2实例。 如果在创建子网后未启用上述设置,则EC2实例将被视为“私有”,并且将没有公共IPV4地址。

答案 8 :(得分:0)

转到VPC->子网 并确保将自动分配的公共IPv4地址设置为YES

答案 9 :(得分:0)

我的主要“陷阱”是从CloudFormation堆栈创建VPC和子网时,我的子网缺少属性“ MapPublicIpOnLaunch”:true。

答案 10 :(得分:0)

我的观察:

您需要为公共子网启用自动分配IP。选择公共子网->操作->修改自动分配IP设置->启用

仅在完成上述操作后,然后启动EC2实例,您将开始看到分配的公共IP。 在未启用上述设置的情况下创建的EC2实例启用后,即使重新启动后该EC2也不会分配公用IP,它已经认为该子网是私有的。 希望这会有所帮助!

答案 11 :(得分:0)

很可能,公共子网没有启用“自动分配 IPv4”功能。它被选择为“否”。在您的实例创建过程中,默认选项是“使用子网设置(已启用)”。这就是为什么新发布的实例无法获取公网IP地址。

转到 VPC 仪表板并单击子网。选择一个公共子网,然后从操作列表中选择修改自动分配 IP 设置,然后选中自动分配 IPv4。保存更改后,您的实例将自动获取公共 IP。

答案 12 :(得分:-2)

当我从STOPPED实例中使用“像这样启动更多”选项时,将得到一个没有公共ip的新实例。但是,如果我从正在运行的实例中“像这样启动”,则新实例具有公共ip。