私のLinuxマシンでは、hostname
を実行するとmongodb
が表示されますが、Host mongodb
を実行すると次のようになります。
mongodb@mongodb:/var/hadoop/hadoop-1.2.1/bin$ Host mongodb
Host mongodb not found: 2(SERVFAIL)
私の/etc/hosts
ファイル:
192.168.10.10 mongodb
192.168.10.10 localhost
127.0.0.1 localhost
#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
私の最初の質問は:/etc/hosts
はIPからホスト名にマッピングしているので、このマシンがホスト名mongodb
をIP 192.168.10.10に解決できないのはなぜですか?代わりに、Host localhost
を実行すると、解決して次のように表示されます。
localhost has address 127.0.0.1
私の別の質問:/etc/hosts
ファイルによると、ホスト名localhost
はループバックIPアドレス127.0.0.1ではなく192.168.10.10に解決されているはずです。誰かがこれを私に説明できますか?
Host
(およびnslookup
)ユーティリティは、DNSサーバーに明示的に照会し、デフォルトのシステム構成では/etc/hosts
ファイルを参照しません。そのアドレスをtraceroute
またはping
にすると、正しく解決されることがわかります。
not 127.0.0.1以外にマップするようにlocalhost
を変更したい場合、これは多くのことに奇妙で微妙な影響を与える可能性があります。 Ithink/etc/hosts
は、記述された順序で解析され、次のようになるため、
192.168.10.10 localhost
127.0.0.1 localhost
..2番目のエントリが最初のエントリを上書きしている可能性があります。
DopeGhotiの回答に加えて、解決策をテストするために、/etc/hosts
優先、あなたはgetent hosts <some_hostname>
コマンド。