【node】DNS

看見了發表於2023-04-17
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 查詢。

相關文章