ABDURROZAK
HOME ABOUT ME MICROSITE KONTAK PERSEMBAHAN HELP
ABDURROZAK.MY.ID // DEBIAN LINUX SERVER FUNDAMENTAL

DNS & DHCPSERVER

Volume 13 dari seri Debian Linux Server Fundamental. Panduan komprehensif membangun DNS dan DHCP server di Debian. Setiap command dan script dijelaskan detail dengan penjelasan per baris. Dari konsep DNS, forward lookup, reverse lookup, konfigurasi DNS server, konsep DHCP, DHCP scope, DHCP reservation, hingga testing client.

VOLUME13 / 17
SUB-BAB8
BACA90 MENIT
DNS & DHCP100%
ABDUR ROZAK, S.Kom. Web Developer & Network Educator - abdurrozak.my.id
VOLUME 13 / 17

MEMBANGUN DNS DAN DHCP SERVER

Panduan lengkap DNS & DHCP Server di Debian Linux. 8 sub-bab mencakup konsep DNS, forward lookup, reverse lookup, konfigurasi DNS server (BIND9), konsep DHCP, DHCP scope, DHCP reservation, hingga testing client. Setiap command dan script disertai penjelasan detail per baris.
SUB-BAB8 LEVELDNS & DHCP WAKTU90 MENIT
01
SUB-BAB 01 KONSEP

KONSEP DNS

Apa Itu DNS?

DNS (Domain Name System) adalah sistem yang menerjemahkan nama domain (seperti google.com) ke IP address (seperti 142.250.1.100). DNS berfungsi seperti buku telepon internet yang memungkinkan kita mengakses website dengan nama domain yang mudah diingat, bukan dengan IP address yang sulit diingat.

Cara Kerja DNS

1
DNS RESOLUTION PROCESS

Langkah 1: User mengetik nama domain (misal: www.example.com) di browser

Langkah 2: Browser mengirim query DNS ke DNS server lokal

Langkah 3: DNS server lokal mengecek cache lokal

Langkah 4: Jika tidak ada di cache, query diteruskan ke root DNS server

Langkah 5: Root server mengarahkan ke TLD (Top Level Domain) server

Langkah 6: TLD server mengarahkan ke authoritative DNS server untuk domain

Langkah 7: Authoritative server mengembalikan IP address

Langkah 8: DNS server lokal menyimpan hasil di cache dan mengembalikan ke browser

Langkah 9: Browser mengakses website menggunakan IP address

DNS Record Types

RECORD TYPEFUNGSICONTOH
AIPv4 addressexample.com → 192.168.1.1
AAAAIPv6 addressexample.com → 2001:db8::1
CNAMECanonical name (alias)www.example.com → example.com
MXMail exchangeexample.com → mail.example.com
TXTText recordSPF, DKIM, verification
NSName serverexample.com → ns1.example.com
PTRPointer (reverse DNS)1.168.192.in-addr.arpa → example.com
SOAStart of AuthorityInformasi authoritative server

DNS Server Types

ROOT SERVER
Root DNS server (13 root servers worldwide)
TLD SERVER
Top Level Domain server (.com, .org, .net)
AUTHORITATIVE
Authoritative untuk domain tertentu
RECURSIVE
Recursive resolver (ISP DNS)
CACHING
Caching DNS server
FORWARDING
Forwarding DNS server
TIPS: DNS menggunakan port 53 (UDP untuk query, TCP untuk transfer zone). DNS cache mengurangi latency dan beban pada authoritative server.
KOMPETENSI SUB-BAB 01
  • Memahami konsep DNS dan cara kerjanya
  • Memahami DNS record types
  • Memahami DNS server types
  • Memahami DNS resolution process
02
SUB-BAB 02 FORWARD

FORWARD LOOKUP

Apa Itu Forward Lookup?

Forward lookup adalah proses menerjemahkan nama domain ke IP address. Ini adalah proses DNS yang paling umum digunakan. Ketika Anda mengetik www.google.com di browser, browser melakukan forward lookup untuk mendapatkan IP address Google.

