当我离线时,它停止工作,因为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和srt DNS就像.smackaho.st但是,当你离线工作时你不能使用它.
编辑:尝试过scutil命令,但似乎你可以在离线时更改DNS
注意:当您关闭所有接口时,无法在Pref中设置DNS服务器.面板.
解决方法
我也喜欢在我的本地机器上使用Dnsmasq,我遇到了这个问题
太.这是解决方案:
来自man 5的解析器:
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 /默认不存在;你必须自己创造它.
也可以从手册页中找到:
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 /中的文件,所以这个设置会
坚持通过网络更改和重新启动.
更新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
nameserver条目仍然存在.
事实证明,因为您可以直接指定解析器域
/ etc / resolver /文件,指定特殊的Internet根域.
导致创建一个全局解析器条目,如下所示:
resolver #8 nameserver[0] : 127.0.0.1
现在所有DNS查询都会路由到localhost,即使在脱机时也是如此.
当然,您仍然需要将所选域名解析为
127.0.0.1使用类似dnsmasq的–address选项:
# 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:
nameserver 127.0.0.1 domain .
>设置本地DNS服务器并开心.
比照http://opensource.apple.com/source/configd/configd-395.11/dnsinfo/dnsinfo_flatfile.c