簡體   English   中英

node.js dns.resolveAny返回一個空數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM