DHCP Server (Kea DHCP & ISC-DHCP)
DHCP Server di Linux (Kea DHCPv4 & ISC-DHCP)
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 sekolah tidak perlu memasukkan konfigurasi IP manual (static) ke puluhan hingga ratusan komputer di laboratorium TKJ.
Waktu Praktikum: 4 x 45 Menit
Tingkat SMK: XI / XII TJKT (TKJ) — Kurikulum Merdeka
Software Utama:
kea-dhcp4-server (Standar Industri Modern) & isc-dhcp-server (Legacy)1. Evolusi DHCP Server: Dari ISC-DHCP ke Kea DHCP
Sebelum memulai praktikum, penting bagi siswa TKJ memahami perkembangan teknologi DHCP Server di dunia Linux:
[ Era 1999 - 2022 ] ─────────────────────────► [ Era 2022 - Sekarang & Masa Depan ]
isc-dhcp-server kea-dhcp4-server
• Format config teks klasik • Format konfigurasi JSON modern
• File lease teks datar • Backend Database (Memfile CSV, MySQL, PostgreSQL)
• Monolithic (harus restart penuh) • Modular Daemons & Hook Libraries
• Status: End of Life (EOL) oleh ISC • Status: Standar Aktif Debian 12 & Ubuntu 24.04
Mengapa Beralih ke Kea DHCP?
Pengembang resmi ISC (Internet Systems Consortium) secara resmi mengumumkan penghentian (End-of-Life) untukisc-dhcp-serverpada akhir tahun 2022. Penerusnya adalah Kea DHCP, sebuah mesin DHCP generasi baru dengan performa tinggi, struktur file konfigurasi berbasis JSON yang mudah diotomasi (DevOps), serta integrasi REST API.
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. Praktikum Utama: Kea DHCPv4 Server (kea-dhcp4-server)
Langkah 1: Instalasi Paket Kea DHCPv4
Jalankan perintah update repository dan pasang paket kea-dhcp4-server:
sudo apt update
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.
Langkah 2: Backup File Konfigurasi Bawaan
Cadangkan file konfigurasi asli sebelum melakukan penyesuaian:
sudo cp /etc/kea/kea-dhcp4.conf /etc/kea/kea-dhcp4.conf.bak
Langkah 3: Konfigurasi File /etc/kea/kea-dhcp4.conf
File bawaan Kea berisi lebih dari 350 baris komentar contoh. Untuk mempermudah praktikum siswa, Anda dapat memilih salah satu dari dua metode berikut:
Metode A: Copy-Paste Cepat Sekali Klik (Sangat Direkomendasikan)
Klik tombol Copy di pojok kanan atas blok berikut, lalu paste (klik kanan / Ctrl+Shift+V) langsung ke terminal Linux/SSH 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 yang secara otomatis menulis konfigurasi bersih ke file /etc/kea/kea-dhcp4.conf tanpa perlu repot menghapus ratusan baris di editor nano satu per satu.Metode B: Edit Manual Menggunakan Editor nano
Jika Anda ingin mengedit secara manual, kosongkan isi file bawaan terlebih dahulu agar bersih:
# Kosongkan file bawaan secara instan
sudo truncate -s 0 /etc/kea/kea-dhcp4.conf
# Buka dengan editor nano
sudo nano /etc/kea/kea-dhcp4.conf
Salin dan tempel kode JSON berikut ke dalam nano:
{
"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 dengan menekan Ctrl + O, tekan Enter, lalu keluar dengan Ctrl + X.
Penjelasan Parameter Konfigurasi Kea
| Bagian Parameter | Fungsi dan Keterangan |
|---|---|
interfaces-config.interfaces | Daftar interface kartu jaringan server yang mendengarkan paket request DHCP (contoh: enp0s8). |
control-socket | Socket komunikasi lokal untuk daemon Kea (wajib menggunakan socket-type: "unix"). |
lease-database | Tempat penyimpanan catatan peminjaman IP client dalam format file CSV memfile. |
valid-lifetime | Masa berlaku peminjaman IP (detik). Nilai 43200 setara dengan 12 jam. |
subnet4.subnet | Alamat subnet jaringan yang dilayani (192.168.50.0/24). |
subnet4.pools | Rentang IP yang didistribusikan secara acak/dinamis ke client (192.168.50.100 - 192.168.50.200). |
option-data: routers | Alamat IP default gateway yang diberikan ke client (192.168.50.1). |
option-data: domain-name-servers | Alamat IP DNS server lokal dan publik yang dikirim ke client. |
reservations | Static Lease / IP Reservation: Mengunci IP spesifik ke perangkat tertentu berdasarkan MAC Address client. |
Langkah 4: Validasi Sintaks Konfigurasi Kea
Sebelum me-restart service, periksa apakah file konfigurasi JSON sudah valid dan bebas dari kesalahan tanda baca:
sudo kea-dhcp4 -t /etc/kea/kea-dhcp4.conf
Output jika konfigurasi valid:
Configuration file /etc/kea/kea-dhcp4.conf is valid.
DHCP4_PARSER_COMMIT_FAIL atau Invalid 'socket-type', periksa kembali blok control-socket. Pastikan "socket-type" bernilai "unix", bukan "stdout".Langkah 5: Menjalankan dan Mengaktifkan Layanan Kea
Setelah konfigurasi dinyatakan valid, jalankan service Kea DHCPv4:
# 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:
● 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
Langkah 6: Monitoring Lease Aktif di Kea
Kea DHCP menyimpan data peminjaman IP client dalam format file CSV yang rapi dan mudah dibaca:
# Melihat daftar 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 pertukaran paket DORA client secara langsung (realtime log):
sudo journalctl -u kea-dhcp4-server -f
5. Praktikum Pembanding: ISC-DHCP Server (isc-dhcp-server)
Bagian ini disediakan sebagai referensi praktikum komparatif untuk kurikulum lama atau materi ujian sertifikasi yang masih menyertakan ISC DHCP:
A. Instalasi Paket ISC
sudo apt update
sudo apt install isc-dhcp-server -y
B. Konfigurasi Interface di /etc/default/isc-dhcp-server
sudo nano /etc/default/isc-dhcp-server
Isi baris:
INTERFACESv4="enp0s8"
INTERFACESv6=""
C. Konfigurasi Scope di /etc/dhcp/dhcpd.conf
sudo nano /etc/dhcp/dhcpd.conf
Tambahkan konfigurasi:
default-lease-time 43200;
max-lease-time 86400;
authoritative;
ddns-update-style none;
subnet 192.168.50.0 netmask 255.255.255.0 {
range 192.168.50.100 192.168.50.200;
option routers 192.168.50.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.50.1, 8.8.8.8;
option domain-name "smk-tkj.sch.id";
}
# Static Lease
host pc-guru {
hardware ethernet 08:00:27:aa:bb:cc;
fixed-address 192.168.50.10;
}
D. Uji dan Restart Service
# Validasi sintaks
sudo dhcpd -t -cf /etc/dhcp/dhcpd.conf
# Restart service
sudo systemctl restart isc-dhcp-server
sudo systemctl status isc-dhcp-server
6. Pengujian dari Sisi Client
Lakukan pengujian dari mesin client yang berada dalam satu switch virtual:
Skenario A: Client Linux (Debian / Ubuntu)
- Pastikan interface client diset ke DHCP Client:
Pada file
/etc/network/interfaces:auto enp0s3 iface enp0s3 inet dhcp - Minta pembaruan IP dari server Kea:
# Lepaskan IP lama (Release) sudo dhclient -r enp0s3 # Ajukan permintaan IP baru (Discover/Request) sudo dhclient -v enp0s3 - Verifikasi IP dan Gateway yang didapat:Pastikan IP yang didapat berada dalam rentang
ip a show enp0s3 ip route show192.168.50.100–200dengan default gateway192.168.50.1.
Skenario B: Client Windows
- Buka Command Prompt (CMD) sebagai Administrator.
- Jalankan perintah permohonan IP:
ipconfig /release ipconfig /renew - Tampilkan rincian konfigurasi:
ipconfig /all - Pastikan baris DHCP Server menunjuk ke IP server Kea Anda (
192.168.50.1).
Skenario C: Uji Static Reservation
Hubungkan perangkat client yang MAC Address-nya telah didaftarkan pada blok "reservations" (misal MAC 08:00:27:aa:bb:cc). Pastikan client tersebut selalu mendapatkan IP tetap 192.168.50.10 dan tidak mendapatkan IP acak dari pool.
7. Tabel Perbandingan: Kea DHCP vs ISC DHCP
| Kriteria Analisis | Kea DHCPv4 (kea-dhcp4-server) | ISC DHCP (isc-dhcp-server) |
|---|---|---|
| Status Maintenance | Aktif dikembangkan (Masa Depan) | EOL (End of Life sejak 2022) |
| Format File Config | JSON standar (/etc/kea/kea-dhcp4.conf) | Format teks custom (/etc/dhcp/dhcpd.conf) |
| Penyimpanan Lease | CSV Memfile, PostgreSQL, MySQL | Flat Text File (dhcpd.leases) |
| REST API Management | Tersedia via kea-ctrl-agent (HTTP REST) | Tidak ada (hanya OMAPI lama) |
| Performa Multi-thread | Sangat tinggi, arsitektur multi-threaded | Single-threaded, rentan bottleneck |
| Validasi Config | kea-dhcp4 -t <file.conf> | dhcpd -t -cf <file.conf> |
| Dukungan Distro Baru | Paket utama di Debian 12 & Ubuntu 24.04 | Mulai dihapus dari repo distro baru |
8. Konfigurasi Firewall Server (UFW)
Agar paket siaran DHCP client tidak diblokir oleh sistem keamanan server Linux, buka port UDP 67 dan 68:
# Izinkan port DHCP
sudo ufw allow 67/udp
sudo ufw allow 68/udp
# Atau izinkan seluruh traffic dari jaringan lokal lab
sudo ufw allow from 192.168.50.0/24
# Cek status firewall
sudo ufw status verbose
9. Troubleshooting & Analisis Masalah
| Kendala / Error | Kemungkinan Penyebab | Langkah Solusi |
|---|---|---|
| Invalid 'socket-type' parameter value stdout | Nilai socket-type pada blok control-socket salah | Ubah "socket-type": "stdout" menjadi "socket-type": "unix" serta tentukan "socket-name": "/run/kea/kea4-ctrl-socket" (atau hapus blok control-socket jika tidak memakai kea-ctrl-agent). |
kea-dhcp4-server gagal start | Kesalahan sintaks JSON (misal tanda koma berlebih) | Jalankan sudo kea-dhcp4 -t /etc/kea/kea-dhcp4.conf untuk melihat nomor baris yang salah. |
| Error: 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 mendapatkan IP (Timeout) | Firewall aktif memblokir UDP 67/68 atau beda virtual switch | Nonaktifkan sementara firewall sudo ufw disable dan pastikan kedua VM terhubung ke satu internal network yang sama. |
| Client mendapat IP tetapi beda subnet | Ada Rogue DHCP Server aktif lain di jaringan (misal VirtualBox NAT) | Matikan fitur built-in DHCP server pada virtual adapter VirtualBox. |
| Static lease tidak bekerja | Format MAC Address salah atau tertukar | Pastikan format MAC Address menggunakan huruf kecil dipisah titik dua (aa:bb:cc:dd:ee:ff). |
10. Lembar Kerja Praktikum Siswa
- Instalasi Kea: Lakukan instalasi
kea-dhcp4-serverpada OS Debian 12 Server Anda. Sertakan screenshot statussystemctl status kea-dhcp4-serveryang aktif berjalan. - Konfigurasi Scope: Konfigurasikan pool IP
192.168.50.100 - 192.168.50.150, router 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 bahwa konfigurasi Anda dinyatakan valid. - Pengujian Client Dinamis: Hubungkan client Linux atau Windows, jalankan perintah DHCP client, dan buktikan client berhasil memperoleh IP Address dalam pool.
- Static Reservation: Dapatkan MAC Address client Anda, buatkan reservasi IP permanen
192.168.50.25, dan buktikan dengan perintahip a/ipconfigbahwa client berhasil mengunci IP tersebut. - Inspeksi Lease CSV: Tampilkan isi file
/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.
Remote Server Management (OpenSSH)
Panduan praktikum konfigurasi Remote Server menggunakan OpenSSH-Server, otentikasi SSH Key, ubah port default, dan security hardening pada Debian/Ubuntu.
DHCP Server Modern (Kea DHCPv4)
Panduan praktikum instalasi dan konfigurasi DHCP Server modern menggunakan Kea DHCP (kea-dhcp4-server) di Debian 12 & Ubuntu Server. Mencakup proses DORA, konfigurasi JSON, pool scope, static lease reservation, monitoring lease CSV, dan troubleshooting.