97

Mac OSX Lion にアップグレードした後、名前解決のために最初に /etc/hosts が検索されなくなっていることがわかりました。これにより、次のような副作用が発生します。

  1. /etc/hosts のエントリの解決が非常に遅い
  2. 127.0.0.1 www.google.com など、既存のドメインを上書きすることはできません。
  3. DHCP から検索ドメイン エントリを取得した場合、.lan としましょう。おかしな人がローカル DNS で localhost.lan を別の値に設定し、ローカル DNS で 127.0.0.1 に設定した場合、ローカルホストに到達できなくなります。

この動作は意図したものですか? 意味はありますか?そして最も重要なのは、どうすれば以前の動作に戻ることができるかということです。

4

10 に答える 10

78

.local TLD は一部のマルチキャスト DNS 機能 (Bonjour によって使用される) 用に予約されているため、Lion が異なる方法で .local TLD を処理することは問題だと思います。この問題を解決するために私が見つけた唯一の方法は、開発ホストに別の TLD (例: .dev) を使用することです。それは私にとってはうまくいきます、それが他の人に役立つことを願っています!

于 2011-07-28T06:32:01.877 に答える
51

hosts ファイル内のドメインのオーバーライドに関して、状況によっては、Lion が IPv4 ネットワーク経由でドメインに到達できないことを感知すると、ドメインの IPv6 アドレスを照会することがわかりました。

広告ドメインを127.0.0.1. Wireshark を起動すると、IPv4クエリ (IPv4)AAAAに続く (IPv6 DNS レコード) クエリに気付きました。A広告サーバーには確かに IPv6 アドレスがあり、コンテンツを提供することができました。

これに対する解決策は、

::1 mydomain.com

毎エントリー

127.0.0.1 mydomain.com

hostsファイルのエントリ。

興味深いことに、ローカル Web サーバーが実行されていて127.0.0.1:80、ブラウザーが Web サーバーからの応答 (エラーまたはその他) を受信した場合、AAAAクエリは発行されません。これは、TCP 接続が少なくとも可能であったことに満足しているように見えるためです。


これに関連して、hosts ファイルを頻繁に使用する場合 (広告ブロック、ローカル Web 開発など)、独自のローカル DNS リゾルバーの実行を検討することをお勧めします。リクエストごとに読み取る必要があるため、かなりのディスク/CPU ヒットが発生/etc/hostsするため、そのファイルを非常に軽量に保つことが最善の方法です。

ローカルなどで何かを実行する利点の 1 つはdnsmasq(大幅なパフォーマンスの向上に加えて)、トップレベル ドメイン全体をローカル マシンにリダイレクトできることです。これにより、ローカルで解決したいすべてのドメインを個別に入力することなく、開発用に *.dev 名前空間全体を使用できます (たとえば)。/etc/hosts

于 2011-08-09T06:56:58.617 に答える
17

問題は、/etc/hosts ファイルをシンボリック リンクしたことです。/etc/hosts がプレーン ファイルの場合、すべて問題ありません。

于 2011-07-27T13:07:19.620 に答える
14

Update(2):OSX10.10.5は。を返しmDNSResponderます。

更新:OSX 10.10 Yosemiteは、mDNSResponderを「discoveryd」に置き換えました。アップグレードしていないので、DNSルックアップとで検出された動作がわかりません/etc/hosts

LionのシステムDNSリゾルバーがmDNSResponderプロセスです。

「しかし、mDNSResponderはマルチキャストDNSレスポンダーです」と考えているかもしれません。あなたが正しい; それが本来の目的であり、それでもこの機能を果たします。ただし、新しいMacOSバージョンでは、標準のホストルックアップも実行します。

/etc/hostsLionでは、少なくとも常にではなく、変更されたときに自動的に再読み取りされるようには見えません。強制終了mDNSResponder(および自動的に再起動できるようにする)すると、問題が解決するようです。

sudo killall mDNSResponder

トリックを行う必要があります。

以下は後世のための私の最初の答えです。それでも問題になる場合があると思います。

/etc/hostsファイルがUNIXスタイルのテキストファイルであり、crではなく改行が末尾になっている ことを確認してください。

TextWranglerまたはUNIXテキストエディタで編集すると、ファイルが保持されます。

ファイルがすでに混乱している場合は、これを試して修正してください

tr '\015' '\012' < /etc/hosts > /tmp/hosts.$$
mv /etc/hosts /etc/hosts.bad
mv /tmp/hosts.$$ /etc/hosts
# fix up permissions while we are at it
chown root:wheel /etc/hosts
chmod 644 /etc/hosts

この修正のクレジット:

http://techpatio.com/2011/guides-how-to/fixed-mac-osx-lion-etc-hosts-bugs-dns

于 2012-02-13T19:28:42.380 に答える
4

私はしばらくの間この問題を抱えていました。私は開発者のチームで働いていたので、.dev や .localhost ではなく .local を実際に使用する必要が生じたので、この記事が非常に役立つことがわかりました。

iTand.me - Lion のローカル ドメインなどのホスト..

要約すれば;

しかし、.local を使用する必要がある場合、私が見つけた最も洗練されたソリューションは dscl ユーティリティです。それを使用することは非常に簡単です。mydev.local という名前のホストを追加して localhost を指すようにするには、次のようにします。

sudo dscl localhost -create /Local/Default/Hosts/mydev.local IPAddress 127.0.0.1

現在定義されているすべてのホストとその IP を表示するには

