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


13

我在公司的云服务上运行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

Answers:


15

这意味着“系统”(我在广义,笼统,模棱两可的意义上使用该术语)并不知道该名称ubuntu14-graphite 对应于您的主机及其IP地址。(事实上​​,这是您的主机还不足以实现这一目标。)这几乎可以肯定意味着ubuntu14-graphite 您的/etc/hosts文件†中没有一行,并且它不在您的命名服务中(例如DNS或NIS)。因此,解决该问题的方法是在中添加ubuntu14-graphite(及其IP地址)/etc/hosts。如果您使用的是更复杂的(分布式)命名系统,例如DNS或NIS(或ActiveDirectory?),则最终的解决方案是将主机添加到该服务。
______________
†...

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


感谢您的回答。我编辑了问题,因为我注意到与CentOS服务器有关的另一种情况,该服务器除了127.0.0.1 localhost外没有其他任何东西,但我仍然能够检查主机的IP。
一个

好吧,也许将CentOS服务器的名称和地址输入到DNS系统中(或正在使用的任何名称服务中)。
G-Man说'恢复莫妮卡'

在CentOS系统中,未安装bind和bind-utils。所以我真的很困惑。
一个

@TheOne Ubuntu的对待hostname不同的是RH基于systems..put 127.0.1.1 ubuntu14-graphite/etc/hosts的文件和check..note,它127.0.1.1不是127.0.0.1(你可以保护者反正只为本地主机,因为127.0.0.0/8是回送块,你可以使用任何地址虽然有些系统已预定义的限制地址)
heemayl

@heemayl因此,通过将127.0.1.1 ubuntu14-graphite放在/ etc / hosts上,然后检查IP我没有获得正确的IP。那没有道理吧?
一个


0

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

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

hosts:      files dns

对此:

hosts:      files dns myhostname

通常,使用/etc/hosts文件和dns 解析主机名的地方,也可以通过告诉名称服务交换机这样做来解析系统的主机名(因为此配置更改将这样做)。

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

有关该myhostname标志的更多信息在这里


0

我认为这取决于主机名命令的版本(net-tools软件包)。

请参阅:https//bugzilla.redhat.com/show_bug.cgi?id = 319981

  • “ openSuse Leap 42.3”的示例:
    # hostname -V
    net-tools 1.60
    hostname 1.100 (2001-04-14)

    # hostname -i
    hostname: Name or service not known
  • 在Lubuntu 17.10上
  $ hostname -V
  hostname 3.18

hostname -i -给我有关IPv6和IPv4的信息


那个bug报告是关于hostname -s,不是hostname -i。这与的版本无关hostname,而与给出的主机名是否hostname可解析有关。
史蒂芬·基特

-2

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

127.0.0.1    ubuntu   
127.0.1.1    ubuntu.ubuntu-domain    ubuntu

1
设置localhost IP /etc/hosts不会提供实际的IP地址。我也看不到您为什么还要看哪/etc/hosts.save一个是技术性的并且很不相关。
朱莉·佩勒捷
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.