ติดตั้ง DHCP Server บน Ubuntu Server 26.04 ด้วย Kea

ติดตั้ง DHCP Server บน Ubuntu Server 26.04 ด้วย Kea

ทำไมต้องติดตั้ง DHCP Server เอง

ในห้อง Lab, ห้องเรียนคอมพิวเตอร์, ออฟฟิศขนาดเล็ก หรือระบบ Network ภายในองค์กร บางครั้งเราไม่อยากให้ Router เป็นตัวแจก IP Address ทั้งหมด เพราะต้องการควบคุม IP, DNS, Gateway, Lease Time หรือ Fix IP ให้เครื่อง Server / Printer / IoT Device ได้ชัดเจนกว่าเดิม

บทความนี้แนะนำการติดตั้ง DHCP Server บน Ubuntu Server 26.04 LTS โดยใช้ ISC Kea DHCP Server ซึ่งเป็นตัวเลือกที่เหมาะกับระบบใหม่มากกว่า isc-dhcp-server เดิม เพราะ Ubuntu ระบุว่า Kea เป็น DHCP Server ที่แนะนำสำหรับ deployment ใหม่ และ isc-dhcp-server ถูก deprecated / unsupported ตั้งแต่ Ubuntu 24.04 LTS แล้ว


ทดสอบบน Ubuntu Server 26.04 LTS Resolute Raccoon ซึ่งมี Server install image สำหรับติดตั้งเป็นระบบ Server โดยไม่ติดตั้ง GUI

ใน Lab นี้เราจะทำให้ Ubuntu Server แจก IP Address ให้เครื่อง Client อัตโนมัติผ่าน DHCPv4 โดยใช้แพ็กเกจ kea ซึ่งเมื่อติดตั้งแล้วจะมี component หลัก เช่น kea-dhcp4-server, kea-dhcp6-server, kea-ctrl-agent และ kea-dhcp-ddns-server ตามเอกสาร Ubuntu Server

⚠️ คำเตือนสำคัญ

ห้ามเปิด DHCP Server ซ้อนกับ Router หรือ DHCP Server ตัวเดิมในวง LAN เดียวกันโดยไม่วางแผน เพราะจะทำให้ Client ได้ IP ผิดชุด, Gateway ผิด หรือ DNS ผิดได้ ควรทดสอบใน Lab / VLAN / Internal Network ก่อนเสมอ


พื้นฐานที่จำเป็นก่อนเริ่ม

ตัวอย่าง Lab ในบทความนี้ใช้ค่าดังนี้

รายการ ค่าในตัวอย่าง
OS Ubuntu Server 26.04 LTS
DHCP Software ISC Kea DHCP Server
Interface แจก DHCP ens33
IP Server 192.168.10.10/24
Gateway 192.168.10.1
DNS 1.1.1.1, 8.8.8.8
DHCP Pool 192.168.10.100 - 192.168.10.200
Domain lab.local

ตรวจสอบชื่อ Network Interface ก่อนเริ่ม

ip a

ตัวอย่างผลลัพธ์ที่ต้องดูคือชื่อ interface เช่น ens33, enp0s3, enp0s8 หรือ eth0

ip route

ใช้ตรวจสอบ default gateway ของเครื่อง Server

แนะนำ Screenshot: หน้าจอผลลัพธ์ ip a เพื่อให้ผู้อ่านเห็นชื่อ interface จริงของเครื่องตัวเอง


ขั้นตอนที่ 1: ตั้งค่า Static IP ให้ Ubuntu Server

DHCP Server ควรมี IP Address แบบ Static เพื่อให้ Client ติดต่อได้แน่นอนทุกครั้ง

เปิดไฟล์ Netplan

sudo nano /etc/netplan/01-dhcp-server.yaml

ใส่ค่าตัวอย่างนี้ โดยเปลี่ยน ens33 ให้ตรงกับเครื่องของเรา

network:
  version: 2
  renderer: networkd
  ethernets:
    ens33:
      addresses:
        - 192.168.10.10/24
      routes:
        - to: default
          via: 192.168.10.1
      nameservers:
        addresses:
          - 1.1.1.1
          - 8.8.8.8

ทดสอบและ Apply ค่า Netplan

# ทดสอบ syntax และ apply แบบปลอดภัย
sudo netplan try

ถ้าใช้งานได้ ให้กด Enter เพื่อยืนยัน

ตรวจสอบ IP อีกครั้ง

ip a show ens33
ip route

ขั้นตอนที่ 2: อัปเดตระบบก่อนติดตั้ง

ก่อนติดตั้ง Kea ควรอัปเดตแพ็กเกจให้เป็นรุ่นล่าสุด โดยเฉพาะระบบที่เกี่ยวกับ Network Service

sudo apt update
sudo apt upgrade -y

