我在 amazon 上有一台服务器,通常运行良好;在本周末增加实例大小后,然后将其减小回正常大小,每次在 下运行命令时,我都会收到奇怪的错误sudo
。这是一个例子:
sudo ps -ef
sudo: unable to resolve host domU-##-##-##-##-##-##
其中 # 是数字。需要注意的是然后命令就会按预期执行。我认为我的 hosts 文件中可能存在一些奇怪的东西,所以我看了一下:
127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
虽然我不太清楚,但这似乎很正常。有人能解释一下这个重复的错误以及如何修复它吗?
答案1
确保您的主机名位于 /etc/hostname 中。要查看其中现在的内容,您可以运行 hostname -f 或 cat /etc/hostname。
当您移动 EC2 实例时,您会丢失主机名,因此它不再与您安装 Ubuntu 时的主机名匹配。
答案2
看来您没有使用正确的 Amazon DNS。
如果您的 EC2 实例位于 VPC 中172.31.0.0
,则应使用的 DNS 是172.31.0.2
。因此,您必须在最后一个数字上“加二”。
只有您的 VPC 的 DNS 才会响应您的本地主机名ip-XXX-XXX-XXX-XXX
。
来自文档:
字符串 AmazonProvidedDNS 映射到在 VPC 网络范围“加二”底部的保留 IP 地址上运行的 DNS 服务器。例如,10.0.0.0/16 网络上的 DNS 服务器位于 10.0.0.2。
http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_DHCP_Options.html#AmazonDNS
答案3
当我将设置从一个可用区复制到另一个可用区时,我遇到了这个问题。我的 VPC 的 DHCP 选项集指向 us-west-1,但我的新 VPC 位于 us-west-2。因此,当机器启动时,设置机器的 EC2 脚本会将其放入我的 resolv.conf 文件中
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 10.0.0.2
search us-west-1.compute.internal
在创建一个新的 DHCP 选项集(domain=us-west-2.compute.internal)并将其应用于我的 VPC 后,一旦我重新启动 EC2 实例,resolve.conf 文件就会如下所示
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 10.0.0.2
search us-west-2.compute.internal
(请注意第二个块中的 us-west-2 与第一个块中的 us-west-1 相对),我不再收到“无法解析主机”错误。