10

この投稿と同様にローカル開発環境をセットアップすると、すべてが正常に機能していましたが、最近、オフラインのときにローカル開発ドメインにアクセスできません。インターネットに接続しているときは、正常に動作します。Yosemite でのリゾルバーの使用方法で何かが変わったのではないかと思っています。オフラインの場合、リゾルバー ルールが無視されるようです。

dnsmasq.conf:

address=/.dev/127.0.0.1
listen-address=127.0.0.1

/etc/リゾルバー/dev

 nameserver 127.0.0.1

オンライン時:

ping -c 1 mydomain.dev
PING mydomain.dev (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.038 ms

--- mydomain.dev ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.038/0.038/0.038/0.000 ms

scutil --dns
resolver #1
search domain[0] : nomadix.com
nameserver[0] : 203.124.230.12
nameserver[1] : 202.54.157.36
if_index : 4 (en0)
flags    : Request A records
reach    : Reachable

resolver #2
domain   : dev
nameserver[0] : 127.0.0.1
flags    : Request A records, Request AAAA records
reach    : Reachable,Local Address

オフライン時:

ping -c 1 mydomain.dev
ping: cannot resolve mydomain.dev: Unknown host

scutil --dns
No DNS configuration available
4

3 に答える 3

2

OSX Yosemite + リゾルバー + dnsmasq オフライン === 解決済み !!

オフラインになると、コンピューターのすべてのインターフェイス(ただし 127.0.0.1 ) がダウンします。

したがって、DNS 解決が必要な場合は、DNS サーバーが 127.0.0.1 をリッスンする必要があります。私の場合、システム管理者でなくても機能するので、選択したのは dnsmasqです

これらの簡単な手順に従って、私はそれを機能させました:

1) brew install dnsmasq

2) cp /usr/local/opt/dnsmasq/dnsmasq.conf.example /usr/local/etc/dnsmasq.conf

私のように /usr/local/opt に正しくインストールされていない場合は、brew インストールのデバッグ行を次のように読み取ることができるはずです。

make install PREFIX=/usr/local/Cellar/dnsmasq/2.72

この場合、次のコマンドを実行します。

ln -s /usr/local/Cellar/dnsmasq/2.72 /usr/local/opt/dnsmasq

その後、ステップ2に戻ります

3) vi /usr/local/etc/dnsmasq.conf

たとえば、次のようにドメインを追加します。

address=/foo.dev/192.168.56.101

その場合、 foo.dev で終わるすべての URL ( http://www.foo.devhttp://foo.devhttp://what.ever.you.want.foo.devなど... ) は 192.168.56.101 として解決されます (これは Virtualbox を使用している IP の種類であり、192.168.56.*)

4) sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist

5)リゾルバーに入れる前に試してください

nslookup foo.dev 127.0.0.1

これを期待してください:

Server:  127.0.0.1
Address:     127.0.0.1#53
Name:    foo.dev
Address: 192.168.56.101

6) mkdir -p /etc/リゾルバー

vi /etc/resolver/dev

次の 2 行を追加します。

nameserver 127.0.0.1
search_order 1

7) foo.dev に ping を実行するか、ブラウザのアドレス バーにhttp://foo.devまたはhttp://so.cool.foo.devを入力してください。

8)幸せになろう!! もう一度オフラインで作業できます!!!!

于 2015-11-07T12:32:38.297 に答える
0

答えを期待して、この質問を何ヶ月もチェックしてきました。これは、10.10.4 がドロップされたときに役立つと思います

AppleはdiscoveredをmDNSresponderに置き換えています(以前のように)

于 2015-05-27T05:54:54.207 に答える
-4

問題は、オフラインのときに、ルート ドメイン '.' のリゾルバを指定する必要があることです: www.google.com を検索すると、"." があります。(ルート ドメイン) は www.google.com のように末尾に自動的に追加されます。

したがって、あなたがしなければならないことは次のとおりです。

すべてのネットワーク インターフェイス DNS サーバーを 127.0.0.1 に設定します。

networksetup -setdnsservers Ethernet 127.0.0.1

networksetup -setdnsservers Wi-Fi 127.0.0.1

...

ファイル /etc/resolver/whatever を作成します。

nameserver 127.0.0.1
domain .

詳細については、この質問を参照してください

于 2015-02-23T10:55:19.900 に答える