Testing Forward Lookup

bash
# Forward lookup dengan nslookup admin@server:~$ nslookup www.google.com Server: 8.8.8.8 Address: 8.8.8.8#53 Non-authoritative answer: Name: www.google.com Address: 142.250.1.100 # Forward lookup dengan dig admin@server:~$ dig www.google.com ; <<>> DiG 9.18 <<>> www.google.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345 ;; ANSWER SECTION: www.google.com. 300 IN A 142.250.1.100 # Forward lookup dengan host admin@server:~$ host www.google.com www.google.com has address 142.250.1.100 # Forward lookup dengan specific DNS server admin@server:~$ nslookup www.google.com 8.8.8.8 # Forward lookup dengan dig dan specific DNS server admin@server:~$ dig @8.8.8.8 www.google.com # Forward lookup dengan verbose admin@server:~$ dig www.google.com +trace

Forward Lookup Record Types

bash
# A record (IPv4) admin@server:~$ dig www.google.com A ;; ANSWER SECTION: www.google.com. 300 IN A 142.250.1.100 # AAAA record (IPv6) admin@server:~$ dig www.google.com AAAA ;; ANSWER SECTION: www.google.com. 300 IN AAAA 2404:6800:4003:c04::64 # MX record (Mail Exchange) admin@server:~$ dig google.com MX ;; ANSWER SECTION: google.com. 600 IN MX 10 smtp.google.com. # NS record (Name Server) admin@server:~$ dig google.com NS ;; ANSWER SECTION: google.com. 600 IN NS ns1.google.com. # TXT record admin@server:~$ dig google.com TXT ;; ANSWER SECTION: google.com. 300 IN TXT "v=spf1 include:_spf.google.com ~all" # SOA record (Start of Authority) admin@server:~$ dig google.com SOA ;; ANSWER SECTION: google.com. 60 IN SOA ns1.google.com. dns-admin.google.com. 123456789 900 900 1800 60
TIPS: Gunakan dig untuk query DNS yang detail, nslookup untuk query sederhana, dan host untuk query cepat. Gunakan dig +trace untuk melihat full resolution process.
KOMPETENSI SUB-BAB 02
  • Memahami konsep forward lookup
  • Mampu testing forward lookup dengan nslookup, dig, host
  • Mampu query berbagai record types (A, AAAA, MX, NS, TXT, SOA)
  • Mampu menggunakan dig +trace untuk tracing
03
SUB-BAB 03 REVERSE

REVERSE LOOKUP

Apa Itu Reverse Lookup?

Reverse lookup adalah kebalikan dari forward lookup - menerjemahkan IP address ke nama domain. Reverse lookup menggunakan PTR (Pointer) record dan menggunakan domain special in-addr.arpa untuk IPv4 dan ip6.arpa untuk IPv6.

Testing Reverse Lookup

bash
# Reverse lookup dengan nslookup admin@server:~$ nslookup 142.250.1.100 Server: 8.8.8.8 Address: 8.8.8.8#53 Non-authoritative answer: 100.1.250.142.in-addr.arpa name = mrs09s14-in-f4.1e100.net. # Reverse lookup dengan dig admin@server:~$ dig -x 142.250.1.100 ; <<>> DiG 9.18 <<>> -x 142.250.1.100 ;; ANSWER SECTION: 100.1.250.142.in-addr.arpa. 300 IN PTR mrs09s14-in-f4.1e100.net. # Reverse lookup dengan host admin@server:~$ host 142.250.1.100 100.1.250.142.in-addr.arpa domain name pointer mrs09s14-in-f4.1e100.net. # Reverse lookup dengan specific DNS server admin@server:~$ nslookup 142.250.1.100 8.8.8.8 # Reverse lookup dengan dig dan specific DNS server admin@server:~$ dig @8.8.8.8 -x 142.250.1.100 # Reverse lookup untuk IPv6 admin@server:~$ dig -x 2404:6800:4003:c04::64 # Reverse lookup dengan verbose admin@server:~$ dig -x 142.250.1.100 +trace

