Tips dan Trik dnsmasq

dnsmasq adalah satu software yang memiliki beberapa fungsi: sebagai DNS server, DHCP server, router advertisement (untuk IPv6), dan juga TFTP dan PXE (untuk network booting). Software ini sangat kecil dan terinstall di banyak router terutama yang berbasis OpenWRT.  Biasanya yang dipakai oleh kebanyakan orang hanya fitur DHCP dan DNS basicnya saja. Di posting ini saya ingin sharing beberapa fitur lain yang saya pakai.

Saat ini saya memakai dnsmasq di router saya, yang merupakan Mini PC merk Qotom (Intel Celeron J1900 Quad Core dengan RAM 2GB). Router ini cukup powerful, tapi dnsmasq bisa berjalan dengan memori sangat kecil (minimum yang pernah saya pakai adalah 16 MB) dan CPU yang lambat (minimum yang pernah saya pakai MIPS 200 Mhz). Apa yang bisa dilakukan oleh dnsmasq ini bisa dilakukan dengan kombinasi beberapa software (misalnya memakai bind untuk DNS server, tftpd untuk FTP server, dsb) tapi tentunya resource yang dipakai lebih banyak.

Blokir Iklan

Saat ini ada proyek raspberry pi bernama pi-hole untuk memblok iklan dalam jaringan. Intinya adalah: kita menggunakan Raspberry Pi sebagai DNS server yang mengembalikan 0.0.0.0 untuk nama domain yang digunakan para pengiklan. Di dalam pi-hole sebenarnya software yang dipakai adalah dnsmasq.  Cara paling sederhana memblok iklan adalah menambahkan addn-hosts=/etc/hosts.ads di dnsmasq.conf dengan hosts.ads adalah file yang berisi daftar host iklan. Tentunya kita tidak ingin memelihara sendiri daftar semua host iklan, jadi cukup menggunakan dari yang sudah ada, misalnya dari https://github.com/StevenBlack/hosts. File hosts.ads bisa kita timpa dengan versi terbaru dari situs tersebut.

Tentunya kita juga bisa memblokir host-host lain yang tidak kita sukai (atau lolos dari daftar iklan yang ada). Kita bisa memiliki beberapa baris addn-hosts, misalnya addn-hosts=/etc/myhosts.ads dengan myhosts.ads adalah host lain yang ingin kita blok. Karena daftarnya terpisah, jika hosts.ads diupdate, maka daftar kita tidak akan hilang.

Proyek pi-hole memiliki tampilan yang bagus untuk menunjukkan jumlah host yang diblokir. Sebenarnya informasi request DNS ini bisa direkam dan dianalisis sendiri dengan meminta dnsmasq untuk melog setiap request.

Skrip DHCP

Fungsi utama dnsmasq lain adalah sebagai DHCP server. Dengan ini saya tidak perlu mengalokasikan secara khusus IP untuk tiap device di jaringan. Otomatis dnsmasq akan memilih slot IP yang masihi tersedia. Untuk device tertentu (misalnya tamu yang datang dan numpang internet), maka tidak penting IP-nya berapa, tapi untuk device yang sudah akan selalu dipakai di rumah, saya biasanya akan memberi nama dan memastikan bahwa besok IP-nya tidak akan berubah. Ini bisa dilakukan dengan menambahkan MAC address dan IP ke /etc/ethers dan menambahkan IP dan nama ke /etc/hosts.

Salah satu fitur dnsmasq adalah: kita bisa memiliki skrip yang dipanggil ketika ada request DHCP dan ketika lease DHCP sudah expired. Contohnya seperti ini:

dhcp-script=/root/dhcp-notify.py

Saya membuat fitur notifikasi yang disambungkan ke telegram, jadi jika saya memiliki device baru (terutama yang headless/tanpa layar), maka bisa langsung tahu IP-nya berapa.

Dengan mengecek chat telegram, ini telah membantu saya beberapa kali mengingat-ingat apakah Tablet saya ketinggalan di kantor atau di rumah. Jika batere tablet masih ada, gampang mencarinya dengan find my device, tapi jika sudah habis, akan lebih mudah dan cepet mengecek apakah kemarin sore ada request DHCP dari tablet ketika saya pulang kerja.

Network Boot

Saat ini instalasi Linux di PC bisa dilakukan dengan USB, tapi kebanyakan komputer juga sudah bisa booting lewat jaringan (menggunakan PXE). PXE ini bisa digunakan untuk meload installer Linux (netboot image) dari dnsmasq. Kita cukup menambahkan baris semacam ini dan mengisi /srv/tftp dengan boot image yang sesuai.

dhcp-boot=pxelinux.0
enable-tftp
tftp-root=/srv/tftp

Penutup

Ini sekedar posting singkat karena sudah lama nggak posting teknis. Silakan baca manual dnsmasq (yang tidak terlalu panjang) untuk mencoba fitur-fitur lain yang tidak saya sebutkan di sini.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.