dns
域名服务器。
dns模块包含了两个不同类别的函数:
1、使用底层操作系统工具执行名称解析但不一定执行任何网络通信的函数。
此类别仅包含一个函数:dns.lookup()。
const dns = require('dns');
dns.lookup('iana.org', (err, address, family) => {
console.log('地址: %j 地址族: IPv%s', address, family);
});
// 地址: "192.0.43.8" 地址族: IPv4
2、连接到实际的DNS服务器以执行名称解析并始终使用网络执行DNS查询的函数。包含dns模块中除dns.lookup()之外的所有函数。
这些函数不使用与dns.lookup()使用的同一配置文件。
这些函数应该由不希望使用底层系统的工具进行名称解析、而始终执行dns查询的开发者使用。
const dns = require('dns');
dns.resolve4('archive.org', (err, addresses) => {
if (err) throw err;
console.log(`地址: ${JSON.stringify(addresses)}`);
addresses.forEach((a) => {
dns.reverse(a, (err, hostnames) => {
if (err) {
throw err;
}
console.log(`地址 ${a} 逆向解析到域名: ${JSON.stringify(hostnames)}`);
});
});
});
rrtypes
dns.resolve() 方法中有效的 rrtypes值:
- ‘A’ IPV4 地址, 默认;
- ‘AAAA’ IPV6 地址;
- ‘MX’ 邮件交换记录;
- ‘TXT’ text 记录;
- ‘SRV’ SRV 记录;
- ‘PTR’ 用来反向 IP 查找;
- ‘NS’ 域名服务器记录;
- ‘CNAME’ 别名记录;
- ‘SOA’ 授权记录的初始值;