检查主机名的 IP 时出现错误“主机名:名称或服务未知”

检查主机名的 IP 时出现错误“主机名:名称或服务未知”

我在公司的云服务上运行 Ubuntu 14.04(我的实例具有弹性 IP)。我想通过命令行查看我正在运行的实例的 IP 地址,但它不起作用。

root@ubuntu14-graphite:~# hostname
ubuntu14-graphite
root@ubuntu14-graphite:~# hostname -i
hostname: Name or service not known

我不明白为什么。 

我尝试 ping 到 ubuntu14-graphite 但它说:

unknown host ubuntu14-graphite.

这是否意味着我的主机根本不存在?

我有另一台服务器(不是云实例,而是物理服务器)。在此服务器中我安装了 CentOS 6.7。我检查了主机名的 IP,它可以工作,尽管/etc/hosts.

这是输出cat /etc/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

这意味着“系统”(我在广义、一般、模糊的意义上使用该术语)不知道该名称ubuntu14-graphite 对应于您的主机及其 IP 地址。 (事实上​​这是你的主人的姓名不足以实现这一点。)这几乎肯定意味着您的文件ubuntu14-graphite 中没有行,并且它不在您的命名服务(例如 DNS 或 NIS)中。因此,修复它的方法是将(及其 IP 地址)添加到您的.如果您使用的是更复杂的(分布式)命名系统,例如 DNS 或 NIS(或者可能是 ActiveDirectory?),最终的解决方案是将您的主机添加到该服务中。 _____________ † ...我从您的主机文件帖子中看到情况确实如此。/etc/hostsubuntu14-graphite/etc/hosts

对于应该将哪个 IP 地址与主机名关联的问题存在一些争论。每个人都同意它应该是一个对您的主机“有效”的地址;即,类似的命令应该成功。有些人建议使用环回地址。环回地址始终采用 127 形式ping A.B.C.D.BCD;常见值为 127.0.0.1 和 127.0.1.1。其他人建议使用 LAN 地址,可能看起来像 192.168。光盘(但它几乎可以是任何东西) - 但您不应该将动态分配的地址放入您的主机文件中(并且,如果您将 DHCP 与 DNS 结合使用,则动态分配的地址应自动输入到您的 DNS 记录中)。使用ifconfig和等命令hostname -I 查看正在使用的地址。

答案2

检查机器 IP 地址的实际方法是使用命令ifconfig

请注意,根据实际的云设置,服务器实例可能不知道公共 IP,而只知道 VLAN IP。有关详细信息,您需要参阅提供商的文档。

答案3

myhostname条目添加到hosts中的服务中/etc/nsswitch.conf

换句话说,更改以下行/etc/nsswitch.conf

hosts:      files dns

对此:

hosts:      files dns myhostname

通常主机名是使用/etc/hosts文件和 dns 解析的,系统的主机名也可以通过告诉名称服务交换机来解析(正如此配置更改所做的那样)。

这可以解释为什么您没有看到/etc/hosts系统上可以解析本地主机名的文件的任何特殊内容。

有关该旗帜的更多信息myhostname这里

答案4

转到 etc/hosts.save 检查您的主机名。然后编辑/etc/hosts 以在其中写入您的主机名和 中的主机名hosts.save。还要检查 IP 地址。例子:

127.0.0.1    ubuntu   
127.0.1.1    ubuntu.ubuntu-domain    ubuntu

相关内容