运行 dnsmasq 的 OSX 并不总是处理默认 dns 查询

运行 dnsmasq 的 OSX 并不总是处理默认 dns 查询

我是 OSX 上的开发人员,我一直使用 .local 来开发本地站点,自从 ML 以来,我一直在运行 DNSmasq 来解决服务查询顺序问题,以便我可以继续使用 /etc/hosts 来定义我的记录(我相信 DNSmasq 会接受)。

我以为它有效,但它似乎不一致,对某些人有效,对其他人无效。

ping 一个无法正常工作的域名似乎有大约 30 秒的长时间延迟。在 Web 浏览器中访问同一个域名永远无法解析。然而,挖掘该域名会立即从 DNSmasq 返回 A 记录结果

robaldred:~/Sites/sasp (master)
 → ping sasp.local

# insert long pause here

PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.089 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.136 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.141 ms

robaldred:~/Sites/sasp (master)
 → dig sasp.local

; <<>> DiG 9.8.3-P1 <<>> sasp.local
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55538
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;sasp.local.            IN  A

;; ANSWER SECTION:
sasp.local.     0   IN  A   127.0.0.1

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Apr  8 15:05:25 2013
;; MSG SIZE  rcvd: 44

/etc/resolv.conf

#
# Mac OS X Notice
#
# This file is not used by the host name and address resolution
# or the DNS query routing mechanisms used by most processes on
# this Mac OS X system.
#
# This file is automatically generated.
#
nameserver 127.0.0.1

/etc/resolv.dnsmasq.conf

nameserver 2001:4860:4860::8888
nameserver 2001:4860:4860::8844
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 2620:0:ccc::2
nameserver 208.67.222.222 

/usr/local/etc/dnsmasq.conf

http://pastie.org/7370748

答案1

首先,您应该选择除 之外的后缀.local。该伪 TLD 对 mDNS/Bonjour 有特殊含义。我使用.dev,但您可以使用任何非有效 TLD 或伪 TLD。

然后你可能会发现我的答案对于另一个超级用户的问题很有用。dig不起作用,但是pingcurl等会起作用,就像在网络浏览器中打开您的网站一样。

相关内容