私はインストールし、DNSサーバー(Dnsmasqのローカルインスタンス)を構成しました。これは、必要に応じてlocalhostに解決され、すべてOKです。
OS Xがresolv.confのコンテンツを空にし、このファイルの変更を反映する試みを無視するため、オフラインになると動作が停止します。
アイデアがありますか?オフライン時でもDNSを構成する方法は?
同様の問題(未解決): http://blog.steamshift.com/geek/leopard-lookupd-and-local-web-development-sites
主な動機は、アカウントキーとしてサブドメインを使用するRoRアプリケーションの開発を容易にすることです。また、/ etc/hostsで127.0.0.1 * .yourapp.localを使用することはできません。 127.0.0.1の.smackaho.stのように、ドメインsmackaho.stとsrt DNSを登録した人もいますが、オフラインで作業しているときは使用できません。
編集:scutilコマンドを試しましたが、オフラインの場合はDNSを変更できるようです
注:すべてのインターフェースがダウンしている場合、PrefでDNSサーバーを設定できません。パネル。
ローカルマシンで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.
したがって、dev
のトップレベルドメインのすべてのDNSクエリをローカルネームサーバーにルーティングする場合は、次のようにします。
# mkdir /etc/resolver
# echo 'nameserver 127.0.0.1' > /etc/resolver/dev
configd
は/etc/resolver/
のファイルを変更しないため、この設定はネットワークの変更と再起動後も維持されます。
残念ながら、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
networksetup -setdnsservers Ethernet 127.0.0.1 networksetup -setdnsservers Wi-Fi 127.0.0.1 ...
ネームサーバー127.0.0.1 ドメイン。
cf. http://opensource.Apple.com/source/configd/configd-395.11/dnsinfo/dnsinfo_flatfile.c
代わりに/ etc/hostsにエントリを作成しないのはなぜですか?本格的なDNSサーバーを実際に実行する必要がある状況について考えていません。私はMacでこのようなことを実現するために常にホストファイルエントリを使用しています。
OS Xのリゾルバーの動作は、Linuxまたは他のUnixのリゾルバーとは異なります。これはおそらく、悲しみの原因の一部です。たとえば、最初に使用する解決方法の設定があり、すべてのクエリの結果を一定期間キャッシュします。
「ネットワーク」環境設定パネルのインターフェースにDNSサーバーを追加しましたか?これにより、リゾルバーがDNSエントリを探すことを決定した場合に、そのサーバーがクエリに使用されるようになります。
(b/cと答えるまだコメントできません...)
どのようにオフラインにしますか?
(私が今得た最良の答え)
# man -S 5 resolver
.
.
.
Note that the /etc/resolv.conf file,
which contains configuration for the default (or "primary") DNS resolver
client, is maintained automatically by Mac OS X and should not be edited manu-
ally. Changes to the DNS configuration should be made by using the Network
Preferences panel.
したがって、UIに何かを入力できるようになり、固定されているはずです。ローカルDHCPサーバーが提供するDNSサーバーが気に入らなかったときに、これを数回実行しました。
OSXには、通常のLinux/UNIX DHCPクライアント構成にある/etc/dhcp3/dhclient.conf構成ファイルがありますか?
その場合は、コメント解除できる行が必要です
prepend domain-name-servers 127.0.0.1;
dHCPクライアントが常にその行をresolv.confに追加するようにするには
静的アドレスと127.0.0.1で構成された2番目のイーサネットサービスをDNSサーバーとして追加してみてください。または、DNSサーバーを127.0.0.1に設定するネットワークロケーションを追加します。これらの変更はどちらも、[ネットワーク]パネルの[システム設定]で行います。