sudo dscl localhost -list /Local/Default/Hosts IPAddress

ホストを削除するには:

sudo dscl localhost -delete /Local/Default/Hosts/mydev.local

全体的に、かなり簡単で、うまく機能します。代わりに /etc/hosts を編集できるようにしたいのですが、これは、すべての .local サーバーの名前を変更するよりも優れた方法です。

于 2012-02-16T11:16:39.193 に答える
3

Snow LeopardからLionに移行する前は/etc/hosts、次のようなアプリ固有のエントリがいくつかありました。

127.0.0.1 foo.bar.local

更新後、ローカルアプリの読み込みが非常に遅くなりました。リクエストがログファイルに表示される前に遅延が発生し、遅延が発生すると、アプリ自体が通常どおり高速であることに気付きました。

これで、次のように、アプリごとに2行になります。

127.0.0.1 foo.bar.local
::1       foo.bar.local

...そしてすべてが再び速いです。

どうやらこれはIPv6アドレスを追加しますか?よくわかりませんが、うまくいきます。

于 2012-05-31T15:30:35.613 に答える
3

私の状況も同様でしたが、正確に 5 秒の遅延は、'.local' で終わる URL でのみ発生しました。「.dev」で終わるサイトを表示すると、遅延はありませんでした。

私のオフィスの他の開発者の何人かはこの問題を抱えていましたが、何人かはそうではありませんでした。簡単な修正を望んでいましたが、他の依存関係のためにサイトの名前を「.local」に変更したくありませんでした。

ターミナルで次のコマンドを実行し、出力をオフィスの他の数人のユーザーと比較しました。

scutil --dns

このセクションが唯一の違いでした:

resolver #2
  domain   : 00000000.members.btmm.icloud.com
  options  : pdns
  timeout  : 5
  order    : 150000

私の Mac は私の iCloud アカウントにリンクされていて、Back To My Mac が有効になっていました。Back To My Mac を無効にすると、追加のリゾルバーがなくなり、5 秒の遅延がなくなりました。

于 2013-02-14T01:52:57.700 に答える
1

うわー、なんて悪夢だ。私はこのテーマに関するすべてを完全に読みましたが、これまでに提案されたものはすべて、私が経験していたことに非常に近いものでしたが、解決策はどれもうまくいきませんでした.

そして、その理由がわかりました。

他の人とは異なり、ローカル ドメインの設定に /etc/hosts を使用していませんでした。私の /etc/hosts ファイルはストックされており、ループバック インターフェイスとブロードキャスト ホストに必要なエントリのみが含まれていました。さらに、私は emacs を使用してコマンド ラインからしか編集しないタイプの人間なので、正しくエンコードされた UNIX ファイルでした。そして、ありがたいことに、問題を回避するために DNSmasq のような独自の DNS サーバーを実行する必要はありませんでした。

(明確にするために、この問題に私を導いた症状は、emacs が起動するのに約 10 秒かかるということでした。これは、wifi を使用している場合のみでした。wifi をオフにすると、予想どおり、emacs はすぐに起動します。)

私の解決策:私のラップトップには「ターミネーター」という名前があります。(はい、その光沢のあるアルミニウムの外装は、アーノルド・シュワルツェネッガーのキャラクターを思い起こさせました。) マシン自体の名前のエントリを /etc/hosts に追加するだけで済みました。

127.0.0.1   terminator
::1         terminator

ターミナルで簡単なコマンドを実行して、ホストの名前を見つけました。

hostname

...出力で戻ってきました:「ターミネーター」。/etc/hosts をこれら 2 つのエントリを含むように変更した後、emacs はラップトップの名前をすばやく解決できるようになりました。

これが誰かに役立つことを願っています。

于 2012-03-04T18:19:59.937 に答える
0

OSXLionをWeb開発ボックスとして使用すると速度の問題が発生しました...提案の組み合わせを使用して、ipv6ネットワークを無効にし、ipv6をlocalhost6にルーティングしました...物事はかなりスピードアップしました...

sudo networksetup -setv6off Ethernet

/ etc /hosts..。

127.0.0.1    localhost
127.0.0.1    dev.aliasdomain.com
... 
::1          localhost6 
于 2012-07-27T18:29:14.423 に答える
0

いくつかのバグ修正があったと思います。言及されている多くの問題を見てきましたが、現在はどれも当てはまらないようです (たとえば、複数のエイリアスを 1 行に配置しても問題なく動作するようになりました)。

とにかく、Lion では、Apple はすべての DNS ルックアップを処理する mDNSResponder に大幅な変更を加え、(少なくとも Lion では) /etc/hosts キャッシュも処理するようです。私にとって、前方参照も機能するようになりました。ただし、逆引き (例: google.com の代わりに 1.2.3.4 を検索) は機能しません。

苦労の末、mDNSResponder はこのルックアップを 4.3.2.1.in-addr.arpa に変換し、名前のルックアップを行っているようです。これは DNS が好んで動作する方法かもしれませんが、/etc/hosts ではまったく機能しません。

もちろん、各ホストに 4.3.2.1.in-addr.arpa のエイリアスを追加しない限り、ここで 4.3.2.1 は、見慣れた順序とは逆の IP アドレスです。これですべてが解決します。/etc/hosts エントリの例を次に示します。

1.2.3.4 foo foo.example.com alias.example.com 4.3.2.1.in-addr.arpa

于 2013-03-06T00:55:16.907 に答える