Dark mode
dns
dns เป็นโมดูลในตัวของ Node.js ที่ให้ความสามารถในการแปลงชื่อโดเมนเป็นที่อยู่ IP และแปลงที่อยู่ IP เป็นชื่อโดเมน
import { lookup, resolve, resolve4, resolve6, resolveCname, resolveMx, resolveTxt, reverse } from 'node:dns';
API | คำอธิบาย | ลักษณะ | คำอธิบายเพิ่มเติม |
---|---|---|---|
lookup | แปลง hostname เป็น IP | Asynchronous | ใช้ระบบ DNS ของระบบปฏิบัติการ (OS) โดยตรง เหมาะสำหรับการใช้งานทั่วไป |
resolve | แปลง hostname เป็น record | Asynchronous | ทำงานผ่าน DNS resolver โดยตรง สามารถระบุ record type (A, AAAA, MX, TXT ฯลฯ) ได้ |
resolve4 | แปลง hostname เป็น IPv4 | Asynchronous | เฉพาะ IPv4 addresses |
resolve6 | แปลง hostname เป็น IPv6 | Asynchronous | เฉพาะ IPv6 addresses |
resolveCname | แปลง hostname เป็น CNAME | Asynchronous | สำหรับ canonical name records |
resolveMx | แปลง hostname เป็น MX records | Asynchronous | สำหรับ mail exchange records |
resolveTxt | แปลง hostname เป็น TXT records | Asynchronous | สำหรับ text records |
reverse | แปลง IP เป็น hostname | Asynchronous | ทำ 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");