为什么执行“hostname -i”时我的 AWS EC2 实例会返回“未知主机”?

为什么执行“hostname -i”时我的 AWS EC2 实例会返回“未知主机”?

上周有人使用 AMI 类型 为我们创建了一个 AWS EC2 实例Amazon Linux 2 AMI 2.0.20190313 x86_64 HVM gp2。我们将其称为 Instance1。昨天我们发现我们的软件存在问题,可能是由该版本的 Linux 引起的,因此我们使用较旧的 AMI 类型创建了一个新 EC2 实例Amazon Linux AMI 2018.03.0.20190514 x86_64 HVM。我们使用与 Instance1 完全相同的实例类型 (m5.large)、VPC、子网、标签和安全组。

启动第二个实例(Instance2)后,我们的软件生成了 IP 地址错误。然后我们注意到命令hostname -i返回了hostname: Unknown host

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

在实例 1 上运行hostname -i返回了正确的 IP 地址。

我们在 AWS 控制台的“描述”选项卡中比较了这两个实例,没有发现任何差异。我们向创建实例 1 的人询问了这个问题,他只能建议检查是否eth0存在,并确保安全组是相同的(事实确实如此)。

有人知道为什么hostname -i返回的Unknown host是 IP 地址吗?

我们最终采取了一个解决方法:

Instance1 和 Instance2 上的文件/etc/hosts均包含:

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

我们编辑了 Instance2 上的文件以包含以下内容:

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

之后,hostname -i返回 IP 地址。但我们宁愿不必在/etc/hostsInstance2 上进行这种更改,因为我们不必在 Instance1 上进行这种更改。

相关内容