Ubuntu มี Security Notice เกี่ยวกับ Kea DHCP เมื่อวันที่ 8 มิถุนายน 2026 โดยระบุว่าบางรุ่นของ Kea อาจถูกทำให้ crash ได้จาก crafted messages และหลังอัปเดตอาจต้อง restart Kea service ดังนั้นการอัปเดตก่อนใช้งานจริงเป็นขั้นตอนที่ไม่ควรข้าม


ขั้นตอนที่ 3: ติดตั้ง Kea DHCP Server

ติดตั้งแพ็กเกจ kea

sudo apt install kea -y

ตรวจสอบว่า service ถูกติดตั้งแล้ว

systemctl status kea-dhcp4-server

ตรวจสอบเวอร์ชัน Kea ที่ติดตั้งจริงในเครื่อง

kea-dhcp4 -v

หมายเหตุ: เอกสาร Ubuntu แนะนำให้ติดตั้งด้วยคำสั่ง sudo apt install kea และระบุว่าไฟล์ตั้งค่าหลักของ DHCPv4 คือ /etc/kea/kea-dhcp4.conf


ขั้นตอนที่ 4: Backup ไฟล์ Config เดิม

ก่อนแก้ไขไฟล์หลัก ให้สำรองไว้ก่อน

# สำรองไฟล์ config เดิม เผื่อย้อนกลับ
sudo cp /etc/kea/kea-dhcp4.conf /etc/kea/kea-dhcp4.conf.bak

เปิดไฟล์ตั้งค่า

sudo nano /etc/kea/kea-dhcp4.conf

ขั้นตอนที่ 5: ตั้งค่า DHCP Pool

ล้างค่าตัวอย่างเดิม แล้วใส่ config นี้

{
  "Dhcp4": {
    "interfaces-config": {
      "interfaces": [ "ens33" ]
    },

    "control-socket": {
      "socket-type": "unix",
      "socket-name": "/run/kea/kea4-ctrl-socket"
    },

    "lease-database": {
      "type": "memfile",
      "persist": true,
      "name": "/var/lib/kea/kea-leases4.csv",
      "lfc-interval": 3600
    },

    "valid-lifetime": 3600,
    "renew-timer": 900,
    "rebind-timer": 1800,

    "subnet4": [
      {
        "id": 1,
        "subnet": "192.168.10.0/24",
        "pools": [
          {
            "pool": "192.168.10.100 - 192.168.10.200"
          }
        ],
        "option-data": [
          {
            "name": "routers",
            "data": "192.168.10.1"
          },
          {
            "name": "domain-name-servers",
            "data": "1.1.1.1, 8.8.8.8"
          },
          {
            "name": "domain-name",
            "data": "lab.local"
          }
        ]
      }
    ]
  }
}

อธิบายค่าหลัก:

ค่า ความหมาย
interfaces Interface ที่ Kea จะฟัง DHCP Request
subnet Network ที่จะให้บริการ DHCP
pool ช่วง IP ที่แจกให้ Client
routers Default Gateway
domain-name-servers DNS Server
valid-lifetime อายุ Lease หน่วยเป็นวินาที

แนะนำ Screenshot: หน้าจอ config /etc/kea/kea-dhcp4.conf


ขั้นตอนที่ 6: ตรวจสอบ Config และ Restart Service

ทดสอบ config ก่อน restart

# ตรวจสอบว่า config ของ Kea อ่านได้หรือไม่
sudo kea-dhcp4 -t /etc/kea/kea-dhcp4.conf

ถ้าไม่มี error ให้ restart service

sudo systemctl restart kea-dhcp4-server

เปิดให้ service ทำงานอัตโนมัติหลัง Boot

sudo systemctl enable kea-dhcp4-server

ตรวจสอบสถานะ

systemctl status kea-dhcp4-server

ดู Log แบบ Real-time

journalctl -u kea-dhcp4-server -f

Ubuntu ระบุว่าสามารถอ่าน log ของ kea-dhcp4-server ได้ด้วย journalctl -u kea-dhcp4-server และเมื่อ reconfiguration สำเร็จจะมี log ลักษณะ DHCP4_DYNAMIC_RECONFIGURATION_SUCCESS


ขั้นตอนที่ 7: เปิด Firewall สำหรับ DHCP

ถ้าเปิดใช้งาน UFW ให้ Allow UDP port 67 บน interface ที่ใช้แจก DHCP

# อนุญาต DHCP request เข้า interface ens33
sudo ufw allow in on ens33 to any port 67 proto udp

ตรวจสอบสถานะ UFW

sudo ufw status verbose

⚠️ ไม่แนะนำให้ปิด Firewall ทั้งระบบเพื่อแก้ปัญหา DHCP ควรเปิดเฉพาะ port และ interface ที่จำเป็นเท่านั้น


ขั้นตอนที่ 8: ทดสอบจากเครื่อง Client

ฝั่ง Client ให้ตั้ง Network เป็น DHCP / Automatic แล้ว reconnect network

บน Ubuntu Client ทดสอบได้ด้วยคำสั่ง

