即使沒有網際網路連接,也可以在 OS X 上設置 DNS 伺服器
我已經安裝並配置了 DNS 伺服器(Dnsmasq 的本地實例),它可以根據需要解析為 localhost,一切正常。
當我離線時,它停止工作,因為 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。有些人為它註冊了域 smackaho.st 和 srt DNS,例如 .smackaho.st 在 127.0.0.1 但仍然不能在離線工作時使用它。
編輯:嘗試了 scutil 命令,但如果離線,您似乎可以更改 DNS
注意:當所有介面都關閉時,您無法在 Pref.xml 中設置 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/
預設情況下不存在;您必須自己創建它。同樣來自手冊頁:
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/ 文件中指定解析器域,因此指定特殊的 Internet 根域
.
會導致創建一個全域解析器條目,如下所示:resolver #8 nameserver[0] : 127.0.0.1
現在所有的 DNS 查詢都被路由到本地主機,即使在離線時也是如此。
當然,您仍然需要使用 dnsmasq 的 –address 選項將您選擇的域解析為 127.0.0.1:
# dnsmasq --address=/dev/127.0.0.1
總之:
- 將所有網路介面 dns 伺服器設置為 127.0.0.1:
networksetup -setdnsservers 乙太網 127.0.0.1 網路設置-setdnsservers Wi-Fi 127.0.0.1 ...
- 創建一個文件 /etc/resolver/whatever:
名稱伺服器 127.0.0.1 領域 。
- 設置本地 DNS 伺服器並感到高興。
參看。http://opensource.apple.com/source/configd/configd-395.11/dnsinfo/dnsinfo_flatfile.c