PTR Record

bash
# PTR record query admin@server:~$ dig -x 8.8.8.8 PTR ;; ANSWER SECTION: 8.8.8.8.in-addr.arpa. 21600 IN PTR dns.google. # PTR record untuk IPv6 admin@server:~$ dig -x 2001:4860:4860::8888 PTR ;; ANSWER SECTION: 8.8.8.8.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.6.8.4.0.0.6.8.4.1.0.0.2.ip6.arpa. 21600 IN PTR dns.google. # PTR record dengan specific DNS server admin@server:~$ dig @8.8.8.8 -x 8.8.8.8 PTR # PTR record dengan verbose admin@server:~$ dig -x 8.8.8.8 PTR +trace
TIPS: Reverse lookup penting untuk email server (SPF, DKIM), mail server validation, dan network troubleshooting. Banyak mail server menolak email dari server yang tidak memiliki reverse DNS.
KOMPETENSI SUB-BAB 03
  • Memahami konsep reverse lookup
  • Mampu testing reverse lookup dengan nslookup, dig, host
  • Mampu query PTR record untuk IPv4 dan IPv6
  • Memahami pentingnya reverse lookup untuk email
04
SUB-BAB 04 DNS SERVER

KONFIGURASI DNS SERVER

Instalasi BIND9

bash
# Update package list admin@server:~$ sudo apt update # Install BIND9 admin@server:~$ sudo apt install bind9 bind9utils bind9-doc # Start BIND9 service admin@server:~$ sudo systemctl start bind9 # Enable BIND9 start on boot admin@server:~$ sudo systemctl enable bind9 # Cek status BIND9 admin@server:~$ sudo systemctl status bind9 # Cek versi BIND9 admin@server:~$ named -v # Restart BIND9 admin@server:~$ sudo systemctl restart bind9 # Reload BIND9 (tanpa restart) admin@server:~$ sudo rndc reload

Konfigurasi BIND9

bash
# Edit main configuration admin@server:~$ sudo nano /etc/bind/named.conf # Include files include "/etc/bind/named.conf.options"; include "/etc/bind/named.conf.local"; include "/etc/bind/named.conf.default-zones"; # Edit options admin@server:~$ sudo nano /etc/bind/named.conf.options options { directory "/var/cache/bind"; // Forwarders (upstream DNS servers) forwarders { 8.8.8.8; 8.8.4.4; }; // Forward policy forward first; // DNSSEC validation dnssec-validation auto; // Listen on specific interfaces listen-on { any; }; // Allow queries from specific networks allow-query { any; }; // Allow recursion recursion yes; }; # Edit local configuration admin@server:~$ sudo nano /etc/bind/named.conf.local // Forward zone for example.com zone "example.com" { type master; file "/etc/bind/zones/db.example.com"; allow-update { none; }; }; // Reverse zone for 192.168.1.0/24 zone "1.168.192.in-addr.arpa" { type master; file "/etc/bind/zones/db.192.168.1"; allow-update { none; }; };

Forward Zone File

bash
# Create zones directory admin@server:~$ sudo mkdir -p /etc/bind/zones # Create forward zone file admin@server:~$ sudo nano /etc/bind/zones/db.example.com $TTL 604800 @ IN SOA ns1.example.com. admin.example.com. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; Name servers @ IN NS ns1.example.com. @ IN NS ns2.example.com. ; A records for name servers ns1 IN A 192.168.1.10 ns2 IN A 192.168.1.11 ; A records for hosts @ IN A 192.168.1.10 www IN A 192.168.1.10 mail IN A 192.168.1.11 ftp IN A 192.168.1.12 ; CNAME records ftp IN CNAME ftp.example.com. ; MX records @ IN MX 10 mail.example.com. ; TXT records @ IN TXT "v=spf1 mx ~all"

Reverse Zone File

bash
# Create reverse zone file admin@server:~$ sudo nano /etc/bind/zones/db.192.168.1 $TTL 604800 @ IN SOA ns1.example.com. admin.example.com. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; Name servers @ IN NS ns1.example.com. @ IN NS ns2.example.com. ; PTR records 10 IN PTR ns1.example.com. 11 IN PTR ns2.example.com. 10 IN PTR mail.example.com. 12 IN PTR ftp.example.com.

Set Permissions

bash
# Set ownership admin@server:~$ sudo chown -R bind:bind /etc/bind/zones # Set permissions admin@server:~$ sudo chmod -R 644 /etc/bind/zones # Check configuration admin@server:~$ sudo named-checkconf # Check zone files admin@server:~$ sudo named-checkzone example.com /etc/bind/zones/db.example.com admin@server:~$ sudo named-checkzone 1.168.192.in-addr.arpa /etc/bind/zones/db.192.168.1 # Restart BIND9 admin@server:~$ sudo systemctl restart bind9 # Check status admin@server:~$ sudo systemctl status bind9

Testing DNS Server

bash
# Test forward lookup admin@server:~$ dig @localhost www.example.com # Test reverse lookup admin@server:~$ dig @localhost -x 192.168.1.10 # Test with specific DNS server admin@server:~$ nslookup www.example.com 192.168.1.10 # Test reverse lookup with nslookup admin@server:~$ nslookup 192.168.1.10 192.168.1.10 # Test with host command admin@server:~$ host www.example.com 192.168.1.10 # Test reverse lookup with host admin@server:~$ host 192.168.1.10 192.168.1.10
TIPS: Selalu increment serial number setiap kali mengubah zone file. Gunakan format YYYYMMDDNN (YYYY=year, MM=month, DD=day, NN=sequence number).
KOMPETENSI SUB-BAB 04
  • Mampu install dan konfigurasi BIND9
  • Mampu konfigurasi forward zone
  • Mampu konfigurasi reverse zone
  • Mampu testing DNS server
05
SUB-BAB 05 KONSEP

KONSEP DHCP

Apa Itu DHCP?

DHCP (Dynamic Host Configuration Protocol) adalah protokol yang digunakan untuk memberikan IP address dan konfigurasi jaringan lainnya secara otomatis ke client. DHCP menghilangkan kebutuhan untuk konfigurasi manual IP address di setiap client.

Cara Kerja DHCP

1
DHCP PROCESS (DORA)

D - Discover: Client mengirim DHCP Discover broadcast untuk mencari DHCP server

O - Offer: DHCP server merespon dengan DHCP Offer, menawarkan IP address

R - Request: Client mengirim DHCP Request untuk meminta IP address yang ditawarkan

A - Acknowledge: DHCP server mengirim DHCP Acknowledge, mengkonfirmasi IP address

DHCP Components

COMPONENTFUNGSICONTOH
DHCP ServerMemberikan IP addressISC DHCP, ISC Kea
DHCP ClientMeminta IP addressdhclient, systemd-networkd
DHCP RelayMeneruskan DHCP requestdhcp-relay
ScopeRange IP address192.168.1.100-192.168.1.200
LeaseDurasi IP address24 hours
ReservationIP address tetap untuk MACMAC → IP mapping

DHCP Options

OPTIONCODEFUNGSI
Subnet Mask1Subnet mask
Router3Default gateway
DNS Server6DNS server
Domain Name15Domain name
Broadcast Address28Broadcast address
NTP Server42NTP server
TIPS: DHCP menggunakan port 67 (UDP) untuk server dan port 68 (UDP) untuk client. DHCP menggunakan broadcast untuk discover dan offer, unicast untuk request dan acknowledge.
KOMPETENSI SUB-BAB 05
06
SUB-BAB 06 SCOPE

DHCP SCOPE

Instalasi ISC DHCP Server

bash
# Update package list admin@server:~$ sudo apt update # Install ISC DHCP Server admin@server:~$ sudo apt install isc-dhcp-server # Start DHCP Server admin@server:~$ sudo systemctl start isc-dhcp-server # Enable DHCP Server start on boot admin@server:~$ sudo systemctl enable isc-dhcp-server # Cek status DHCP Server admin@server:~$ sudo systemctl status isc-dhcp-server # Restart DHCP Server admin@server:~$ sudo systemctl restart isc-dhcp-server # Reload DHCP Server admin@server:~$ sudo systemctl reload isc-dhcp-server

