【发布时间】:2018-05-12 16:28:20
【问题描述】:
node.js中有nslookup的等价功能吗?
这是我的 MacBook Pro 上nslookup 命令的执行结果:
> nslookup www.amagicshop.com.tw 8.8.8.8
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
www.amagicshop.com.tw canonical name = s16959.dname.91app.io.
s16959.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
我想知道 node.js 中是否有一个函数,给定www.amagicshop.com.tw 和8.8.8.8 作为输入,也返回s16959.dname.91app.io.,
proxy.letssl.91app.io.、proxy-letssl-91app-io-196811564.ap-northeast-1.elb.amazonaws.com.、52.196.80.17 和 54.178.248.57 作为输出。
我原本以为dns.resolveAny是node.js中nslookup的等价函数。但我错了。
因为下面的代码返回Error: queryAny ESERVFAIL www.amagicshop.com.tw错误。
const { Resolver } = require('dns')
const resolver = new Resolver()
resolver.setServers(['8.8.8.8'])
resolver.resolveAny('www.amagicshop.com.tw', (err, result) => {
if (err) {
console.error(`error: ${err}`)
} else {
console.log(`result: ${JSON.stringify(result)}`)
}
})
结果与nslookup的结果不同。
也许我必须实现一个结合resolveCname 和resolve4 的函数,这样我才能实现我想要的。
【问题讨论】: