NodeJS之dns模块的使用

1,097 阅读1分钟

DNS(Domain Name System,域名系统),简单的说:就是把我们在浏览器地址栏输入的网站域名解析翻译成IP地址的系统,也称域名服务器。

Node提供了dns模块来负责供域名解析的工作。

dns模块提供了两类方法函数:

  • 使用底层系统工具进行域名解析,无需进行网络通信,这类方法只有一个dns.lookup()
  • 网络通信连接到一个真实的dns服务器进行域名解析,而且始终使用网络进行dns解析查询操作,这类方法包括所有除dns.lookup()之外的方法。

1. dns.getServers

返回当前正在使用的 ip地址,以字符串数组形式返回

import dns from 'dns';

const servers = dns.getServers();

console.log(servers)
// [ '10.33.176.66', '10.33.176.67' ]

2. dns.lookup

使用底层系统工具进行域名解析,返回主机名绑定ip

import dns from 'dns';

dns.lookup('www.baidu.com', {all: true}, (err, address) => {
  if (err) {
    console.log(err)
  }
  console.log(address);
  // [
  //    { address: '39.156.66.18', family: 4 },
  //   { address: '39.156.66.14', family: 4 }
  // ]
})

3. dns.lookupService

实现给定的ip地址和端口号,解析为对应的域名

dns.lookupService('39.156.66.18', 22, (err, hostname, service) => {
  if (err) {
    console.log(err)
  }
  console.log('主机:' + hostname)
  console.log('协议:' + service)
})

4. dns.resolve

使用网络域名系统协议将主机名(例如 'nodejs.org')解析为资源记录数组。

import dns from 'dns';


dns.resolve('nodejs.org', (err, address) => {
  if (err) {
    return
  }
  console.log(address)
  // [ '104.20.22.46', '104.20.23.46' ]
})

5. dns.reverse

执行反向域名系统查询,将 IPv4 或 IPv6 地址解析为主机名数组。

import dns from 'dns';


dns.reverse('104.20.23.46', (err, hostname) => {
  if (err) console.log(err)
  console.log(hostname) 
  // nodejs.org
})