檢查主機名稱的 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 。因此,修復它的方法是將(及其 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

相關內容