与我一起工作的一个人给了我 EC2 凭据以登录他的 EC2 控制台。我不是设置它的人。一些实例显示一个公共 dns 名称,而另一些实例则有一个空白的公共 DNS。我希望能够连接到具有空白公共 DNS 的实例。我一直无法弄清楚为什么这些显示为空白。
20 回答
我有同样的问题并解决了它。查看分步说明:
- 转到 console.aws.amazon.com
- 转到服务-> VPC
- 打开您的 VPC
- 选择连接到 EC2的 VPC ,然后
- 选择 Actions => Edit DNS Hostnames ---> Change DNS hostnames: to YES
VPC 中实际上有一个名为“DNS 主机名”的设置。您可以修改 EC2 实例所在的 VPC,并将其更改为“是”。这应该够了吧。
我昨天遇到了这个问题,并尝试了 Manny 的上述答案,但没有奏效。但是,VPC 设置确实对我有用。
最终我添加了一个 EIP 并使用它来连接。
听起来该实例是在 VPC 中启动的,并且在这样做时,Automatically assign a public IP address to your instances
未选中复选框。因此该实例没有公共 IP
您可以为该实例分配一个弹性 IP,然后使用该 IP 登录。
就我而言,我发现slayedbylucifer和其他指向相同的人的答案是有效的。
即使设置了,在my-pvcDNS hostname: yes
上也没有分配公共 IP (只有私有 IP)。
肯定是要设置自动分配公共IP
Enable
。
如果未选中,则默认设置为Use subnet setting (Disable)
这是为解决不起作用的问题而提供的提示:
提示 - 如果您的实例没有公有 DNS 名称,请打开 VPC 控制台,选择 VPC,然后检查摘要选项卡。如果 DNS 解析或 DNS 主机名不是,请单击编辑并将值更改为是。
假设您已完成此操作,但仍未获得公共 IP,然后转到 VPC 管理屏幕中的相关子网,您可能会发现“自动分配公共 IP”未设置为“是”。然后修改该设置,我知道您不想在这里,在该子网中创建一个新实例。据我所知,您无法在主机上修改它,我尝试过,只是终止它。
- 转到 AWS 控制台。
- 转到服务并选择 VPC
- 点击vpc。
- 选择实例并单击操作。
- 选择编辑 DNS 主机名单击是。
最后,您将获得您的公共 dns。
对我来说,问题出在子网设置中。
- 打开https://console.aws.amazon.com/vpc
- 转到左侧菜单中的子网
- 选择您的子网
- 修改自动分配 IP 设置以启用
它与称为“DNS 主机名”的 VPC 功能有关。您可以启用或禁用它。转到 VPC,在 Actions 菜单下选择“Edit DNS Hostnames”项,然后选择“Yes”。完成此操作后,应显示 EC2 实例的公共 DNS。
在这里,我将总结最常见的问题:
在创建自定义 VPC 时,如果您希望 ec2 实例等 aws 资源获取公有 IP 地址以便 Internet 可以与其通信,那么您首先必须确保 ec2 实例与自定义 VPC 的公有子网关联。这意味着子网有一个与之关联的互联网网关。此外,您需要确保与 ec2 实例关联的 VPC 的安全组具有允许入站流量到所需端口的规则,例如 ssh、http 和 https。但是这里仍然存在一些常见的疏忽:
1) 您必须确保为 VPC 启用 DNS 主机名
2) 您必须确保链接到 EC2 实例的公有子网启用了“自动分配公有 ip”标志
3) 如果实例已经创建,那么您可能需要终止它并创建一个新实例以填充公共 IP 和公共 DNS 字段。
只需启动另一个实例(如果它没有用,也删除有问题的实例)并确保这次您选中“自动为您的实例分配公共 IP 地址”。如果不是,那么就像 slayedbylucifer 所建议的那样;为实例分配弹性 IP (EIP),然后使用该 IP 登录。不过要小心,如果您运行免费的 AWS 层,EIP 将花费您的钱——这完全是“另一个话题”。
验证 VPC 和子网设置后,我的 EC2 实例仍然没有公共 DNS。经过一天的寻找解决方案,我终于想通了。
我必须创建一个新的弹性 IP 地址,然后将其关联到我的实例。
从 EC2 仪表板:
从侧边栏转到弹性 IP 。
单击分配新地址,然后单击分配。
返回 EC2 仪表板。转到网络接口。
选择没有公有 DNS 的 EC2 实例。然后是 Actions - Associate Address。
地址字段,选择新的弹性 IP 地址。
关联到私有 IP 地址字段,选择没有公共 DNS 的私有 IP 地址。
单击关联地址。
您的 EC2 实例现在应该有一个公共 DNS。
首先,这可能有两个原因:
- 您已创建自己的 VPC,但忘记启用公共 DNS。
要解决这个问题:
i) 转到 AWS VPC 控制台并选择您创建的 VPC。
ii) 然后单击操作,然后启用 DNS 解析。
OR
- 您尚未在 EC2 配置中启用公共 ip-assign 选项。
在这里您不能更改设置;所以创建一个 ami 图像,然后从中重新创建实例。
- 转到 VPC
- 选择您的 VPC
- 单击操作并选择编辑 DNS 主机名
- 勾选启用 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'
}]
}
}
也可以使用 AWS CLI 更改 DNS 主机名设置:
aws ec2 modify-vpc-attribute --vpc-id $vpc_id --enable-dns-hostnames '{"Value": true}'
(其中 $vpc_id 是您的实例附加到的 VPC 的 ID。)
一旦 VPC 更新,实例将获得公共 DNS。
转到 VPC 控制台,选择您的 VPC,然后单击操作菜单,选择编辑 DNS 主机名 - 选择是。那应该解决它。
如果实例在 VPC 中,请确保“DNS 解析”和“DNS 主机名”都设置为“是”。您可以在 Aws 控制台 UI 中执行此操作。!
EC2 启动并运行后,我尝试修复“无公共 DNS”,但无法添加公共 DNS
即使在按照上述步骤对 VPC 或子网进行修改之后也是如此
所以,在启动另一个实例之前,我必须对子网和 vpc 进行修改,然后启动一个新实例。
新实例有一个公共 DNS。这就是它对我有用的方式。
对于公共 IP / DNS 首先,您必须有一个正在运行的EC2 服务(可以是 Instance / Docker / Lightsail。对于任何服务,您将有两个不同的 IP(私有和公共)以及安全选项卡下可用的安全组一旦您选择了主动实例。
第 1 步:
您可以根据端口使用情况启用,例如如果您想使用 HTTP 和 HTTPS 端口托管网站
EC2->安全组->编辑入站规则->添加或删除所需端口。
像 80,443,22 等和端口的流量源(如果您想让端口对所有选择开放,或者如果您想打开所选 IP 的应用程序 - 手动输入 IPV4/IPV6。
完成上述配置后,创建弹性 IP并将其附加到正在运行的 EC2 实例。将 IP 附加到实例后,您的公共 IP 将成为弹性 IP
第 2 步:
AWS 为您提供了一项名为Route53的服务。在这里您可以创建托管区域并在创建后输入不带www的域名,您将获得托管区域的名称服务器值。
有关Route53的更多信息 https://aws.amazon.com/route53/
您不必为您的实例分配公共 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