我需要做递归检查DNS,比如linux的命令
$ dig +recurse some.site
使用nodejs。这个'请求'必须返回DNS的对象,因为我需要使用它们。
我需要这个功能才能正确使用DNS,它必须绕过TTL(我不确定它在英语上听起来是否正确)。标准的dns模块可以这样做吗?
答案 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
})
})
});