Konfigurasi DHCP Scope

bash
# Edit DHCP Server configuration admin@server:~$ sudo nano /etc/dhcp/dhcpd.conf # Global options default-lease-time 600; max-lease-time 7200; option domain-name "example.com"; option domain-name-servers 8.8.8.8, 8.8.4.4; # Subnet declaration subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.200; option routers 192.168.1.1; option domain-name-servers 8.8.8.8, 8.8.4.4; option domain-name "example.com"; } # Multiple subnets subnet 192.168.2.0 netmask 255.255.255.0 { range 192.168.2.100 192.168.2.200; option routers 192.168.2.1; option domain-name-servers 8.8.8.8, 8.8.4.4; } # Check configuration admin@server:~$ sudo dhcpd -t # Restart DHCP Server admin@server:~$ sudo systemctl restart isc-dhcp-server

DHCP Scope Options

bash
# Edit DHCP Server configuration admin@server:~$ sudo nano /etc/dhcp/dhcpd.conf # Subnet with all options subnet 192.168.1.0 netmask 255.255.255.0 { # Range of IP addresses to assign range 192.168.1.100 192.168.1.200; # Default gateway option routers 192.168.1.1; # DNS servers option domain-name-servers 8.8.8.8, 8.8.4.4; # Domain name option domain-name "example.com"; # Subnet mask option subnet-mask 255.255.255.0; # Broadcast address option broadcast-address 192.168.1.255; # NTP servers option ntp-servers 192.168.1.1; # Default lease time default-lease-time 600; # Maximum lease time max-lease-time 7200; }
TIPS: Selalu gunakan range IP address yang tidak overlap dengan static IP address. Gunakan range yang cukup besar untuk mengakomodasi pertumbuhan network.
KOMPETENSI SUB-BAB 06
07
SUB-BAB 07 RESERVATION

DHCP RESERVATION

Apa Itu DHCP Reservation?

DHCP reservation adalah fitur yang memungkinkan DHCP server memberikan IP address yang sama secara konsisten ke device tertentu berdasarkan MAC address. Ini berguna untuk device yang membutuhkan IP address tetap seperti server, printer, atau device lainnya.

Konfigurasi DHCP Reservation

bash
# Edit DHCP Server configuration admin@server:~$ sudo nano /etc/dhcp/dhcpd.conf # Subnet declaration subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.200; option routers 192.168.1.1; option domain-name-servers 8.8.8.8, 8.8.4.4; # DHCP reservation for server host server { hardware ethernet 00:11:22:33:44:55; fixed-address 192.168.1.10; option host-name "server"; } # DHCP reservation for printer host printer { hardware ethernet 00:11:22:33:44:56; fixed-address 192.168.1.11; option host-name "printer"; } # DHCP reservation for file server host fileserver { hardware ethernet 00:11:22:33:44:57; fixed-address 192.168.1.12; option host-name "fileserver"; } } # Check configuration admin@server:~$ sudo dhcpd -t # Restart DHCP Server admin@server:~$ sudo systemctl restart isc-dhcp-server

Melihat MAC Address

bash
# Lihat MAC address di Linux admin@server:~$ ip link show 1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff # Lihat MAC address dengan ifconfig admin@server:~$ ifconfig eth0 eth0: flags=4163 mtu 1500 ether 00:11:22:33:44:55 txqueuelen 1000 (Ethernet) # Lihat MAC address di Windows C:\> ipconfig /all Ethernet adapter Ethernet: Physical Address. . . . . . . . . : 00-11-22-33-44-55 # Lihat MAC address di DHCP server admin@server:~$ sudo cat /var/lib/dhcp/dhcpd.leases

Multiple Reservations

