EC2实例没有公共DNS

问题描述 投票:265回答:16

我工作的人给了我EC2凭证登录他的EC2控制台。我不是那个设置它的人。一些实例显示公共DNS名称,而其他实例显示空白公共DNS。我希望能够连接到具有空白公共DNS的实例。我无法弄清楚为什么这些显示为空白。

amazon-web-services amazon-ec2 amazon-vpc
16个回答
551
投票

我有同样的问题解决了它。看一下分步说明:

  • 转到console.aws.amazon.com
  • 转到服务 - > VPC
  • 打开你的VPC
  • 选择连接到EC2和的VPC
  • 选择Actions => Edit DNS Hostnames ---> Change DNS hostnames:to YES

希望这可以帮助!

干杯


5
投票

首先,可能有两个原因:

  1. 您已创建自己的VPC并忘记启用公共DNS。

要解决这个问题:

i)转到AWS VPC控制台并选择您创建的VPC。

ii)然后单击“操作”,然后启用“DNS解析”。

            OR
  1. 您尚未在EC2配置中启用public ip-assign选项。

在这里你不能改变设置;所以创建一个ami图像,然后从中重新创建实例。


2
投票

对于使用CloudFormation的用户,关键属性是EnableDnsSupport和EnableDnsHostnames,应设置为true

VPC: {
    Type: 'AWS::EC2::VPC',
    Properties: {
      CidrBlock: '10.0.0.0/16',
      EnableDnsSupport: true,
      EnableDnsHostnames: true,
      InstanceTenancy: 'default',
      Tags: [
        {
          Key: 'env',
          Value: 'dev'
        }]
    }
  }

1
投票

如果实例位于VPC中,请确保“DNS解析”和“DNS主机名”都设置为“是”。您可以在Aws控制台UI中执行此操作。 HTH!


1
投票

转到VPC控制台,选择您的VPC,然后单击“操作”菜单,选择“编辑DNS主机名” - 选择“是”。那应该解决它。


1
投票

也可以使用AWS CLI完成对DNS主机名设置的更改:

aws ec2 modify-vpc-attribute --vpc-id $vpc_id --enable-dns-hostnames '{"Value": true}'

(其中$ vpc_id是您的实例附加到的VPC的ID。)

一旦VPC更新,实例将获得公共DNS。


1
投票

验证VPC和子网设置后,我的EC2实例仍然没有公共DNS。经过一天寻找解决方案后,我终于明白了。

我必须创建一个新的弹性IP地址,然后将其关联到我的实例。

从EC2仪表板:

从侧栏转到弹性IP。

单击“分配新地址”,然后单击“分配”。

返回EC2仪表板。转到网络接口。

选择没有公共DNS的EC2实例。然后行动 - 关联地址。

在“地址”字段中,选择新的弹性IP地址。

“关联到私有IP地址”字段,选择没有公共DNS的私有IP地址。

单击“关联地址”。

您的EC2实例现在应该具有公共DNS。


0
投票

53
投票

VPC中实际存在一个名为“DNS主机名”的设置。您可以修改EC2实例所在的VPC,并将其更改为“是”。这应该够了吧。

我昨天遇到了这个问题,并尝试了Manny的上述答案,但没有奏效。然而,VPC设置对我有用。

最后我添加了一个EIP,我用它来连接。


36
投票

听起来这个实例是在VPC中启动的,当这样做时,没有检查Automatically assign a public IP address to your instances的复选框。因此,该实例没有公共IP

您可以为此实例分配弹性IP,然后使用该IP登录。


23
投票

在我的情况下,我发现slayedbylucifer和其他人指出相同的答案是有效的。 即使设置为DNS hostname: yes,也没有在my-pvc上分配公共IP(仅限Privat IP)。

绝对必须设置自动分配公共IP Enable。 如果未选中,则默认设置为Use subnet setting (Disable)

Assign Public IP


22
投票
  1. 转到AWS控制台。
  2. 转到“服务”并选择“VPC”
  3. 点击vpc。
  4. 选择实例,然后单击“操作”。
  5. 选择“编辑DNS主机名”,单击“是”。

最后,你将得到你的公共dns。


20
投票

这是为解决不起作用的问题而提供的提示:

提示 - 如果您的实例没有公共DNS名称,请打开VPC控制台,选择VPC,然后选中“摘要”选项卡。如果DNS解析或DNS主机名为否,请单击“编辑”并将值更改为“是”。

假设您已完成此操作并且仍未获得公共IP,则在VPC管理屏幕中转到相关子网,您可能会发现“自动分配公共IP”未设置为“是”。然后修改该设置,我知道你不想在这里,在该子网中创建一个新实例。据我所知,你不能在主机上修改它,我试过试过,只是终止它。


20
投票

对我来说问题出在子网设置中。

  1. 打开https://console.aws.amazon.com/vpc
  2. 转到左侧菜单中的子网
  3. 选择你的子网
  4. 修改自动分配IP设置以启用

9
投票

只需启动另一个实例(如果没有用,也删除有问题的实例)并确保这次检查“自动为您的实例分配公共IP地址”。如果不是那么slayedbylucifer建议;为实例分配弹性IP(EIP),然后使用该IP登录。但要小心,如果您正在运行免费的AWS层,那么EIP将花费您的钱 - 这是一个完整的'其他主题..


8
投票

它与VPC的称为“DNS主机名”的功能有关。您可以启用或禁用它。转到VPC,在“操作”菜单下选择“编辑DNS主机名”项,然后选择“是”。执行此操作后,应显示EC2实例的公共DNS。

© www.soinside.com 2019 - 2024. All rights reserved.