会社のクラウドサービスでUbuntu 14.04を実行しています(私のインスタンスにはエラスティックIPがあります)。コマンドラインで実行しているインスタンスのIPアドレスを確認したいのですが、うまくいきませんでした。
root@ubuntu14-graphite:~# hostname
ubuntu14-graphite
root@ubuntu14-graphite:~# hostname -i
hostname: Name or service not known
理由がわかりません。
私はubuntu14-graphiteにpingを実行しようとしましたが、それは言った:
unknown Host ubuntu14-graphite.
それは私のホストが存在しないことを意味しますか?
別のサーバーがあります(クラウドインスタンスではなく物理サーバー)。このサーバーには、CentOS 6.7をインストールしました。ホスト名のIPを確認したところ、/etc/hosts
に特別なものは何もないにもかかわらず、IPは機能しました。
これが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
これは、「システム」(その用語を広く、一般的で、あいまいな意味で使用しています)は、名前ubuntu14-graphite
がホストとそのIPアドレスに対応していることを認識していないことを意味します。 (それがホストのnameであるという事実は、これを実現するのに十分ではありません。)これは、ほぼ間違いなく、 ubuntu14-graphite
ファイルに/etc/hosts
の行がない†、それがネーミングサービス(DNSやNISなど)にないこと。したがって、これを修正する方法は、ubuntu14-graphite
(およびそのIPアドレス)を/etc/hosts
に追加することです。 DNSやNIS(またはActiveDirectory?)などのより高度な(分散)ネーミングシステムを使用している場合、最終的な解決策は、ホストをそのサービスに追加することです。
_____________
†...そして、あなたのhostsファイルの投稿から、これが事実であることがわかります。
ホスト名に関連付ける必要のあるIPアドレスについては、いくつかの議論があります。ホストにとって「機能する」アドレスであることに誰もが同意します。つまり、ping A.B.C.D
などのコマンドは成功するはずです。ループバックアドレスの使用を推奨する人もいます。ループバックアドレスは常に127の形式です。.B.C.D;一般的な値は127.0.0.1と127.0.1.1です。他の人々は192.168のように見えるかもしれないLANアドレスの使用を勧めます.C.D (ただし、ほとんど何でもかまいません)—動的に割り当てられたアドレスをホストファイルに含めないでください(DNSでDHCPを使用している場合、動的に割り当てられたアドレスはDNSレコードに自動的に入力されます) )。 ifconfig
やhostname -I
などのコマンドを使用して、使用されているアドレスを確認します。
マシンのIPアドレスを確認する実際の方法は、ifconfig
コマンドを使用することです。
実際のクラウドの設定によっては、サーバーインスタンスがパブリックIPを認識せず、VLAN IPのみを認識している場合があります。これについて詳しくは、プロバイダーのドキュメントを参照する必要があります。
myhostname
エントリを/etc/nsswitch.conf
のhosts
サービスに追加します。
つまり、/etc/nsswitch.conf
の次の行を変更します。
hosts: files dns
これに:
hosts: files dns myhostname
通常、ホスト名は/etc/hosts
ファイルとdnsを使用して解決されますが、システムのホスト名はネームサービススイッチに指示することによって解決することもできます(この構成の変更により)。
これは、ローカルホスト名を解決できるシステム上の/etc/hosts
ファイルについて特別なことを何も表示しなかった理由を説明しています。
myhostname
フラグの詳細は here です。
私の意見では、ホスト名コマンド(net-toolsパッケージ)のバージョンに依存します。
参照: https://bugzilla.redhat.com/show_bug.cgi?id=319981
# hostname -V
net-tools 1.60
hostname 1.100 (2001-04-14)
# hostname -i
hostname: Name or service not known
$ hostname -V
hostname 3.18
hostname -i
-IPv6およびIPv4に関する情報を提供します