Tại sao nên chuyển sang Kea DHCP ngay bây giờ?
Cảm giác nhận alert “DHCP pool exhausted” lúc 2 giờ sáng là một cơn ác mộng. Với ISC DHCP cũ kỹ, file lease quá nặng thường xuyên gây treo service. Bạn phải restart toàn bộ dịch vụ chỉ để thay đổi một cấu hình nhỏ, làm gián đoạn kết nối của hàng ngàn thiết bị trong tích tắc.
ISC DHCP đã chính thức ngừng hỗ trợ (End of Life) từ năm 2022. Nó quá chậm chạp trước yêu cầu của hệ thống Cloud hiện đại. Kea DHCP ra đời để giải quyết bài toán đó. Kea xử lý hàng ngàn yêu cầu mỗi giây, hỗ trợ cấu hình JSON và có REST API để tự động hóa hoàn toàn. Đặc biệt, tính năng High Availability (HA) của Kea chạy cực kỳ ổn định, không còn những lỗi đồng bộ khó chịu như phiên bản tiền nhiệm.
Cài đặt Kea DHCP trên Ubuntu
Trong bài này, mình dùng Ubuntu 22.04. Kea có cấu trúc dạng module, nghĩa là bạn chỉ cần cài những gì mình thực sự sử dụng để tiết kiệm tài nguyên.
# Cập nhật và cài đặt server DHCPv4
sudo apt update
sudo apt install kea-dhcp4-server -y
Trước khi chỉnh sửa, bạn hãy sao lưu file cấu hình gốc. Việc này giúp bạn có đường lui nếu lỡ tay làm hỏng định dạng JSON:
sudo cp /etc/kea/kea-dhcp4.conf /etc/kea/kea-dhcp4.conf.bak
Hãy thử dùng cấu hình cơ bản dưới đây để server chạy được ngay. Bạn thay eth0 bằng interface thực tế (kiểm tra bằng lệnh ip a):
{
"Dhcp4": {
"interfaces-config": {
"interfaces": [ "eth0" ]
},
"control-socket": {
"socket-type": "unix",
"socket-name": "/tmp/kea4-ctrl-socket"
},
"lease-database": {
"type": "memfile",
"persist": true,
"name": "/var/lib/kea/kea-leases4.csv",
"lfc-interval": 3600
},
"subnet4": [
{
"subnet": "192.168.1.0/24",
"pools": [ { "pool": "192.168.1.100 - 192.168.1.200" } ],
"option-data": [
{ "name": "routers", "data": "192.168.1.1" },
{ "name": "domain-name-servers", "data": "8.8.8.8, 8.8.4.4" }
]
}
]
}
}
Sau khi lưu file, hãy khởi động lại dịch vụ và kiểm tra trạng thái:
sudo systemctl restart kea-dhcp4-server
sudo systemctl status kea-dhcp4-server
Sức mạnh của cấu hình JSON
Nhiều người e ngại JSON vì chỉ cần thiếu một dấu phẩy , là server sẽ báo lỗi. Tuy nhiên, JSON lại là ngôn ngữ tiêu chuẩn cho các công cụ như Ansible hay Terraform. Để tránh lỗi vặt, bạn nên dùng lệnh kea-dhcp4 -t /etc/kea/kea-dhcp4.conf để kiểm tra cú pháp trước khi restart.
Database linh hoạt
Mặc định Kea dùng memfile (file CSV) để lưu lease. Với hệ thống lớn trên 10.000 thiết bị, bạn nên chuyển sang PostgreSQL hoặc MySQL. Việc lưu lease vào database giúp truy vấn cực nhanh và cho phép nhiều server DHCP chạy song song mà không sợ xung đột dữ liệu.
Mở rộng tính năng bằng Hooks
Kea cho phép nạp thêm các thư viện (Hooks) để mở rộng tính năng. Bạn có thể thêm module High Availability để chạy hai server song song (Active-Passive hoặc Active-Active). Điều này giúp hệ thống mạng luôn thông suốt ngay cả khi một server gặp sự cố phần cứng.
"hooks-libraries": [
{
"library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_ha.so",
"parameters": {
"high-availability": [{
"name": "primary-server",
"role": "primary",
"url": "http://192.168.1.10:8000/",
"peers": [{
"name": "secondary-server",
"role": "standby",
"url": "http://192.168.1.11:8000/"
}]
}]
}
}
]
Quản lý thời gian thực qua REST API
Đây là cải tiến đáng giá nhất so với ISC DHCP. Khi bật kea-ctrl-agent, bạn có thể thay đổi cấu hình hoặc xem danh sách IP đang cấp phát mà không cần restart server. Mọi thao tác đều thực hiện qua HTTP request.
Ví dụ, lấy toàn bộ danh sách lease bằng lệnh curl:
curl -X POST -H "Content-Type: application/json" \
-d '{"command": "lease4-get-all", "service": ["dhcp4"]}' \
http://localhost:8000/
Dữ liệu trả về dạng JSON giúp bạn dễ dàng xây dựng dashboard giám sát riêng hoặc tích hợp vào hệ thống quản lý tài sản (IPAM).
Bài học từ thực tế triển khai
Tôi từng xử lý một ca nghẽn mạng nghiêm trọng do ISC DHCP server cũ bị quá tải I/O. File dhcpd.leases khi đó phình to hơn 600MB khiến mỗi lần ghi dữ liệu mất tới vài giây. Sau khi chuyển sang Kea dùng backend PostgreSQL, độ trễ phản hồi DHCP giảm từ 2 giây xuống còn dưới 50ms. Hệ thống hoạt động mượt mà ngay cả trong giờ cao điểm.
Lời khuyên cho anh em:
- Tận dụng Log: Kea ghi log rất chi tiết. Hãy dùng
journalctl -u kea-dhcp4-server -fđể theo dõi trực tiếp các thiết bị đang xin IP. - Cấu hình LFC: Luôn đặt
lfc-intervalkhoảng 3600 (1 giờ). Nó giúp dọn dẹp các bản ghi cũ, giữ cho database luôn gọn nhẹ. - Đặt IP tĩnh: Sử dụng mục
reservationstrong subnet để gán IP cố định cho server hoặc máy in dựa trên địa chỉ MAC.
Lời kết
Chuyển từ ISC DHCP sang Kea có thể khiến bạn mất chút thời gian làm quen với cú pháp mới. Tuy nhiên, hiệu năng vượt trội và khả năng quản trị qua API là những giá trị rất xứng đáng. Nếu hệ thống của bạn đang mở rộng, hãy nâng cấp lên Kea ngay để đảm bảo hạ tầng mạng luôn ổn định và dễ quản lý.

