Domain-Name-System

即使沒有網際網路連接,也可以在 OS X 上設置 DNS 伺服器

  • September 24, 2020

我已經安裝並配置了 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

引用自:https://serverfault.com/questions/22419