如何使用nodejs检查DNS?

时间:2015-09-21 12:56:11

标签: javascript node.js dns

我需要做递归检查DNS,比如linux的命令

$ dig +recurse some.site

使用nodejs。这个'请求'必须返回DNS的对象,因为我需要使用它们。

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

2 个答案:

答案 0 :(得分:3)

您可以使用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模块

答案 1 :(得分:1)

我做到了! 我使用了this module

首先我定义问题:

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

其次我请求root服务器:

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
    })

  })
});
相关问题