EC2实例没有公共DNS

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

202290 次浏览

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

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

只需启动另一个实例(如果它没有用处,也可以删除有问题的实例),并确保这次选中了“自动为您的实例分配公共IP地址”。如果不像路西法说的那样;为实例分配一个弹性IP (EIP),然后使用该IP登录。但是要小心,如果你运行的是免费的AWS层,一个EIP会让你花钱——这是另一个话题了。

实际上,在VPC中有一个叫做“DNS主机名”的设置。可修改EC2实例所在的VPC,将该选项修改为“是”。这样应该可以了。

我昨天遇到了这个问题,尝试了曼尼的上述答案,但没有奏效。但是,VPC设置做了适合我。

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

如果实例在VPC内,请确保“DNS解析”和“DNS主机名”均为“yes”。您可以在Aws控制台UI中完成此操作。HTH !

我也遇到过同样的问题,但我解决了。一起来看看这些步骤吧:

  • 访问console.aws.amazon.com
  • 转到服务→VPC
  • 打开你的vpc
  • 选择你的VPC连接到您的EC2和
  • select Actions =>编辑DNS主机名 ——比;修改DNS主机名:YES

进入VPC控制台,选择您的VPC,单击“操作”菜单,选择“编辑DNS主机名”—选择“是”。这应该能解决问题。

这是解决这个问题的技巧,它不起作用:

提示—如果您的实例没有公共DNS名称,请在VPC控制台,选择VPC,在“概要”页签。如果“DNS解析”或“DNS主机名”中有一个为“否”,单击“编辑”,修改为“是”。

假设你已经这样做了,你仍然没有得到一个公共IP,然后在VPC管理屏幕转到有问题的子网,你可能会发现“自动分配公共IP”没有设置为yes。修改这个设置,我知道你不想在子网中创建一个新实例。据我所知,你不能在主机上修改这个,我试了又试,只是终止它。

  1. 进入AWS控制台。
  2. 进入“服务”页面,选择“VPC”
  3. 单击“vpc”。
  4. 选择实例并单击Action。
  5. 选择“编辑DNS主机名”,单击“是”。

最后你会得到你的公共dns。

在我的情况下,我从slayedbylucifer和其他指向相同的答案是有效的 即使设置为DNS hostname: yes,在< a href = " https://stackoverflow.com/a/38235022/4058484 " > my-pvc < / >上也没有分配公共IP(只有私有IP)。< / p >

它肯定是自动分配公网IP必须被设置为Enable 如果未选中,则默认设置为Use subnet setting (Disable)

Assign Public IP

首先,这可能有两个原因:

  1. 已创建VPC,但忘记开启“公共DNS”。

要解决这个问题:

i)进入“AWS VPC控制台”,选择已创建的VPC。

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

            OR
  1. 您没有在EC2配置中启用公共ip-assign选项。

这里你不能改变设置;因此,创建一个ami映像,然后从中重新创建实例。

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

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

(其中$vpc_id为实例所绑定的VPC ID。)

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

对于那些使用CloudFormation的人,关键属性是EnableDnsSupportEnableDnsHostnames,应该设置为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. 打开https://console.aws.amazon.com/vpc
  2. 在左侧菜单中进入子网
  3. 选择子网
  4. 将自动分配IP设置修改为启用

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

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

从EC2仪表板:

从侧栏转到弹性ip

单击分配新地址,然后单击分配

回到EC2仪表盘。去网络接口

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

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

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

单击联系地址

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

这与VPC的“DNS主机名”特性有关。您可以启用或禁用它。进入VPC,在“操作”菜单中选择“编辑DNS主机名”,然后选择“是”。这样做之后,应该会显示EC2实例的公共DNS。

你不需要为你的实例分配公共ip地址。 可以使用NAT实例,也可以使用NAT网关

https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Scenario2.html https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-comparison.html < / p >

在这里,我将总结最常见的问题:

在创建自定义VPC时,如果需要将aws资源(如ec2实例)获取公网IP地址,以便与internet通信,则首先需要确保ec2实例与自定义VPC中的公网子网相关联。这意味着子网有一个与之关联的internet网关。此外,还需要确保与ec2实例关联的VPC的安全组中有允许入站流量通过端口的规则,例如ssh、http和https。但以下是一些常见的疏忽仍在发生:

1)确保VPC已启用DNS主机名

2)您必须确保连接到EC2实例的公共子网启用了“自动分配公共ip”标志

3)如果实例已经创建,那么您可能需要终止它,并为要填充的公共IP和公共DNS字段创建一个新实例。

我试图修复“没有公共DNS” 一旦EC2启动并运行,我无法添加一个公共DNS

这甚至是在按照上述步骤制作VPC或子网的mod之后

所以,在启动另一个实例之前,我必须对子网和vpc进行修改,然后再启动一个新实例。

新实例有一个公共DNS。这就是我的工作方式。

  1. 进入VPC
  2. 选择VPC
  3. 单击“操作”,选择“编辑DNS主机名”
  4. “DNS主机名”勾选“启用”
  5. 单击保存更改

首先,对于公共IP / DNS,你必须有一个正在运行的EC2服务(可以是Instance / Docker / Lightsail。对于任何服务,你都将有两个不同的ip (私人的,公共),一旦你主动选择Instance,安全选项卡下的安全组也是可用的。

步骤1:

你可以根据端口使用情况启用,比如如果你想使用HTTP托管一个网站&HTTPS端口

EC2->安全组->编辑入站规则->添加或移除需要的端口

例如80,443,22等和端口的流量来源(如果你想让端口对所有人开放,请选择任何地方,或者如果你想为所选的ip打开应用程序-手动输入IPV4/IPV6。

完成上述配置后,创建弹性IP并将其附加到正在运行的EC2实例。一旦你将IP附加到你的公共IP将是弹性IP实例

步骤2:

AWS还提供了一项名为Route53的服务。在这里,您可以创建托管区,并在创建后输入不带www的域名,您将获得托管区域的name Server值。

有关Route53 https://aws.amazon.com/route53/的更多信息

问题是删除了VPC中的DNS主机名。你可以像这样轻松地启用它:

    到控制台中你的实例,然后单击你的VPC IDenter image description here < / p >
  1. 在VPC中,选择“Edit DNS Host names”选项 Select Edit DNS Host names < / p >

  2. 将其设置为启用并保存更改。 enter image description here < / p >

  3. 现在,在您的EC2实例窗口中,您可以找到DNS: enter image description here < / p >

对于那些正在使用Terraform的人。

要启用DNS主机名,在VPC中像这样使用下面的行:

resource "aws_vpc" "app_vpc"
{
enable_dns_hostnames = true # Add this line


cidr_block = var.vpc_cidr
tags = { Name = "mostafa_vpc" }
}