以下のアップデートをご覧ください!
また、ローカルマシンでDnsmasqを使用することも楽しんでいますが、この問題もありました。解決策は次のとおりです。
からman 5 resolver
:
The configuration for a particular client may be read from a file
having the format described in this man page. These are at present
located by the system in the /etc/resolv.conf file and in the files
found in the /etc/resolver directory.
/etc/resolver/
デフォルトでは存在しません。自分で作成する必要があります。
また、manページから:
domain
Domain name associated with this resolver configuration. This
option is normally not required by the Mac OS X DNS search system
when the resolver configuration is read from a file in the
/etc/resolver directory. In that case the file name is used as the
domain name.
したがって、トップレベルドメインのすべてのDNSクエリをdev
ローカルネームサーバーにルーティングする場合は、次のようにします。
# mkdir /etc/resolver
# echo 'nameserver 127.0.0.1' > /etc/resolver/dev
configd
のファイルは変更されないため/etc/resolver/
、この設定はネットワークの変更および再起動後も維持されます。
2012年7月17日更新
残念ながら、OS X Lionの時点でscutil
--dns
は、アクティブなインターフェイスがない場合、トップリゾルバー(で示されている)は消えます。
# scutil --dns # Online
DNS configuration
resolver #1
nameserver[0] : 127.0.0.1
...
resolver #8
domain : dev
nameserver[0] : 127.0.0.1
# scutil --dns # Offline
DNS configuration
resolver #1
...
resolver #8
domain : dev
nameserver[0] : 127.0.0.1
リゾルバー#1は空ですが、/ etc / resolverから派生したネームサーバーエントリが残っていることに注意してください。
/ etc / resolver /ファイルでリゾルバドメインを直接指定できるため、特別なインターネットルートドメイン.
を指定すると、次のようなグローバルリゾルバエントリが作成されます。
resolver #8
nameserver[0] : 127.0.0.1
現在、すべてのDNSクエリは、オフラインであってもlocalhostにルーティングされます。
もちろん、dnsmasqの--addressオプションなどを使用して、選択したドメインを127.0.0.1として解決する必要があります。
# dnsmasq --address=/dev/127.0.0.1
要約すれば:
- すべてのネットワークインターフェイスDNSサーバーを127.0.0.1に設定します。
networksetup -setdnsservers Ethernet 127.0.0.1
networksetup -setdnsservers Wi-Fi 127.0.0.1
...
- ファイル/ etc / resolver / whateverを作成します。
ネームサーバー127.0.0.1
ドメイン
- ローカルDNSサーバーをセットアップし、満足してください。
cf. http://opensource.apple.com/source/configd/configd-395.11/dnsinfo/dnsinfo_flatfile.c