Hostsファイル:複数の行に同じIPアドレスがあるのは間違っていますか?


28

しばらくの間、このようにホストファイルをフォーマットしていました。2行に同じIPがあることに注意してください。

e.f.g.h foo.mydevsite.com
e.f.g.h foo.myOtherDevSite.com

私は最近、エイリアスが1行で統合されることになっていることを読みました。

e.f.g.h foo.mydevsite.com foo.myOtherDevSite.com 

ただし、次のように特定のエイリアスを簡単にコメントアウトしたり、特定のエイリアスにコメントを追加したりすることはできないため、この方法は好きではありません。

  a.b.c.d foo.mydevsite.com          # myDevSite on box 1
# a.b.c.d foo.myOtherSite.com        # myOtherSite on box 1 
  a.b.c.d ubuntuBox                  

  e.f.g.h foo.myOtherSite.com        # myOtherSite testing environment

これまでのところ、これはうまく機能しています。これに問題はありますか?

回答:


28

これらの線に沿って何かをすることを議論するこのスレッドを見つけました。スレッドは、/etc/hostsファイルに複数の行が並んでいないことについてかなり頑固です。

抜粋-Re:/ etc / hosts:同じIPアドレスを持つ2行?

いいえ、それはしません。リゾルバーは最初の解像度で停止します。次のようなものを持っている:

   127.0.0.1 localhost.localdomain localhost
   127.0.0.1 somenode.somedom.com somenode

あなたが話していることはしません。しかし、持っている:

   127.0.0.1 somenode.somedom.com somenode
   127.0.0.1 localhost.localdomain localhost

あらゆる種類の混乱を引き起こします。転送を含む。

私は一般的にあなたがしようとしていることをしません。より多くの証拠が必要な場合は、manページでこれを行わないように指示されます

抜粋 man hosts

このマニュアルページでは、/ etc / hostsファイルの形式について説明しています。このファイルは、IPアドレスとホスト名をIPアドレスごとに1行ずつ関連付ける単純なテキストファイルです。各ホストには、次の情報を含む単一の行が存在する必要があります。

         IP_address canonical_hostname [aliases...]

あなたのホスト名がFQDNであり、それらが重複していない場合、これはすべて言われています。上記のスレッドで述べられているような重複がある場合は、問題の解決に遭遇する可能性があることに留意してください。


1
私はそのスレッドでいずれかの当事者が指摘した効果を観察しません。たとえば、127.0.0.1の複数の行はhostname(OPの反対)の出力に影響せず、すべてが正しく解決されます(回答者の反対)。
goldilocks

1
しかし、gethostbyaddr()彼らが提起することは重要です。+1
goldilocks

とても興味深い!ホストファイルが双方向で使用されていることに気付きませんでした(IPからホスト名を取得、ホスト名からIPを取得)。それは間違いなくいくつかの問題を引き起こします。たぶん、人間が読めるバージョンを取得し、ホストエイリアスを1行に連結して「修正」するホストファイルのビルドプロセスを調べる必要があります。非常に簡単なスクリプトである必要があります。
AlexMA

1
@AlexMA- /etc/hosts悲しみの原因になっている場合は、常にDNSをセットアップできます。私はこの正確な理由でBINDを実行しています。(1)b / cで集中管理するのが簡単であり、(2)頭痛の種がなく、そこから思い通りに解決できます。これを行うためのDNSMasqなどのより軽いオプションもあります。これらのシステムは単一のボックスでも使用できます!
slm

@slmこれは、実稼働環境にとって非常に良いオプションのように思えます。おそらく貴重な学習プロジェクトでもあります。
AlexMA

5

3番目の方法はうまく機能していると思います。これに問題はありますか?

私はいつもそれを少ししましたが、man gethostbyaddrそのシステムコールによると/etc/hostsIPアドレスを名前に関連付けるために使用される可能性があるため、潜在的な問題があります。はるかに一般的なケースは他の方法(名前からアドレスを取得する)ですが、何かおかしなことが起こった場合に注意してください。


私が疑ったように、それについての素晴らしいドキュメントがないようにしたかったのです。また、いくつかの非常に厳密なUNIXディストリビューションでさらに問題が発生する可能性があるかどうかもわかりませんでした。誰も別のスタンスでチャイムを鳴らしていない場合は、すぐに回答クレジットを与えます。
AlexMA

まあ、ポイントslmは考慮する価値があります。おそらくこのシステムは、結局このように使用されることを意図したものではなかったのでしょう。私はそれを続けます(nbはほとんど127.0.0.1でこれを使用するだけなので、仮想ホスト設定を変更せずにローカルに移植してテストできます)が、最後の段落に注意を追加しました。
goldilocks

実際、「潜在的な問題」を考慮してこれを編集しました
...-goldilocks

0

Apache 2.4は、私のUnixシステムでの起動を拒否しました。根本的な原因は、/ etc / hostsの行の重複です。重複した行を削除した後、Webサーバーを起動できました。


4
これは有用な情報ですが、おそらくこのサイトのガイドラインに従って答えではなくコメントである必要があります。
AlexMA
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.