# CoreDNS คืออะไร? คู่มือ Self-Hosted DNS Server แทน BIND9 สำหรับ SME ไทย 2026
ในยุคที่โครงสร้างพื้นฐานองค์กรเคลื่อนตัวสู่ Container, Microservices และ Cloud-native ระบบ DNS ภายในองค์กรก็ต้องเปลี่ยนตามไปด้วย หลายธุรกิจ SME ในไทยยังคงพึ่งพา BIND9 ซึ่งเป็น DNS Server ที่ใช้งานมานานกว่า 30 ปี แต่กลับมีความซับซ้อนในการตั้งค่า ใช้ทรัพยากรมาก และต่อยอดยากเมื่อต้องเชื่อมกับ Kubernetes หรือ Service Discovery สมัยใหม่
CoreDNS คือ DNS Server แบบ Open-Source ที่เขียนด้วยภาษา Go ใช้สถาปัตยกรรม Plugin-based โดดเด่นด้วยความเรียบง่าย เร็ว และยืดหยุ่น เป็นโครงการระดับ Graduated ของ CNCF (Cloud Native Computing Foundation) และเป็น Default DNS Server ของ Kubernetes ตั้งแต่เวอร์ชัน 1.13 เป็นต้นมา
ในบทความนี้ เราจะพาคุณเจาะลึก CoreDNS ตั้งแต่หลักการทำงาน การติดตั้ง การ Config ผ่าน Corefile รวมถึงการเปรียบเทียบกับ BIND9 อย่างเป็นระบบ เพื่อให้ SME ไทยสามารถตัดสินใจย้ายระบบ DNS ขององค์กรได้อย่างมั่นใจ
CoreDNS คืออะไร และทำไมถึงเหมาะกับ SME
CoreDNS เริ่มต้นในปี 2016 โดย Miek Gieben จากแนวคิดว่า DNS Server ควรเป็นเหมือน "ท่อที่ต่อ Plugin ได้" ทำให้ผู้ดูแลระบบสามารถเลือกใช้งานเฉพาะฟีเจอร์ที่ต้องการ ลดทรัพยากรและความซับซ้อนในการตั้งค่า
จุดเด่นหลักของ CoreDNS:
สำหรับ SME ไทยที่กำลังขยายระบบไปสู่ Hybrid Cloud หรือ Containerization การใช้ CoreDNS จะช่วยลด operational overhead อย่างเห็นได้ชัด
สถาปัตยกรรมและหลักการทำงาน
CoreDNS ทำงานในรูปแบบ chain of plugins โดยเมื่อ DNS Query เข้ามา ตัว Server จะส่งต่อไปยัง plugin ตามลำดับที่กำหนดใน Corefile แต่ละ plugin จะตัดสินใจว่าจะ "ตอบกลับ" หรือ "ส่งต่อ" ให้ plugin ถัดไป
ตัวอย่าง Corefile พื้นฐาน:
```
. {
forward . 1.1.1.1 8.8.8.8
cache 300
log
errors
prometheus :9153
}
```
ในตัวอย่างนี้ DNS Query ทุกโดเมนจะถูกส่งต่อไปยัง 1.1.1.1 และ 8.8.8.8 พร้อมเก็บ cache ไว้ 300 วินาที และเปิด metrics ที่ port 9153
การติดตั้ง CoreDNS แบบ Step-by-step
Step 1: ดาวน์โหลด Binary
```bash
curl -LO https://github.com/coredns/coredns/releases/download/v1.11.3/coredns_1.11.3_linux_amd64.tgz
tar -xzf coredns_1.11.3_linux_amd64.tgz
sudo mv coredns /usr/local/bin/
```
Step 2: สร้าง Corefile
```bash
sudo mkdir /etc/coredns
sudo nano /etc/coredns/Corefile
```
ใส่ config สำหรับ Internal DNS ขององค์กร:
```
adsfit.local:53 {
file /etc/coredns/db.adsfit.local
log
errors
}
. {
forward . 1.1.1.1 8.8.8.8
cache 300
prometheus :9153
}
```
Step 3: สร้าง Zone File
```
$TTL 3600
@ IN SOA ns1.adsfit.local. admin.adsfit.local. (
2026042901 ; Serial
7200 ; Refresh
3600 ; Retry
1209600 ; Expire
3600 ) ; Minimum TTL
IN NS ns1.adsfit.local.
ns1 IN A 192.168.1.10
www IN A 192.168.1.20
api IN A 192.168.1.30
```
Step 4: สร้าง systemd service และ Start
```bash
sudo systemctl enable coredns
sudo systemctl start coredns
sudo systemctl status coredns
```
ทดสอบด้วย dig:
```bash
dig @127.0.0.1 www.adsfit.local
```
เปรียบเทียบ CoreDNS กับ BIND9 และ Unbound
| ฟีเจอร์ | CoreDNS | BIND9 | Unbound |
|---------|---------|-------|---------|
| ภาษา | Go | C | C |
| Config | Corefile (เรียบง่าย) | named.conf (ซับซ้อน) | unbound.conf |
| Plugin Ecosystem | กว้าง 50+ plugin | จำกัด | จำกัด |
| Kubernetes Native | ใช่ (default) | ไม่ | ไม่ |
| Memory Footprint | ต่ำ (~20 MB) | สูง (~100 MB+) | ปานกลาง |
| Authoritative | ได้ | ได้ | ไม่ (recursive อย่างเดียว) |
| Recursive Resolver | ได้ผ่าน forward plugin | ได้ | ได้ดีมาก |
| DNS over TLS / HTTPS | ได้ผ่าน plugin | ต้อง compile เพิ่ม | ได้ |
| Prometheus Metrics | built-in | ต้องใช้ exporter | ต้องใช้ exporter |
| Learning Curve | ต่ำ | สูง | ปานกลาง |
สรุปจากตาราง: หากองค์กรของคุณใช้ Container หรือต้องการ DNS ที่จัดการง่าย CoreDNS เหมาะกว่า แต่ถ้าเน้นงาน Recursive Resolver บน LAN อย่างเดียว Unbound ยังเป็นตัวเลือกที่ยอดเยี่ยม
Use Case จริงสำหรับ SME ไทย
1. DNS ภายในออฟฟิศ (Internal DNS) ใช้ CoreDNS resolve ชื่อเครื่องในวง LAN เช่น printer.local, fileserver.local
2. DNS สำหรับ Kubernetes Cluster เป็น default อยู่แล้ว ทำให้ Pod-to-Service สื่อสารกันด้วยชื่อ service.namespace.svc.cluster.local ได้อัตโนมัติ
3. Ad-blocker ระดับ Network ใช้ plugin hosts หรือ rewrite ในการ block โดเมนโฆษณา ทำหน้าที่คล้าย Pi-hole แต่ลงในโครงสร้าง CoreDNS
4. Split-horizon DNS ตอบ IP ต่างกันระหว่าง Internal และ External Users เพื่อลด latency ของพนักงานที่อยู่ในออฟฟิศ
5. Service Discovery สำหรับ Microservices ผสานกับ etcd หรือ Consul ผ่าน plugin เพื่อให้ service ค้นหากันได้แบบ dynamic
Best Practices การใช้ CoreDNS ใน Production
สรุปและขั้นตอนถัดไป
CoreDNS เป็น DNS Server ยุคใหม่ที่ออกแบบมาให้เรียบง่าย ขยายได้ และเหมาะกับโครงสร้างพื้นฐานสมัยใหม่ของ SME ไทย ไม่ว่าจะเป็น Self-hosted, On-premise หรือ Kubernetes ก็สามารถใช้ตัวเดียวจบทุก use case ลดต้นทุนการเรียนรู้และดูแลระบบได้อย่างชัดเจน
Key Takeaways:
สนใจให้ ADS FIT ออกแบบและติดตั้ง CoreDNS สำหรับองค์กรของคุณ? ทีมเรามีประสบการณ์ออกแบบ DNS Infrastructure แบบ HA สำหรับองค์กรไทยทุกขนาด ติดต่อเราได้ที่หน้า Contact หรืออ่านบทความ Network & Security อื่นๆ บนบล็อก ADS FIT