JSRUN 用代码说话

DNS 模块

编辑教程

DNS 模块

Node.js DNS 模块用于解析域名。引入 DNS 模块语法格式如下:

var dns = require("dns")

方法

序号 方法 & 描述
1 dns.lookup(hostname[, options], callback)
将域名(比如 '123.cn')解析为第一条找到的记录 A (IPV4)或 AAAA(IPV6)。参数 options可以是一个对象或整数。如果没有提供 options,IP v4 和 v6 地址都可以。如果 options 是整数,则必须是 4 或 6。
2 dns.lookupService(address, port, callback)
使用 getnameinfo 解析传入的地址和端口为域名和服务。
3 dns.resolve(hostname[, rrtype], callback)
将一个域名(如 '123.cn')解析为一个 rrtype 指定记录类型的数组。
4 dns.resolve4(hostname, callback)
和 dns.resolve() 类似, 仅能查询 IPv4 (A 记录)。 addresses IPv4 地址数组 (比如,['74.125.79.104', '74.125.79.105', '74.125.79.106'])。
5 dns.resolve6(hostname, callback)
和 dns.resolve4() 类似, 仅能查询 IPv6( AAAA 查询)
6 dns.resolveMx(hostname, callback)
和 dns.resolve() 类似, 仅能查询邮件交换(MX 记录)。
7 dns.resolveTxt(hostname, callback)
和 dns.resolve() 类似, 仅能进行文本查询 (TXT 记录)。 addresses 是 2-d 文本记录数组。(比如,[ ['v=spf1 ip4:0.0.0.0 ', '~all' ] ])。 每个子数组包含一条记录的 TXT 块。根据使用情况可以连接在一起,也可单独使用。
8 dns.resolveSrv(hostname, callback)
和 dns.resolve() 类似, 仅能进行服务记录查询 (SRV 记录)。 addresses 是 hostname可用的 SRV 记录数组。 SRV 记录属性有优先级(priority),权重(weight), 端口(port), 和名字(name) (比如,[{'priority': 10, 'weight': 5, 'port': 21223, 'name': 'service.example.com'}, ...])。
9 dns.resolveSoa(hostname, callback)
和 dns.resolve() 类似, 仅能查询权威记录(SOA 记录)。
10 dns.resolveNs(hostname, callback)
和dns.resolve() 类似, 仅能进行域名服务器记录查询(NS 记录)。 addresses 是域名服务器记录数组(hostname 可以使用) (比如, ['ns1.example.com', 'ns2.example.com'])。
11 dns.resolveCname(hostname, callback)
和 dns.resolve() 类似, 仅能进行别名记录查询 (CNAME记录)。addresses 是对 hostname 可用的别名记录数组 (比如,, ['bar.example.com'])。
12 dns.reverse(ip, callback)
反向解析 IP 地址,指向该 IP 地址的域名数组。
13 dns.getServers()
返回一个用于当前解析的 IP 地址数组的字符串。
14 dns.setServers(servers)
指定一组 IP 地址作为解析服务器。

rrtypes

以下列出了 dns.resolve() 方法中有效的 rrtypes值:

'A' IPV4 地址, 默认
'AAAA' IPV6 地址
'MX' 邮件交换记录
'TXT' text 记录
'SRV' SRV 记录
'PTR' 用来反向 IP 查找
'NS' 域名服务器记录
'CNAME' 别名记录
'SOA' 授权记录的初始值

错误码

每次 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 查询。

实例

创建 main.js 文件,代码如下所示:

var dns = require('dns');

dns.lookup('www.github.com', function onLookup(err, address, family) {
   console.log('ip 地址:', address);
   dns.reverse(address, function (err, hostnames) {
   if (err) {
      console.log(err.stack);
   }

   console.log('反向解析 ' + address + ': ' + JSON.stringify(hostnames));
});  
});

执行以上代码,结果如下所示:

address: 192.30.252.130
reverse for 192.30.252.130: ["github.com"]
JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。 大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
支付宝
9.99
无法付款,请点击这里
金额: 0
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