我启动了一个新的
aws
实例。根据亚马逊控制台,我的私人 IP 是 ip-10-0-xx-xx
。每次执行 sudo 命令时,都会出现以下错误
sudo: unable to resolve host ip-10-0-xx-xx
如何纠正此错误?
此问题是由于您的 VPC 配置中未启用
enableDnsHostnames
导致的。
enableDnsHostnames
指示VPC中启动的实例是否获取DNS主机名。如果此属性为 true,则 VPC 中的实例将获取 DNS 主机名;否则,他们就不会。如果您希望实例获取 DNS 主机名,还必须将
属性设置为 true。enableDnsSupport
http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-dns.html#vpc-dns-updating
您应该在 VPC 上启用 DNS 主机名:http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-dns.html#vpc-dns-updating
如果由于某种原因,您无法启用它,您仍然可以使用
/etc/hosts
来解决,但这绝对不是推荐的解决方案
10.0.xx.xx ip-10-0-xx-xx
这对我有用:
将以下行添加到
/etc/hosts
127.0.0.1 ip-xxx-xx-x-xx
ip是你的私人IP地址
可以从命令行轻松修补,如下所示:
sudo sed -i /etc/hosts -e "s/^127.0.0.1 localhost$/127.0.0.1 localhost $(hostname)/"
并检查重新启动或停止然后启动 aws 实例是否会保留它。 万一丢失,可以在启动时轻松重新应用,并且可以添加到新虚拟机的任何配置中。
示例
之前:
ubuntu@ip-177-11-22-333:~$ sudo id
sudo: unable to resolve host ip-177-11-22-333
uid=0(root) gid=0(root) groups=0(root)
修复:
ubuntu@ip-177-11-22-333:~$ sudo sed -i /etc/hosts -e "s/^127.0.0.1 localhost$/127.0.0.1 localhost $(hostname)/"
sudo: unable to resolve host ip-177-11-22-333
之后:
ubuntu@ip-177-11-22-333:~$ sudo id
uid=0(root) gid=0(root) groups=0(root)
ubuntu@ip-177-11-22-333:~$
enableDnsHostnames
是一个先决条件。另一个是正确配置 VPC 的 DHCP 选项集。您遇到的问题是由于您的 search
中缺少 /etc/resolv.conf
行引起的;如果您正确设置 DHCP 选项设置的 domain-name
,它将在 DHCP 分配时放入其中。阅读链接的 AWS 文档。
两个选项:
为您的 VPC 启用 DNS 主机名,因此 VPC 内启动的所有实例都将解析主机
编辑 /etc/hosts 并添加以下行
127.0.0.1 localhost
123.0.0.1 ip-10-0-1-18 ## (Replace with the private ip)
您需要为 VPC 中启动的每个实例执行此操作。
即使在 VPC 中启用了 DSN,我最近也遇到了同样的问题。
我检查了 EC2 实例,发现我的存储使用率为 99%。所以我截断了日志文件并清理了。
之后,我重新启动它,一切正常。
将以下行添加到 /etc/hosts
127.0.0.1 localhost
127.0.0.1 ip-xxx-xx-x-xx
ip是你的私人IP地址
也请不要忘记在编辑这些内容后重新启动实例
我的问题是由无效的 DHCP 选项集(在 VPC 控制台中)引起的。您通常想要的默认值如下所示:
domain-name = ec2.internal
domain-name-servers = AmazonProvidedDNS
不知何故,我的
domain-name
变成了us-east-1.compute.internal
,这导致我每次运行sudo: unable to resolve host ip-10-0-xx-xx
时都会出现sudo
警告。改回上面的 DHCP 选项修复了它。
运行以下命令;
sudo su -
并以 root 身份工作。然后启动命令就可以工作了。
我也遇到过与@bhavesh-odedra 类似的案例。我的存储使用率为 100%,我将其扩展到 5Gb 以上,使用
sudo reboot
重新启动实例,之后我开始收到此错误。
我用
sudo df -h
检查了磁盘使用情况,发现我的Ubuntu系统不支持扩展存储。再次重新启动没有帮助。
我检查了此页面上的答案。 AWS VPC 配置中的
DNS hostname
是 Enabled
。然后我将私有IP添加到/etc/hosts
- 它也没有帮助。
一段时间后,我决定使用 AWS 控制台(不是
sudo reboot
)重新启动实例。我不知道 AWS 控制台是否通知我的系统新存储已可供使用,或者发生了其他情况,但通过 sudo df -h
,我确信我的新存储空间正在使用中。之后错误就消失了。
要启用 DnsSupport 属性,只需在终端中使用此命令
aws ec2 describe-vpc-attribute --vpc-id vpc-****** --attribute enableDnsSupport
确保将 * 替换为您的 VPC Id 了解更多信息 https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpc-attribute.html
就我而言,我的 EC2 卷完全已满。修改卷并向磁盘添加一些空间后,我的实例可能出现某种损坏。
阅读上面的选项后,我注意到enableDnsSupport对于我的VPC来说已经是正确的。所以我认为更改配置 /etc/hosts 听起来并不正确。
所以我中断了EC2并重新开始。无需任何配置即可运行。
请注意,中断与重置不同。行为不同。因此,如果您有一个停止服务器的窗口或者您的服务已经停止,那么您应该尝试一下。