一个和我一起工作的人给了我登录到他的EC2控制台的EC2凭证。不是我设的局。一些实例显示公共dns名称,而其他实例则显示空白的公共dns。我希望能够连接到具有空白公共DNS的实例。我一直无法弄清楚为什么这些显示为空白。
听起来像是在VPC中启动了实例,而在这样做时,Automatically assign a public IP address to your instances的复选框没有被选中。因此实例没有公共IP
Automatically assign a public IP address to your instances
您可以为该实例分配一个弹性IP,然后使用该IP登录。
只需启动另一个实例(如果它没有用处,也可以删除有问题的实例),并确保这次选中了“自动为您的实例分配公共IP地址”。如果不像路西法说的那样;为实例分配一个弹性IP (EIP),然后使用该IP登录。但是要小心,如果你运行的是免费的AWS层,一个EIP会让你花钱——这是另一个话题了。
实际上,在VPC中有一个叫做“DNS主机名”的设置。可修改EC2实例所在的VPC,将该选项修改为“是”。这样应该可以了。
我昨天遇到了这个问题,尝试了曼尼的上述答案,但没有奏效。但是,VPC设置做了适合我。
最终我添加了一个EIP,我用它来连接。
如果实例在VPC内,请确保“DNS解析”和“DNS主机名”均为“yes”。您可以在Aws控制台UI中完成此操作。HTH !
我也遇到过同样的问题,但我解决了。一起来看看这些步骤吧:
进入VPC控制台,选择您的VPC,单击“操作”菜单,选择“编辑DNS主机名”—选择“是”。这应该能解决问题。
这是解决这个问题的技巧,它不起作用:
提示—如果您的实例没有公共DNS名称,请在VPC控制台,选择VPC,在“概要”页签。如果“DNS解析”或“DNS主机名”中有一个为“否”,单击“编辑”,修改为“是”。
假设你已经这样做了,你仍然没有得到一个公共IP,然后在VPC管理屏幕转到有问题的子网,你可能会发现“自动分配公共IP”没有设置为yes。修改这个设置,我知道你不想在子网中创建一个新实例。据我所知,你不能在主机上修改这个,我试了又试,只是终止它。
最后你会得到你的公共dns。
在我的情况下,我从slayedbylucifer和其他指向相同的答案是有效的 即使设置为DNS hostname: yes,在< a href = " https://stackoverflow.com/a/38235022/4058484 " > my-pvc < / >上也没有分配公共IP(只有私有IP)。< / p >
DNS hostname: yes
它肯定是自动分配公网IP必须被设置为Enable 如果未选中,则默认设置为Use subnet setting (Disable)
Enable
Use subnet setting (Disable)
首先,这可能有两个原因:
要解决这个问题:
i)进入“AWS VPC控制台”,选择已创建的VPC。
ii)然后单击“操作”,然后启用DNS解析。
OR
这里你不能改变设置;因此,创建一个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的人,关键属性是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' }] } }
对我来说,问题是子网设置。
在验证VPC和子网设置后,我的EC2实例仍然没有公共DNS。经过一天的寻找,我终于找到了解决办法。
我必须创建一个新的弹性IP地址,然后将其关联到我的实例。
从EC2仪表板:
从侧栏转到弹性ip。
单击分配新地址,然后单击分配。
回到EC2仪表盘。去网络接口。
选择没有公共DNS的EC2实例。然后操作-关联地址。
“地址”字段,选择新的弹性IP地址。
关联私有IP地址字段,选择没有公共DNS的私有IP地址。
单击联系地址。
您的EC2实例现在应该有一个公共DNS。
这与VPC的“DNS主机名”特性有关。您可以启用或禁用它。进入VPC,在“操作”菜单中选择“编辑DNS主机名”,然后选择“是”。这样做之后,应该会显示EC2实例的公共DNS。
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。这就是我的工作方式。
首先,对于公共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中,选择“Edit DNS Host names”选项 < / p >
Edit DNS Host names
将其设置为启用并保存更改。 < / p >
要启用DNS主机名,在VPC中像这样使用下面的行:
VPC
resource "aws_vpc" "app_vpc" { enable_dns_hostnames = true # Add this line cidr_block = var.vpc_cidr tags = { Name = "mostafa_vpc" } }