ทำไมต้องติดตั้ง 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

