[英]node.js dns.resolveAny returns an empty array
我正在使用dns.resolveAny
函數檢查有關某些域的DNS信息。
我發現奇怪的一件事是,對於某些域, dns.resolveAny
返回一個空數組,而nslookup
命令卻沒有。
這是一個例子:
// node.js version >= 9.2 is required
const dns = require('dns')
dns.resolveAny('www.ifshop.com.tw', (err, ret) => {
if (err) {
console.log(`err: ${err}`)
} else {
console.log(`ret: ${JSON.stringify(ret)}`) // JSON.stringify(ret) == [] here
}
})
resolveAny
返回[]
。 但是nslookup
成功返回了www.ifshop.com.tw
的CNAME記錄所在的www.ifshop.com.tw
。
> nslookup www.ifshop.com.tw
Server: 192.168.1.1
Address: 192.168.1.1#53
Non-authoritative answer:
www.ifshop.com.tw canonical name = s1759.dname.91app.io.
s1759.dname.91app.io canonical name = proxy.letssl.91app.io.
proxy.letssl.91app.io canonical name = proxy-letssl-91app-io-196811564.ap-northeast-1.elb.amazonaws.com.
Name: proxy-letssl-91app-io-196811564.ap-northeast-1.elb.amazonaws.com
Address: 54.178.248.57
Name: proxy-letssl-91app-io-196811564.ap-northeast-1.elb.amazonaws.com
Address: 52.196.80.17
為什么會這樣?
這是resolveAny
的錯誤嗎?
還是www.ifshop.com.tw
的DNS配置中存在問題?
我還發現dns.resolveCname
成功返回CNAME。
// node.js version >= 9.2 is required
const dns = require('dns')
dns.resolveCname('www.ifshop.com.tw', (err, ret) => {
if (err) {
console.log(`err: ${err}`)
} else {
console.log(`ret: ${JSON.stringify(ret)}`)
}
})
在這里, JSON.stringify(ret)
等於["s1759.dname.91app.io"]
。
我將nslookup
的類型設置為any
。 然后我發現了以下信息。
nslookup
> set type=any
> www.ifshop.com.tw
Server: 10.11.1.5
Address: 10.11.1.5#53
Non-authoritative answer:
www.ifshop.com.tw hinfo = "ANY obsoleted" "See draft-ietf-dnsop-refuse-any"
Authoritative answers can be found from:
從上面的信息中,我們可以推斷出DNS提供程序拒絕響應any
類型的查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.