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 include family (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 or url 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).