Skip to content

dns

dns เป็นโมดูลในตัวของ Node.js ที่ให้ความสามารถในการแปลงชื่อโดเมนเป็นที่อยู่ IP และแปลงที่อยู่ IP เป็นชื่อโดเมน

import { lookup, resolve, resolve4, resolve6, resolveCname, resolveMx, resolveTxt, reverse } from 'node:dns';

APIคำอธิบายลักษณะคำอธิบายเพิ่มเติม
lookupแปลง hostname เป็น IPAsynchronousใช้ระบบ DNS ของระบบปฏิบัติการ (OS) โดยตรง เหมาะสำหรับการใช้งานทั่วไป
resolveแปลง hostname เป็น recordAsynchronousทำงานผ่าน DNS resolver โดยตรง สามารถระบุ record type (A, AAAA, MX, TXT ฯลฯ) ได้
resolve4แปลง hostname เป็น IPv4Asynchronousเฉพาะ IPv4 addresses
resolve6แปลง hostname เป็น IPv6Asynchronousเฉพาะ IPv6 addresses
resolveCnameแปลง hostname เป็น CNAMEAsynchronousสำหรับ canonical name records
resolveMxแปลง hostname เป็น MX recordsAsynchronousสำหรับ mail exchange records
resolveTxtแปลง hostname เป็น TXT recordsAsynchronousสำหรับ text records
reverseแปลง IP เป็น hostnameAsynchronousทำ reverse DNS lookup

ตัวอย่าง

แปลง hostname เป็น IP (lookup)

js
import { lookup } from "dns";

// แปลงชื่อโดเมนเป็น IP address
lookup("example.com", (err, address, family) => {
  if (err) {
    console.error("เกิดข้อผิดพลาด:", err);
    return;
  }

  console.log(`IP Address: ${address}`);
  console.log(`IP Family: IPv${family}`); // 4 หรือ 6
});

แปลง hostname เป็น IP (resolve)

js
import { resolve4, resolve6 } from "dns";

// แปลงชื่อโดเมนเป็น IPv4 addresses
resolve4("example.com", (err, addresses) => {
  if (err) {
    console.error("resolve4 error:", err);
    return;
  }

  console.log("IPv4 Addresses:", addresses);
});

// แปลงชื่อโดเมนเป็น IPv6 addresses
resolve6("example.com", (err, addresses) => {
  if (err) {
    console.error("resolve6 error:", err);
    return;
  }

  console.log("IPv6 Addresses:", addresses);
});

ตรวจสอบ MX Records

js
import { resolveMx } from "dns";

// ตรวจสอบ MX records สำหรับอีเมล
resolveMx("google.com", (err, addresses) => {
  if (err) {
    console.error("resolveMx error:", err);
    return;
  }

  console.log("MX Records:", addresses);
  /* ผลลัพธ์:
  [
    { exchange: 'smtp.google.com', priority: 10 },
    { exchange: 'alt1.smtp.google.com', priority: 20 },
    ...
  ]
  */
});

ตรวจสอบ TXT Records

js
import { resolveTxt } from "dns";

// ตรวจสอบ TXT records (มักใช้สำหรับ SPF, DKIM)
resolveTxt("google.com", (err, records) => {
  if (err) {
    console.error("resolveTxt error:", err);
    return;
  }

  console.log("TXT Records:", records);
  /* ผลลัพธ์:
  [
    [ 'v=spf1 include:_spf.google.com ~all' ],
    [ 'google-site-verification=...' ],
    ...
  ]
  */
});

Reverse DNS Lookup

js
import { reverse } from "dns";

// แปลง IP เป็น hostname
reverse("8.8.8.8", (err, hostnames) => {
  if (err) {
    console.error("reverse error:", err);
    return;
  }

  console.log("Hostnames:", hostnames); // ['dns.google']
});

ใช้ Promise-based API

js
import { promises as dns } from "dns";

async function checkDomain(domain) {
  try {
    const address = await dns.lookup(domain);
    console.log(`${domain} => ${address.address} (IPv${address.family})`);

    const mxRecords = await dns.resolveMx(domain);
    console.log("MX Records:", mxRecords);
  } catch (err) {
    console.error("DNS Error:", err);
  }
}

checkDomain("example.com");