Node.js DNS 模块用于解析域名

方法

dns.lookup(hostname[, options], callback)

将域名(比如 'runoob.com')解析为第一条找到的记录 A (IPV4)或 AAAA(IPV6)。参数 options可以是一个对象或整数。如果没有提供 options,IP v4 和 v6 地址都可以。如果 options 是整数,则必须是 4 或 6。

const dns = require('node:dns')

dns.lookup('www.baidu.com', (err, address, family) => {
    console.log('address: %j family: IPv%s', address, family);
    // address: "14.119.104.189" family: IPv4

});

dns.lookupService(address, port, callback)

使用 getnameinfo 解析传入的地址和端口为域名和服务。

dns.resolve(hostname[, rrtype], callback)

将一个域名(如 'nodejs.org')解析为一个 rrtype 指定记录类型的数组.

dns.reverse(ip, callback)

反向解析 IP 地址,指向该 IP 地址的域名数组。

注意:不是每个IP地址都有反向DNS。有时这是故意的,最常见的是,因为多个域名映射到同一个IP地址。
rrtyperecords containsResult typeShorthand method
'A'IPv4 addresses (default)<string>dns.resolve4()
'AAAA'IPv6 addresses<string>dns.resolve6()
'ANY'any records<Object>dns.resolveAny()
'CAA'CA authorization records<Object>dns.resolveCaa()
'CNAME'canonical name records<string>dns.resolveCname()
'MX'mail exchange records<Object>dns.resolveMx()
'NAPTR'name authority pointer records<Object>dns.resolveNaptr()
'NS'name server records<string>dns.resolveNs()
'PTR'pointer records<string>dns.resolvePtr()
'SOA'start of authority records<Object>dns.resolveSoa()
'SRV'service records<Object>dns.resolveSrv()
'TXT'text records[<string[]>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_...)dns.resolveTxt()

dns.getServers()

返回一个用于当前解析的 IP 地址数组的字符串。即返回当前主机默认网关ip地址列表

console.log(dns.getServers())
// [ '192.168.42.129', '192.168.8.1' ]

dns.setServers(servers)

指定一组 IP 地址作为域名解析服务器。

错误码(Error codes)

每个DNS查询可以返回以下错误码之一:

  • dns.NODATA: 无数据响应。
  • dns.FORMERR: 查询格式错误。
  • dns.SERVFAIL: 常规失败。
  • dns.NOTFOUND: 没有找到域名。
  • dns.NOTIMP: 未实现请求的操作。
  • dns.REFUSED: 拒绝查询。
  • dns.BADQUERY: 查询格式错误。
  • dns.BADNAME: 域名格式错误。
  • dns.BADFAMILY: 地址协议不支持。
  • dns.BADRESP: 回复格式错误。
  • dns.CONNREFUSED: 无法连接到 DNS 服务器。
  • dns.TIMEOUT: 连接 DNS 服务器超时。
  • dns.EOF: 文件末端。
  • dns.FILE: 读文件错误。
  • dns.NOMEM: 内存溢出。
  • dns.DESTRUCTION: 通道被摧毁。
  • dns.BADSTR: 字符串格式错误。
  • dns.BADFLAGS: 非法标识符。
  • dns.NONAME: 所给主机不是数字。
  • dns.BADHINTS: 非法HINTS标识符。
  • dns.NOTINITIALIZED: c c-ares 库尚未初始化。
  • dns.LOADIPHLPAPI: 加载 iphlpapi.dll 出错。
  • dns.ADDRGETNETWORKPARAMS: 无法找到 GetNetworkParams 函数。
  • dns.CANCELLED: 取消 DNS 查询。

看见了
876 声望16 粉丝

前端开发,略懂后台;