web-dev-qa-db-ja.com

/ etc / hostsでのホスト名とIPアドレスのマッピング

私の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に解決されているはずです。誰かがこれを私に説明できますか?

14
wuchang

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番目のエントリが最初のエントリを上書きしている可能性があります。

30
DopeGhoti

DopeGhotiの回答に加えて、解決策をテストするために、/etc/hosts優先、あなたはgetent hosts <some_hostname>コマンド。

9
HBruijn