为什么“主机名-i”返回“未知主机”?

为什么“主机名-i”返回“未知主机”?

我们使用 AMI type 创建了一个 AWS EC2 实例Amazon Linux AMI 2018.03.0.20190514 x86_64 HVM

启动实例后,我们的软件打印出 IP 地址错误。当我们尝试运行该命令时hostname -i,它返回了hostname: Unknown host

hostname命令本身返回正确的主机名,并且该ifconfig命令显示eth0具有正确的 IP 地址。

我们的/etc/hosts文件包含:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost6 localhost6.localdomain6

我们最终将其更改为包含:

<ip address>   localhost <hostname>
::1         localhost6 localhost6.localdomain6

之后hostname -i返回IP地址。但我们宁愿不必对 进行更改/etc/hosts,因为我们查看了另一个团队的 EC2 实例运行完全相同的 AMI 类型,并且他们的/etc/hosts文件包含:

127.0.0.1   localhost localhost.localdomain

在他们的实例上运行hostname -i会返回正确的 IP 地址,而且看起来他们不必编辑/etc/hosts文件。

为什么会hostname -i返回Unknown host我们的实例?

答案1

hostname -i使用 DNS 解析来获取您的 IP。如果您收到该错误,则意味着您的计算机的主机名配置不正确。默认情况下,您的计算机从 VPC 的 DHCP 服务获取主机名及其私有 IP 地址。在 Amazon Linux 中,如果您想恢复为默认设置,请确保以下各项:

  1. 您的/etc/sysconfig/network外观必须如下所示(这可能是您的问题所在):
NETWORKING=yes
HOSTNAME=localhost.localdomain
NOZEROCONF=yes
  1. 你的/etc/hosts样子一定是这样的:
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost6 localhost6.localdomain6

确保重新启动服务器以应用这些更改。如果您使用自定义主机名,那么您必须为您的实例设置静态主机名,您可以按如下方式执行此操作(假设您的域是“example.com”并且该计算机的主机是“server”:

  1. 你的/etc/sysconfig/network样子一定是这样的:
NETWORKING=yes
HOSTNAME=server.example.com
NOZEROCONF=yes
  1. 你的/etc/hosts样子一定是这样的:
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost6 localhost6.localdomain6
<instance-private-ip>   server server.example.com

确保重新启动您的服务器,当您运行该命令时hostname,它应该打印出来server.example.com,并且您应该在运行该命令时获得您的私有 IP hostname -i

有关 DHCP 及其在 VPC 中工作原理的更多信息,请参阅本文档

相关内容