typescriptbeginner

DNS Lookup and Resolution

Perform DNS lookups, resolve hostnames to IP addresses, and query DNS records using Node.js dns module.

typescript
import dns from 'dns';
import { promisify } from 'util';

const resolve4 = promisify(dns.resolve4);
const resolve6 = promisify(dns.resolve6);
const resolveMx = promisify(dns.resolveMx);
const resolveTxt = promisify(dns.resolveTxt);
const resolveCname = promisify(dns.resolveCname);
const lookup = promisify(dns.lookup);
const reverse = promisify(dns.reverse);

async function dnsInfo(hostname: string) {
  console.log(`\nDNS info for: ${hostname}`);
  console.log('='.repeat(40));

  try {
    const { address, family } = await lookup(hostname);
    console.log(`Lookup: ${address} (IPv${family})`);
  } catch (e) { console.log('Lookup failed'); }

  try {
    const ipv4 = await resolve4(hostname);
    console.log(`A records: ${ipv4.join(', ')}`);
  } catch (e) { console.log('No A records'); }

  try {
    const mx = await resolveMx(hostname);
    mx.sort((a, b) => a.priority - b.priority);
    mx.forEach(r => console.log(`MX: ${r.priority} ${r.exchange}`));
  } catch (e) { console.log('No MX records'); }

  try {
    const txt = await resolveTxt(hostname);
    txt.forEach(r => console.log(`TXT: ${r.join('')}`));
  } catch (e) { console.log('No TXT records'); }
}

async function main() {
  await dnsInfo('google.com');
  await dnsInfo('github.com');

  // Reverse lookup
  try {
    const hostnames = await reverse('8.8.8.8');
    console.log(`\nReverse 8.8.8.8: ${hostnames.join(', ')}`);
  } catch (e) { console.log('Reverse lookup failed'); }
}

main();

Use Cases

  • Network diagnostics tools
  • Email domain verification
  • Service discovery

Tags

Related Snippets

Similar patterns you can reuse in the same workflow.