Network & Security

CoreDNS คืออะไร? คู่มือ Self-Hosted DNS Server แทน BIND9 สำหรับ SME ไทย 2026

CoreDNS เป็น DNS Server ที่ใช้สถาปัตยกรรมแบบ Plugin-based เขียนด้วย Go เป็น Default DNS ใน Kubernetes ทำให้กลายเป็นทางเลือกที่ทันสมัยและยืดหยุ่นสำหรับ SME ไทย แทน BIND9 ที่ซับซ้อน

AF
ADS FIT Team
·8 นาที
Share:
🌐

# 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:

  • **Plugin-based architecture** เลือก enable เฉพาะ plugin ที่ใช้งาน เช่น cache, forward, kubernetes, prometheus, log
  • **Corefile** ไฟล์ Config เดียว เขียนสั้น อ่านง่าย เข้าใจไวกว่า named.conf
  • **Single binary** ขนาดประมาณ 50 MB รันได้ทันที ไม่ต้องลง dependency เพิ่ม
  • **Cloud-native** เป็น default DNS ของ Kubernetes และทำงานได้ดีกับ Service Mesh เช่น Istio, Linkerd
  • **Observability ครบ** มี plugin prometheus สำหรับ metrics และ trace สำหรับ OpenTelemetry
  • สำหรับ 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

  • **เปิด cache plugin** ลด query ที่ส่งออก upstream ช่วยลดภาระและเพิ่มความเร็ว
  • **เปิด errors และ log plugin** ทำให้ debug ง่ายเมื่อเกิดปัญหา
  • **ตั้ง prometheus :9153** สำหรับเก็บ metrics ดู query rate, latency และ cache hit rate
  • **ใช้ multiple upstream** เช่น forward . 1.1.1.1 8.8.8.8 เผื่อ failover
  • **Run อย่างน้อย 2 instances** เพื่อ High Availability พร้อม Load Balancer ด้านหน้า
  • **Backup Corefile และ Zone files** ก่อนแก้ไขทุกครั้ง
  • **Validate ด้วย coredns -conf Corefile -plugins** ก่อน restart service
  • สรุปและขั้นตอนถัดไป

    CoreDNS เป็น DNS Server ยุคใหม่ที่ออกแบบมาให้เรียบง่าย ขยายได้ และเหมาะกับโครงสร้างพื้นฐานสมัยใหม่ของ SME ไทย ไม่ว่าจะเป็น Self-hosted, On-premise หรือ Kubernetes ก็สามารถใช้ตัวเดียวจบทุก use case ลดต้นทุนการเรียนรู้และดูแลระบบได้อย่างชัดเจน

    Key Takeaways:

  • CoreDNS เขียนด้วย Go ใช้ Plugin-based architecture
  • Config ผ่าน Corefile เรียบง่ายกว่า named.conf
  • เป็น default DNS ของ Kubernetes และทำงานได้ดีในงาน Authoritative และ Forwarder
  • Memory footprint ต่ำกว่า BIND9 ประมาณ 5 เท่า
  • มี Prometheus metrics built-in พร้อม Observability เต็มรูปแบบ
  • สนใจให้ ADS FIT ออกแบบและติดตั้ง CoreDNS สำหรับองค์กรของคุณ? ทีมเรามีประสบการณ์ออกแบบ DNS Infrastructure แบบ HA สำหรับองค์กรไทยทุกขนาด ติดต่อเราได้ที่หน้า Contact หรืออ่านบทความ Network & Security อื่นๆ บนบล็อก ADS FIT

    Tags

    #CoreDNS#DNS Server#Kubernetes#Self-Hosted#Network#BIND9

    สนใจโซลูชันนี้?

    ปรึกษาทีม ADS FIT ฟรี เราพร้อมออกแบบระบบที่ฟิตกับธุรกิจของคุณ

    ติดต่อเรา →

    บทความที่เกี่ยวข้อง