bash
# Edit DHCP Server configuration admin@server:~$ sudo nano /etc/dhcp/dhcpd.conf # Subnet declaration subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.200; option routers 192.168.1.1; option domain-name-servers 8.8.8.8, 8.8.4.4; # Multiple reservations host server1 { hardware ethernet 00:11:22:33:44:55; fixed-address 192.168.1.10; } host server2 { hardware ethernet 00:11:22:33:44:56; fixed-address 192.168.1.11; } host printer { hardware ethernet 00:11:22:33:44:57; fixed-address 192.168.1.11; } }
TIPS: Gunakan IP address di luar range DHCP untuk reservation. Pastikan tidak ada IP address yang overlap antara range dan reservation.
KOMPETENSI SUB-BAB 07
08
SUB-BAB 08 TESTING

TESTING CLIENT

Testing DHCP Client

bash
# Release current IP address admin@server:~$ sudo dhclient -r # Request new IP address admin@server:~$ sudo dhclient # Request new IP address dengan verbose admin@server:~$ sudo dhclient -v # Request new IP address dengan verbose dan verbose admin@server:~$ sudo dhclient -vv # Lihat IP address yang didapat admin@server:~$ ip addr show # Lihat IP address dengan ifconfig admin@server:~$ ifconfig # Lihat DHCP lease admin@server:~$ cat /var/lib/dhcp/dhclient.leases # Release IP address untuk interface tertentu admin@server:~$ sudo dhclient -r eth0 # Request IP address untuk interface tertentu admin@server:~$ sudo dhclient eth0

Testing DNS Client

bash
# Test DNS resolution admin@server:~$ nslookup www.google.com # Test DNS resolution dengan dig admin@server:~$ dig www.google.com # Test DNS resolution dengan host admin@server:~$ host www.google.com # Test DNS resolution dengan specific DNS server admin@server:~$ nslookup www.google.com 192.168.1.10 # Test DNS resolution dengan dig dan specific DNS server admin@server:~$ dig @192.168.1.10 www.google.com # Test DNS resolution dengan verbose admin@server:~$ dig www.google.com +trace # Test reverse DNS admin@server:~$ nslookup 192.168.1.10 # Test reverse DNS dengan dig admin@server:~$ dig -x 192.168.1.10 # Test reverse DNS dengan host admin@server:~$ host 192.168.1.10

Testing Connectivity

bash
# Test connectivity dengan ping admin@server:~$ ping 192.168.1.1 # Test connectivity dengan ping dan count admin@server:~$ ping -c 4 192.168.1.1 # Test connectivity dengan ping dan interval admin@server:~$ ping -i 2 192.168.1.1 # Test connectivity dengan traceroute admin@server:~$ traceroute 192.168.1.1 # Test connectivity dengan traceroute dan verbose admin@server:~$ traceroute -v 192.168.1.1 # Test connectivity dengan mtr admin@server:~$ mtr 192.168.1.1 # Test connectivity dengan mtr dan report admin@server:~$ mtr -r 192.168.1.1
TIPS: Selalu test DHCP, DNS, dan connectivity setelah konfigurasi. Gunakan dhclient -v untuk melihat DHCP process, dig +trace untuk melihat DNS resolution process, dan mtr untuk melihat network path.
KOMPETENSI SUB-BAB 08
VOLUME 13 SELESAI

SELAMAT!

Kamu telah menyelesaikan Volume 13 - DNS & DHCP Server. Dari konsep DNS, forward lookup, reverse lookup, konfigurasi DNS server (BIND9), konsep DHCP, DHCP scope, DHCP reservation, hingga testing client. Kamu sekarang menguasai DNS & DHCP Server di Debian Linux. Di Volume 14, kita akan dalami Web Server Configuration. Sampai jumpa!
SUB-BAB8 LEVELDNS & DHCP NEXTWeb Server
ABDURROZAK.MY.ID // TERHUBUNG

JARINGAN SOSIAL

Temukan saya di berbagai platform digital

s.id GitHub Instagram Threads Facebook TikTok YT Teacher YT Course YT Studio Hashnode WhatsApp Email