如何使用 nodejs 检查 DNS?

How can I check DNS using nodejs?

我需要做递归检查 DNS,就像 linux 的命令

$ dig +recurse some.site

使用 nodejs。这个 'request' 必须 return DNS 的对象,因为我需要和他们一起工作。

我需要这个功能来正确使用 DNS,它必须绕过 TTL(我不确定它在英语上听起来是否正确)。标准的 dns 模块可以做到这一点吗?

您可以使用 the core DNS module。他们给出的第一个例子是查找 www.google.com

var dns = require('dns');

dns.lookup('www.google.com', function onLookup(err, addresses, family) {
  console.log('addresses:', addresses);
});

也看看这个 native-dns 模块

我做到了! 我用了 this module.

首先我定义问题:

var question = dns.Question({
  name: 'somesite.com',
  type: 'A',
});

其次我向根服务器请求:

var dns = require('native-dns');
var standard_dns = require('dns'); //for dns.lookup() function    
var req = dns.Request({
      question: question,
      server: { address: '199.7.91.13', port: 53, type: 'udp' },
      timeout: 1000,
    });

然后我这样做:

req.on('message', function (err, answer) {
  answer.authority.forEach(function(a){ //looking each authority server
    var addresses = String(a.data),//stringify it
    standard_dns.lookup(addresses, function(e, add){ //lookup this server with standard 'dns' module
      var req = dns.Request({
         question: question,//question for somesite.com
         server: {address: add}//do request on this server
      })
      req.on('message', function(e, a){
        console.log(a);//a - is what you need
       })
     req.send(); //send request
    })

  })
});