Node.js | 常用工具模組(DNS模組)
簡介
Node.js DNS
模組用於解析域名。
1 | var dns = require("dns") |
方法
序號 | 方法 & 描述 | Doc |
---|---|---|
1 | dns.lookup(hostname[, options], callback) 將域名(比如 ‘runoob.com’)解析為第一條找到的記錄 A (IPV4)或 AAAA(IPV6)。參數 options可以是一個對像或整數。如果沒有提供 options,IP v4 和 v6 地址都可以。如果 options 是整數,則必須是 4 或 6。 |
Link |
2 | dns.lookupService(address, port, callback) 使用 getnameinfo 解析傳入的地址和端口為域名和服務。 |
Link |
3 | dns.resolve(hostname[, rrtype], callback) 將一個域名(如 ‘runoob.com’)解析為一個 rrtype 指定記錄類型的數組。 |
Link |
4 | dns.resolve4(hostname, callback) 和 dns.resolve() 類似, 僅能查詢 IPv4 (A 記錄)。 addresses IPv4 地址數組 (比如,[‘74.125.79.104’, ‘74.125.79.105’, ‘74.125.79.106’])。 |
Link |
5 | dns.resolve6(hostname, callback) 和 dns.resolve4() 類似, 僅能查詢 IPv6( AAAA 查詢) |
Link |
6 | dns.resolveMx(hostname, callback) 和 dns.resolve() 類似, 僅能查詢郵件交換(MX 記錄)。 |
Link |
7 | dns.resolveTxt(hostname, callback) 和 dns.resolve() 類似, 僅能進行文本查詢 (TXT 記錄)。 addresses 是 2-d 文本記錄數組。 (比如,[ [‘v=spf1 ip4:0.0.0.0 ‘, ‘~all’ ] ])。每個子數組包含一條記錄的 TXT 塊。根據使用情況可以連接在一起,也可單獨使用。 |
Link |
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’}, …])。 |
Link |
9 | dns.resolveSoa(hostname, callback) 和 dns.resolve() 類似, 僅能查詢權威記錄(SOA 記錄)。 |
Link |
10 | dns.resolveNs(hostname, callback) 和 dns.resolve() 類似, 僅能進行域名伺服器記錄查詢(NS 記錄)。 addresses 是域名伺服器記錄數組(hostname 可以使用) (比如, [‘ns1.example.com’, ‘ns2.example.com’])。 |
Link |
11 | dns.resolveCname(hostname, callback) 和 dns.resolve() 類似, 僅能進行別名記錄查詢 (CNAME記錄)。 addresses 是對 hostname 可用的別名記錄數組 (比如,, [‘bar.example.com’])。 |
Link |
12 | dns.reverse(ip, callback) 反向解析 IP 地址,指向該 IP 地址的域名數組。 |
Link |
13 | dns.getServers() 返回一個用於當前解析的 IP 地址數組的字符串。 |
Link |
14 | dns.setServers(servers) 指定一組 IP 地址作為解析伺服器。 |
Link |
rrtype
rrtype | records contains | Result type | Shorthand method |
---|---|---|---|
‘A’ | IPv4地址(默認) | <string> | dns.resolve4() |
‘AAAA’ | IPv6地址 | <string> | dns.resolve6() |
‘ANY’ | 任何記錄 | <Object> | dns.resolveAny() |
‘CNAME’ | 規範名稱記錄 | <string> | dns.resolveCname() |
‘MX’ | 郵件交換記錄 | <Object> | dns.resolveMx() |
‘NAPTR’ | 名稱權限指針記錄 | <Object> | dns.resolveNaptr() |
‘NS’ | 名稱伺服器記錄 | <string> | dns.resolveNs() |
‘PTR’ | 指針記錄 | <string> | dns.resolvePtr() |
‘SOA’ | 權限記錄的開始 | <Object> | dns.resolveSoa() |
‘SRV’ | 服務記錄 | <Object> | dns.resolveSrv() |
‘TXT’ | 文字記錄 | <string[]> | dns.resolveTxt() |
錯誤代碼
每個DNS查詢都可以返回以下錯誤代碼之一:
- dns.NODATA:DNS伺服器返回無資料的答案。
- dns.FORMERR:DNS伺服器聲明查詢格式錯誤。
- dns.SERVFAIL:DNS伺服器返回一般故障。
- dns.NOTFOUND:找不到域名。
- dns.NOTIMP:DNS伺服器未實現請求的操作。
- dns.REFUSED:DNS伺服器拒絕查詢。
- dns.BADQUERY:格式錯誤的DNS查詢。
- dns.BADNAME:主機名格式錯誤。
- dns.BADFAMILY:不支持的地址族。
- dns.BADRESP:錯誤的DNS回复。
- dns.CONNREFUSED:無法聯繫DNS伺服器。
- dns.TIMEOUT:與DNS伺服器聯繫時超時。
- dns.EOF:文件結尾。
- dns.FILE:讀取文件時出錯。
- dns.NOMEM:內存不足。
- dns.DESTRUCTION:通道正在被破壞。
- dns.BADSTR:格式錯誤的字符串。
- dns.BADFLAGS:指定了非法標誌。
- dns.NONAME:給定的主機名不是數字。
- dns.BADHINTS:指定了非法提示標誌。
- dns.NOTINITIALIZED:尚未執行c-ares庫初始化。
- dns.LOADIPHLPAPI:加載iphlpapi.dll時出錯。
- dns.ADDRGETNETWORKPARAMS:找不到GetNetworkParams函數。
- dns.CANCELLED:DNS查詢已取消。
實例
1 | var dns = require('dns'); |
執行結果如下:
1 | $ node main.js |
方法參考手冊
請直接至Node.js
官方提供的DNS Documentation
查看。
註:以上參考了
Node.js DNS 模块