DHCP Server Modern (Kea DHCPv4)
DHCP Server Modern di Linux (Kea DHCPv4)
DHCP (Dynamic Host Configuration Protocol) adalah protokol jaringan client-server yang bertugas mendistribusikan konfigurasi IP Address, Subnet Mask, Default Gateway, dan DNS Server secara otomatis dan dinamis kepada perangkat client yang terhubung ke jaringan lokal.
Dengan adanya DHCP Server, administrator jaringan tidak perlu memasukkan konfigurasi IP manual (static) ke puluhan hingga ratusan komputer di laboratorium komputer dan kantor sekolah.
Waktu Praktikum: 4 x 45 Menit
Tingkat SMK: XI / XII TJKT (TKJ) — Kurikulum Merdeka
Software Utama:
kea-dhcp4-server (Standar Industri Modern Masa Depan)Jika Anda membutuhkan panduan versi lawas untuk kebutuhan kurikulum lama atau ujian sertifikasi tertentu, silakan buka modul DHCP Server Classic (ISC-DHCP).
1. Mengenal Kea DHCP: Standar Baru Pengganti ISC-DHCP
Pengembang resmi ISC (Internet Systems Consortium) secara resmi mengumumkan penghentian (End-of-Life) untuk software lawas isc-dhcp-server pada akhir tahun 2022. Penerus resminya adalah Kea DHCP.
[ Software Lawas: ISC-DHCP ] [ Standar Modern: Kea DHCPv4 ]
• Format konfigurasi teks custom • Format konfigurasi standar JSON
• Database flat-text file • Database memfile CSV, MySQL, PostgreSQL
• Restart daemon penuh saat ubah data • Dukungan integrasi REST API (kea-ctrl-agent)
• Status: End of Life (2022) • Status: Aktif & Bawaan Debian 12 / Ubuntu 24
Keunggulan Utama Kea DHCP
- Format Konfigurasi JSON: Mudah dibaca, divalidasi, dan diintegrasikan dengan otomasi skrip (DevOps / Ansible / Python).
- Arsitektur Multi-thread: Mampu melayani ribuan request per detik tanpa bottleneck performa.
- Database Lease Fleksibel: Menyimpan peminjaman IP ke file CSV sederhana atau database relasional (PostgreSQL / MySQL) untuk jaringan berskala besar.
- REST Control Agent: Konfigurasi dapat diperbarui secara dinamis melalui HTTP REST API tanpa perlu memutus koneksi client.
2. Cara Kerja DHCP (Proses DORA)
Proses negosiasi alokasi IP antara Client dan Server berlangsung melalui 4 tahapan berurutan (DORA):
1. DISCOVER (Client ➔ Server)
Client yang baru terhubung mengirimkan paket broadcast DHCPDISCOVER ke alamat 255.255.255.255 melalui UDP Port 67 untuk mencari apakah ada DHCP Server yang aktif di jaringan.
2. OFFER (Server ➔ Client)
DHCP Server yang mendengar pesan tersebut merespons dengan paket DHCPOFFER (ke UDP Port 68) yang berisi tawaran IP Address kosong, subnet mask, durasi pinjaman (lease time), dan IP server itu sendiri.
3. REQUEST (Client ➔ Server)
Client menerima tawaran tersebut dan membalas dengan DHCPREQUEST, menyatakan bahwa client menyetujui dan secara resmi meminta IP yang ditawarkan tersebut.
4. ACKNOWLEDGE (Server ➔ Client)
Server mengirimkan DHCPACK (Acknowledgment) sebagai konfirmasi final. Konfigurasi dicatat dalam database lease server dan client resmi dapat menggunakan IP tersebut.
3. Topologi Virtual Lab Praktikum
Topologi yang digunakan pada virtual lab (VirtualBox / Proxmox VE / VMware):
┌────────────────────────────────┐
│ Debian 12 / Ubuntu Server │
│ Nama Host: server-asj.local │
│ Interface: enp0s8 (Internal) │
│ IP Statis: 192.168.50.1/24 │
│ Layanan : kea-dhcp4-server │
└───────────────┬────────────────┘
│
[ Virtual Switch / Internal Network: "sw-lab-tkj" ]
│
┌───────┴───────────────┬───────────────────────┐
│ │ │
┌───────┴────────────┐ ┌───────┴────────────┐ ┌───────┴────────────┐
│ Client 1 (Debian) │ │ Client 2 (Windows) │ │ Komputer Guru (PC) │
│ Mode: DHCP Client │ │ Mode: DHCP Client │ │ MAC: aa:bb:cc:... │
│ Dapat: Dinamis │ │ Dapat: Dinamis │ │ Static: .50.10 │
└────────────────────┘ └────────────────────┘ └────────────────────┘
Parameter Alokasi Jaringan
| Parameter | Nilai Konfigurasi | Keterangan |
|---|---|---|
| Interface Server | enp0s8 (atau ens33 / eth1) | Interface yang mengarah ke switch client |
| IP Address Server | 192.168.50.1 / 24 | IP Statis server sebagai Gateway jaringan |
| DHCP Pool (Range) | 192.168.50.100 – 192.168.50.200 | 101 IP dialokasikan untuk client dinamis |
| Subnet Mask | 255.255.255.0 (/24) | Subnet kelas C |
| Default Gateway | 192.168.50.1 | Router penerus traffic |
| DNS Resolver | 192.168.50.1, 8.8.8.8 | DNS Server lokal & Google Public DNS |
| Domain Search | smk-tkj.sch.id | Domain lokal jaringan sekolah |
| Lease Time | 43200 detik (12 Jam) | Waktu berlaku peminjaman IP |
enp0s8) telah diset dengan IP Statis192.168.50.1/24 (lihat materi Jobsheet 03). DHCP Server akan menolak berjalan jika interface pengampu masih berstatus DHCP Client.4. Instalasi Paket Kea DHCPv4
Jalankan perintah pembaruan repository dan instal paket kea-dhcp4-server:
# Update repository
sudo apt update
# Install paket Kea DHCPv4 Server
sudo apt install kea-dhcp4-server -y
Periksa ketersediaan service Kea setelah instalasi:
sudo systemctl status kea-dhcp4-server
Catatan: Service Kea mungkin berstatus inactive atau failed saat pertama kali terpasang karena belum disesuaikan dengan interface fisik server Anda. Hal ini wajar.
5. Konfigurasi File /etc/kea/kea-dhcp4.conf
Cadangkan file konfigurasi asli bawaan distro terlebih dahulu:
sudo cp /etc/kea/kea-dhcp4.conf /etc/kea/kea-dhcp4.conf.bak
File template bawaan Kea berisi lebih dari 350 baris komentar contoh. Anda dapat memilih salah satu dari dua metode di bawah ini untuk menerapkan konfigurasi laboratorium TKJ:
Metode A: Salin-Tempel Cepat Sekali Klik (Sangat Direkomendasikan)
Klik tombol Copy di pojok kanan atas blok berikut, lalu tempel (Paste dengan klik kanan / Ctrl+Shift+V) langsung ke terminal Linux/SSH server Anda:
cat << 'EOF' | sudo tee /etc/kea/kea-dhcp4.conf
{
"Dhcp4": {
"interfaces-config": {
"interfaces": [ "enp0s8" ]
},
"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": 43200,
"renew-timer": 21600,
"rebind-timer": 37800,
"subnet4": [
{
"id": 1,
"subnet": "192.168.50.0/24",
"pools": [
{ "pool": "192.168.50.100 - 192.168.50.200" }
],
"option-data": [
{
"name": "routers",
"data": "192.168.50.1"
},
{
"name": "domain-name-servers",
"data": "192.168.50.1, 8.8.8.8"
},
{
"name": "domain-name",
"data": "smk-tkj.sch.id"
}
],
"reservations": [
{
"hw-address": "08:00:27:aa:bb:cc",
"ip-address": "192.168.50.10",
"hostname": "pc-guru"
},
{
"hw-address": "08:00:27:11:22:33",
"ip-address": "192.168.50.20",
"hostname": "printer-lab"
}
]
}
],
"loggers": [
{
"name": "kea-dhcp4",
"output_options": [
{
"output": "stdout"
}
],
"severity": "INFO"
}
]
}
}
EOF
cat << 'EOF' | sudo tee otomatis menggantikan seluruh isi file /etc/kea/kea-dhcp4.conf dengan data konfigurasi yang bersih tanpa perlu repot menghapus ratusan baris di editor nano satu per satu.Metode B: Edit Manual Menggunakan Editor nano
Jika Anda ingin menulis secara manual di nano, kosongkan file template bawaan terlebih dahulu:
# Kosongkan file bawaan secara instan
sudo truncate -s 0 /etc/kea/kea-dhcp4.conf
# Buka file konfigurasi dengan editor nano
sudo nano /etc/kea/kea-dhcp4.conf
Salin dan tempel kode JSON konfigurasi berikut:
{
"Dhcp4": {
"interfaces-config": {
"interfaces": [ "enp0s8" ]
},
"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": 43200,
"renew-timer": 21600,
"rebind-timer": 37800,
"subnet4": [
{
"id": 1,
"subnet": "192.168.50.0/24",
"pools": [
{ "pool": "192.168.50.100 - 192.168.50.200" }
],
"option-data": [
{
"name": "routers",
"data": "192.168.50.1"
},
{
"name": "domain-name-servers",
"data": "192.168.50.1, 8.8.8.8"
},
{
"name": "domain-name",
"data": "smk-tkj.sch.id"
}
],
"reservations": [
{
"hw-address": "08:00:27:aa:bb:cc",
"ip-address": "192.168.50.10",
"hostname": "pc-guru"
},
{
"hw-address": "08:00:27:11:22:33",
"ip-address": "192.168.50.20",
"hostname": "printer-lab"
}
]
}
],
"loggers": [
{
"name": "kea-dhcp4",
"output_options": [
{
"output": "stdout"
}
],
"severity": "INFO"
}
]
}
}
Simpan file di nano: tekan Ctrl + O, tekan Enter, lalu keluar dengan Ctrl + X.
Penjelasan Parameter Penting Kea
| Bagian Parameter | Fungsi dan Keterangan |
|---|---|
interfaces-config.interfaces | Kartu jaringan server yang aktif mendengarkan paket request DHCP (enp0s8). |
control-socket | Socket komunikasi lokal untuk daemon Kea (wajib bernilai "socket-type": "unix"). |
lease-database | Tempat penyimpanan catatan alokasi IP client dalam format file CSV memfile. |
valid-lifetime | Masa berlaku sewa IP (detik). 43200 setara dengan 12 jam. |
subnet4.subnet | Alamat subnet jaringan yang dilayani (192.168.50.0/24). |
subnet4.pools | Rentang alokasi IP dinamis untuk client (192.168.50.100 - 192.168.50.200). |
option-data: routers | Alamat IP default gateway yang dikirim ke client (192.168.50.1). |
option-data: domain-name-servers | Alamat IP DNS server yang dikirim ke client. |
reservations | Static Lease / IP Reservation: Mempermanenkan IP tertentu ke perangkat client berdasarkan MAC Address. |
6. Validasi Sintaks & Menjalankan Service
A. Uji Validitas Konfigurasi JSON Kea
Gunakan perintah bawaan Kea untuk memeriksa kebenaran struktur file konfigurasi sebelum me-restart service:
sudo kea-dhcp4 -t /etc/kea/kea-dhcp4.conf
Output jika konfigurasi valid:
Configuration file /etc/kea/kea-dhcp4.conf is valid.
B. Menjalankan & Mengaktifkan Layanan
# Restart layanan Kea DHCPv4
sudo systemctl restart kea-dhcp4-server
# Aktifkan auto-start saat booting
sudo systemctl enable kea-dhcp4-server
# Periksa status operasional
sudo systemctl status kea-dhcp4-server
Output status yang diharapkan (Active: running):
● kea-dhcp4-server.service - Kea DHCPv4 Server
Loaded: loaded (/lib/systemd/system/kea-dhcp4-server.service; enabled; preset: enabled)
Active: active (running) since Wed 2026-09-09 10:30:00 WIB; 10s ago
Main PID: 2841 (kea-dhcp4)
Tasks: 4 (limit: 2322)
Memory: 6.8M
CPU: 42ms
CGroup: /system.slice/kea-dhcp4-server.service
└─2841 /usr/sbin/kea-dhcp4 -c /etc/kea/kea-dhcp4.conf
7. Monitoring Lease Database & Realtime Log
Kea DHCP menyimpan data peminjaman IP client dalam format file CSV yang rapi:
# Memeriksa data client yang sedang meminjam IP
cat /var/lib/kea/kea-leases4.csv
Contoh tampilan isi file lease Kea:
address,hwaddr,client_id,valid_lifetime,expire,subnet_id,fqdn_fwd,fqdn_rev,hostname,state
192.168.50.100,08:00:27:fe:12:34,,43200,1757425800,1,0,0,debian-client,0
192.168.50.10,08:00:27:aa:bb:cc,,43200,1757425800,1,0,0,pc-guru,0
Untuk memantau aktivitas proses pertukaran paket DORA client secara realtime:
sudo journalctl -u kea-dhcp4-server -f
8. Pengujian dari Sisi Client
Skenario A: Client Linux (Debian / Ubuntu)
- Pastikan interface client diatur ke mode DHCP Client pada
/etc/network/interfaces:auto enp0s3 iface enp0s3 inet dhcp - Minta alokasi IP baru dari server Kea:
# Lepas IP lama (Release) sudo dhclient -r enp0s3 # Minta IP baru (Discover/Request) sudo dhclient -v enp0s3 - Periksa IP dan Gateway yang didapatkan:
ip a show enp0s3 ip route show
Skenario B: Client Windows
- Buka Command Prompt (CMD).
- Jalankan perintah permohonan IP:
ipconfig /release ipconfig /renew ipconfig /all - Pastikan baris DHCP Server menunjuk ke IP server Kea (
192.168.50.1).
Skenario C: Uji Static Reservation
Hubungkan perangkat client dengan MAC Address yang telah didaftarkan pada blok "reservations" (misal 08:00:27:aa:bb:cc). Pastikan perangkat tersebut selalu mendapatkan IP tetap 192.168.50.10.
9. Konfigurasi Firewall Server (UFW)
Jika server mengaktifkan UFW, buka port traffic protokol DHCP (UDP 67 dan 68):
# Izinkan port DHCP
sudo ufw allow 67/udp
sudo ufw allow 68/udp
# Atau izinkan seluruh traffic dari jaringan lab
sudo ufw allow from 192.168.50.0/24
# Cek status firewall
sudo ufw status verbose
10. Troubleshooting Error Umum Kea
| Pesan Error / Kendala | Kemungkinan Penyebab | Langkah Solusi |
|---|---|---|
| Invalid 'socket-type' parameter value stdout | Parameter socket-type pada blok control-socket salah isi | Ganti "socket-type": "stdout" menjadi "socket-type": "unix" dan sertakan "socket-name": "/run/kea/kea4-ctrl-socket". |
kea-dhcp4-server gagal start | Kesalahan sintaks JSON (misal tanda koma trailing) | Jalankan sudo kea-dhcp4 -t /etc/kea/kea-dhcp4.conf untuk melihat baris yang salah. |
| Failed to open socket on interface | Nama interface di config salah atau IP belum diset statis | Pastikan interface fisik aktif dengan IP statis 192.168.50.1 menggunakan perintah ip a. |
| Client tidak dapat IP (Timeout) | Firewall memblokir UDP 67/68 atau beda switch virtual | Nonaktifkan sementara firewall sudo ufw disable dan pastikan kedua VM berada pada jaringan internal yang sama. |
| Client dapat IP tapi salah subnet | Ada DHCP Server lain aktif (misal DHCP VirtualBox) | Matikan DHCP server bawaan pada adapter virtualbox Anda. |
11. Lembar Kerja Praktikum Siswa
- Instalasi Kea: Lakukan instalasi
kea-dhcp4-serverpada Debian 12 Server. Sertakan screenshotsystemctl status kea-dhcp4-serveryang aktif berjalan. - Konfigurasi Scope: Konfigurasikan pool IP
192.168.50.100 - 192.168.50.150, gateway192.168.50.1, DNS192.168.50.1, 8.8.8.8, dan domainsmk-tkj.sch.id. Tunjukkan isi file/etc/kea/kea-dhcp4.conf. - Uji Validasi JSON: Jalankan perintah
kea-dhcp4 -t /etc/kea/kea-dhcp4.confdan lampirkan bukti konfigurasi Anda valid. - Pengujian Client Dinamis: Hubungkan 1 client VM, perbarui IP via DHCP, dan buktikan client memperoleh IP dari pool.
- Static Reservation: Dapatkan MAC Address client Anda, tetapkan reservasi IP
192.168.50.25, dan buktikan client berhasil mengunci IP tersebut. - Inspeksi Database Lease: Tampilkan output
cat /var/lib/kea/kea-leases4.csvyang memuat riwayat peminjaman IP client Anda.
Sudah Selesai Mempelajari Modul Ini?
Tandai modul ini untuk mencatat progress belajar Anda.
DHCP Server (Kea DHCP & ISC-DHCP)
Panduan praktikum instalasi dan konfigurasi DHCP Server modern menggunakan Kea DHCP (kea-dhcp4-server) dan ISC DHCP di Debian 12 & Ubuntu Server. Mencakup proses DORA, konfigurasi JSON, pool scope, static lease reservation, monitoring lease CSV, dan troubleshooting.
DHCP Server Classic (ISC-DHCP)
Panduan praktikum instalasi dan konfigurasi DHCP Server klasik menggunakan isc-dhcp-server di Debian & Ubuntu Server. Mencakup penyesuaian blok subnet "a slightly different", konfigurasi interface, static lease reservation, dan troubleshooting.