ip a
ip route
resolvectl status

ควรเห็นว่า Client ได้ IP อยู่ในช่วง

192.168.10.100 - 192.168.10.200

ทดสอบ Ping Gateway

ping -c 4 192.168.10.1

ทดสอบ DNS

ping -c 4 google.com

ตรวจสอบ Lease บนฝั่ง Server

sudo cat /var/lib/kea/kea-leases4.csv

หรือดู Log ขณะ Client ขอ IP

journalctl -u kea-dhcp4-server -f

การ Fix IP Address ให้ Client ตาม MAC Address

กรณีต้องการให้เครื่องบางเครื่องได้ IP เดิมเสมอ เช่น Printer, NAS, Server หรือ ESP32 Gateway ให้เพิ่ม reservations ใน subnet เดิม

ตัวอย่างเพิ่มเครื่อง Printer ให้ได้ IP 192.168.10.50

{
  "Dhcp4": {
    "interfaces-config": {
      "interfaces": [ "ens33" ]
    },

    "control-socket": {
      "socket-type": "unix",
      "socket-name": "/run/kea/kea4-ctrl-socket"
    },

    "lease-database": {
      "type": "memfile",
      "persist": true,
      "name": "/var/lib/kea/kea-leases4.csv",
      "lfc-interval": 3600
    },

    "valid-lifetime": 3600,
    "renew-timer": 900,
    "rebind-timer": 1800,

    "subnet4": [
      {
        "id": 1,
        "subnet": "192.168.10.0/24",
        "pools": [
          {
            "pool": "192.168.10.100 - 192.168.10.200"
          }
        ],
        "option-data": [
          {
            "name": "routers",
            "data": "192.168.10.1"
          },
          {
            "name": "domain-name-servers",
            "data": "1.1.1.1, 8.8.8.8"
          },
          {
            "name": "domain-name",
            "data": "lab.local"
          }
        ],
        "reservations": [
          {
            "hw-address": "08:00:27:AA:BB:CC",
            "ip-address": "192.168.10.50",
            "hostname": "printer01"
          }
        ]
      }
    ]
  }
}

หลังแก้ไขให้ทดสอบและ restart

sudo kea-dhcp4 -t /etc/kea/kea-dhcp4.conf
sudo systemctl restart kea-dhcp4-server

การแก้ไขปัญหาที่พบบ่อย

1. Service Start ไม่ขึ้น

ตรวจสอบ syntax config

sudo kea-dhcp4 -t /etc/kea/kea-dhcp4.conf

ดู log

journalctl -u kea-dhcp4-server -n 50

สาเหตุที่พบบ่อยคือ JSON ผิด เช่น ลืม comma, วงเล็บไม่ครบ หรือชื่อ interface ไม่ตรงกับเครื่องจริง


2. Client ไม่ได้ IP

ตรวจสอบว่า Kea ฟังอยู่บน interface ถูกตัว

ip a
grep interfaces /etc/kea/kea-dhcp4.conf

ตรวจสอบว่ามี DHCP Server ตัวอื่นในวงเดียวกันหรือไม่

sudo apt install nmap -y
sudo nmap --script broadcast-dhcp-discover -e ens33

⚠️ ใช้คำสั่งนี้เฉพาะในเครือข่ายที่เราดูแลหรือได้รับอนุญาตเท่านั้น


3. ได้ IP แต่เข้า Internet ไม่ได้

ตรวจสอบ Gateway และ DNS ที่แจกให้ Client

ip route
resolvectl status

ถ้า Ubuntu Server เป็นแค่ DHCP Server แต่ไม่ได้เป็น Router ค่า routers ควรชี้ไปที่ Router จริง เช่น 192.168.10.1


4. แก้ Config แล้ว Client ยังได้ IP เดิม

ลบ lease เดิมหรือให้ Client renew DHCP ใหม่

บน Linux Client

sudo dhclient -r
sudo dhclient

หรือปิด/เปิด Network ใหม่บน Client


สรุป

การติดตั้ง DHCP Server บน Ubuntu Server 26.04 ควรใช้ ISC Kea เป็นแนวทางหลักสำหรับระบบใหม่ เพราะเป็น DHCP Server รุ่นใหม่ที่ Ubuntu แนะนำ และเหมาะกับ Network Environment ปัจจุบันมากกว่า isc-dhcp-server เดิม

ขั้นตอนสำคัญคือ ตั้ง Static IP ให้ Server, ติดตั้ง kea, แก้ไฟล์ /etc/kea/kea-dhcp4.conf, ตรวจสอบ config, restart service และทดสอบจาก Client ให้ได้ IP ตามช่วงที่กำหนด หากนำไปใช้จริง ควรแยก VLAN หรือปิด DHCP Server เดิมก่อน เพื่อป้องกันการแจก IP ซ้อนกัน



Write by Dr.Arnut Ruttanatirakul
SysAdmin Knowledge
https://www.sysadmin.in.th
June 10, 2026