dns
The dns
module provides functions for name resolution. It can resolve hostnames into IP addresses, perform reverse lookups, and query specific DNS records.
API Surface
Lookup
dns.lookup(hostname[, options], callback)
— resolve hostname to address. Options may includefamily
(4 or 6).dns.lookupService(address, port, callback)
— resolve address + port to hostname/service.
Resolve
dns.resolve(hostname[, rrtype], callback)
— resolve DNS records.rrtype
:A
,AAAA
,MX
,TXT
,SRV
, etc.dns.resolve4/resolve6
,dns.resolveMx
,dns.resolveTxt
, etc.dns.reverse(ip, callback)
— reverse IP to hostname.
Promises API
dns.promises.lookup()
,dns.promises.resolve()
, etc. — return promises.
Sync
- No synchronous DNS methods except via
net
orurl
parsing.
Examples (English only)
const dns = require("dns");
// Simple lookup
dns.lookup("example.com", (err, address, family) => {
if (err) throw err;
console.log("address:", address, "family: IPv" + family);
});
// Resolve A records
dns.resolve4("example.com", (err, addresses) => {
if (err) throw err;
console.log("IPv4:", addresses);
});
// Reverse lookup
dns.reverse("93.184.216.34", (err, hostnames) => {
if (err) throw err;
console.log("reverse:", hostnames);
});
// Promises API
(async () => {
const { promises: dnsPromises } = require("dns");
const res = await dnsPromises.lookup("example.com");
console.log("promises.lookup:", res.address);
})();
Notes
- Use
dns.lookup
for general hostname resolution (uses OS facilities). - Use
dns.resolve
for actual DNS queries (bypasses OS cache). - Prefer Promises API with async/await for clarity.
- Always handle errors (network issues, NXDOMAIN).