2017-11-26 9 views
0

일부 도메인에 대한 DNS 정보를 확인하기 위해 dns.resolveAny 함수를 사용하고 있습니다.node.js dns.resolveAny는 빈 배열을 반환합니다.

이상한 점은 한 도메인에서 nslookup 명령이없는 동안 dns.resolveAny은 빈 배열을 반환한다는 것입니다.

// 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 반환 [] :

다음은 예입니다. 그러나 nslookupwww.ifshop.com.tw의 CNAME 레코드가있는 곳을 반환합니다.

> 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"]는 동일하다.

답변

0

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 유형의 질문에 응답을 거부 할 것을 추론 할 수있다.