javascriptnode.jsdns

How can I check DNS using nodejs?


I need to do recursive check DNS, like linux's command

$ dig +recurse some.site

with nodejs. This 'request' have to return object of DNS, because I need to work with them.

I need this feature to take rightly DNS, it have to get round TTL(I'm not sure that it correctly sounds on English). Can standard dns module do this?


Solution

  • I have done it! I used this module.

    First I define question:

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

    Second I do request to root server:

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

    Then I do this:

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