我已经安装,configurationDNS服务器(Dnsmasq的本地实例),解决到本地主机,我想,都可以。
当我离线时,它停止工作,因为OS X为resolv.conf的内容为空,并忽略尝试反映此文件中的更改。
任何想法,即使离线时如何configurationDNS?
类似的问题(未解决): http : //blog.steamshift.com/geek/leopard-lookupd-and-local-web-development-sites
主要动机是使用子域作为账户密钥的RoR应用程序的轻松开发。 而且你不能在/ etc / hosts中使用127.0.0.1 * .yourapp.local。 有些人注册了域名smackaho.st和srt DNS,如.smackaho.st在127.0.0.1,但仍然无法在离线工作时使用。
编辑:试过scutil命令,但似乎你可以更改DNS,如果离线
注意:当您closures所有接口时,无法在Pref中设置DNS服务器。 面板。
我也喜欢在我的本地机器上使用Dnsmasq,而且我也有这个问题。 这是解决scheme:
从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/
默认不存在; 你必须自己创build它。
另外从手册页:
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/
文件,所以这个设置将通过networking更改并重新启动。
不幸的是,从OS X Lion开始,当没有接口处于活动状态时,顶层parsing器(如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
请注意,parsing器#1是空的,但/ etc / resolver派生的名称服务器条目仍然存在。
事实certificate,由于您可以直接在/ etc / resolver / file中指定parsing器域,因此可以指定特殊的Internet根域.
导致创build一个如下所示的全局parsing器条目:
resolver #8 nameserver[0] : 127.0.0.1
现在所有DNS查询都被路由到本地主机,即使在离线状态下。
当然,你仍然需要使用类似dnsmasq的–address选项来parsing你select的域名为127.0.0.1:
# dnsmasq --address=/dev/127.0.0.1
networksetup -setdnsservers以太网127.0.0.1 networksetup -setdnsservers Wi-Fi 127.0.0.1 ...
域名服务器127.0.0.1 域。
比照 http://opensource.apple.com/source/configd/configd-395.11/dnsinfo/dnsinfo_flatfile.c
为什么不在/ etc / hosts中创build条目呢? 我很难想到你需要真正运行一个完整的DNS服务器的情况。 我一直使用主机文件条目在我的Mac上完成这样的事情。
OS X中的parsing器与Linux或其他Unix中的parsing器不同。 这可能是导致你悲伤的部分原因。 例如,它首先使用哪种parsing方法,并在一段时间内caching所有查询的结果。
您是否已将networking首选项窗格中的界面添加到DNS服务器? 这应该确保parsing器在决定查找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.
所以,你应该能够在界面中input一些东西,而且应该坚持下去。 当我不喜欢我的本地DHCP服务器提供的DNS服务器时,我已经做了几次了。
OSX是否具有正常的Linux / UNIX DHCP客户端configuration所具有的/etc/dhcp3/dhclient.confconfiguration文件?
如果是这样,它应该有一条线,你可以取消注释
prepend domain-name-servers 127.0.0.1;
让DHCP客户端总是将该行添加到您的resolv.conf
尝试添加configuration了静态地址和127.0.0.1作为您的DNS服务器的第二个以太网服务。 或者,添加一个networking位置,将您的DNS服务器设置为127.0.0.1。 这两项更改都将在“networking”面板下的“系统偏好设置”中进行。
这可能有助于放置
127.0.0.1 localhost
进入/ etc / hosts,所以它不需要parsing器来查找localhost。