dnsmasq Cheatsheet – DHCP + DNS

Sažet, ali potpun šalabahter za dnsmasq: DHCP konfiguracija, DNS zona mikro.local, modularna konfiguracija, varijanta s /etc/hosts i varijanta gdje je sve direktno u jednom .conf file-u.

DHCP

Raspon 10.10.10.100–150, gateway, DNS, domain, lease time.

Idi na DHCP
DNS s hosts file-om

Klasični lab pristup: /etc/hosts + expand-hosts.

Idi na DNS hosts
DNS sve u conf-u

Napredniji pristup: svi DNS zapisi kroz address= i mx-host=.

Idi na DNS conf

1. Osnovna ideja

Što je dnsmasq?

dnsmasq je lagan servis koji može raditi kao DNS cache, mali DNS server i DHCP server. Idealan je za labove i jednostavne lokalne domene.

Bitna razlika: za razliku od BIND-a, dnsmasq ne koristi zone file-ove. Ili čita /etc/hosts, ili mu direktno napišeš DNS zapise u .conf file koristeći address=, mx-host= i slične opcije.

Modularna konfiguracija

Umjesto da sve pišeš u /etc/dnsmasq.conf, možeš koristiti modularni pristup kroz /etc/dnsmasq.d/.

sudo vim /etc/dnsmasq.conf

Provjeri da postoji ili dodaj:

conf-dir=/etc/dnsmasq.d
Preporuka: koristi više file-ova, npr. dhcp.conf, dns-mikro-hosts.conf, dns-mikro-direct.conf. Tako je preglednije i lakše za debug.

2. DHCP – modularna konfiguracija

Scenarij iz laba

Na SERVERB dnsmasq treba posluživati subnet 10.10.10.0/24, ali samo raspon .100 do .150. Uz IP mora davati:

Instalacija i pokretanje

sudo dnf install dnsmasq -y
sudo systemctl enable --now dnsmasq
sudo systemctl status dnsmasq

DHCP conf file

sudo mkdir -p /etc/dnsmasq.d
sudo vim /etc/dnsmasq.d/dhcp.conf

Konačni sadržaj:

interface=eth0

dhcp-range=10.10.10.100,10.10.10.150,1d

dhcp-option=3,10.10.10.1
dhcp-option=6,10.10.10.254
dhcp-option=15,dnsmasq.local

Što znače brojevi 3, 6 i 15?

OpcijaZnačenjeOpis
3RouterDefault gateway koji DHCP klijent treba koristiti.
6DNS serverDNS poslužitelj koji DHCP klijent dobiva.
15Domain nameDefault domain / search domain koji klijent dobiva.
Napomena: za ispit je dovoljno zapamtiti: 3 = gateway, 6 = DNS, 15 = domain.

Restart i provjera

sudo systemctl restart dnsmasq
sudo systemctl status dnsmasq

3. DNS – mikro.local koristeći /etc/hosts

Kada koristiti ovaj pristup

Ovo je najbliže onome što lab često očekuje: dnsmasq čita imena iz /etc/hosts, a expand-hosts automatski dodaje domenu.

DNS conf file (modularno)

sudo vim /etc/dnsmasq.d/dns-mikro-hosts.conf

Konačni sadržaj:

interface=eth0

domain=mikro.local
local=/mikro.local/
expand-hosts

/etc/hosts

sudo vim /etc/hosts

Dodaj:

10.10.10.2 servera
10.10.10.3 serverb
10.10.10.4 serverc
10.10.10.10 email
Kako ovo radi: zbog expand-hosts dnsmasq iz ovoga automatski dobiva servera.mikro.local, serverb.mikro.local, serverc.mikro.local i email.mikro.local.

Restart

sudo systemctl restart dnsmasq
sudo systemctl status dnsmasq

WORKSTATION – resolv.conf

sudo chattr -i /etc/resolv.conf
sudo vim /etc/resolv.conf

Konačni sadržaj:

nameserver 172.25.250.10
search mikro.local

Testiranje

nslookup servera.mikro.local
nslookup serverb.mikro.local
nslookup serverc.mikro.local
nslookup email.mikro.local

4. DNS – sve direktno u jednom conf file-u

Kada koristiti ovaj pristup

Ovo je napredniji i vrlo čist pristup. Ne koristiš /etc/hosts za lokalna imena, nego sva imena definiraš direktno kroz dnsmasq opcije u jednom modularnom file-u.

Jedan conf file za cijelu mikro.local zonu

sudo vim /etc/dnsmasq.d/dns-mikro-direct.conf

Konačni sadržaj:

interface=eth0

domain=mikro.local
local=/mikro.local/

address=/servera.mikro.local/10.10.10.2
address=/serverb.mikro.local/10.10.10.3
address=/serverc.mikro.local/10.10.10.4
address=/email.mikro.local/10.10.10.10

mx-host=mikro.local,serverb.mikro.local,10

Objašnjenje opcija

OpcijaZnačenjePrimjer
domain=Definira lokalnu domenudomain=mikro.local
local=/.../dnsmasq tretira tu domenu kao lokalnu zonu za koju odgovaralocal=/mikro.local/
address=/ime/IPDirektni A zapisaddress=/servera.mikro.local/10.10.10.2
mx-host=MX zapis za domenumx-host=mikro.local,serverb.mikro.local,10
Bitno: ako koristiš address=/..., onda ti /etc/hosts za ta imena više nije potreban. Također, expand-hosts nije potreban jer već koristiš puna imena.

Restart

sudo systemctl restart dnsmasq
sudo systemctl status dnsmasq

WORKSTATION – resolv.conf

sudo chattr -i /etc/resolv.conf
sudo vim /etc/resolv.conf

Konačni sadržaj:

nameserver 172.25.250.10
search mikro.local

Testiranje

nslookup servera.mikro.local
nslookup serverb.mikro.local
nslookup serverc.mikro.local
nslookup email.mikro.local
nslookup -type=mx mikro.local

5. Što znači REFUSED u ovom labu?

Zašto lab screenshot prikazuje REFUSED?

U labu na slici vidiš da nslookup vrati i IP i poruku REFUSED. To se zna dogoditi kad dnsmasq odgovori za lokalno ime, ali odbije druge vrste upita ili dodatne rekurzivne upite koje nslookup pokušava napraviti. To nije nužno dokaz da A zapis ne radi.

Praktično: ako vidiš i ispravno ime i IP, tvoj glavni cilj je ostvaren. REFUSED u tom screenshotu je neobavezni “challenge” iz laba.

6. Full modularni primjeri

Primjer strukture file-ova

/etc/dnsmasq.conf
/etc/dnsmasq.d/dhcp.conf
/etc/dnsmasq.d/dns-mikro-hosts.conf
/etc/dnsmasq.d/dns-mikro-direct.conf
Važno: koristi ili hosts varijantu ili all-in-conf varijantu za isti skup imena. Nemoj obje istovremeno držati aktivne za iste hostove.

7. Najkraći ispitni redoslijed

# 1. Instalacija
sudo dnf install dnsmasq -y

# 2. Omogući modularno
sudo vim /etc/dnsmasq.conf
# dodaj:
conf-dir=/etc/dnsmasq.d

# 3A. DHCP
sudo vim /etc/dnsmasq.d/dhcp.conf

# 3B. DNS (hosts varijanta)
sudo vim /etc/dnsmasq.d/dns-mikro-hosts.conf
sudo vim /etc/hosts

# ili 3C. DNS (sve u conf file-u)
sudo vim /etc/dnsmasq.d/dns-mikro-direct.conf

# 4. Restart
sudo systemctl restart dnsmasq
sudo systemctl status dnsmasq

# 5. WORKSTATION
sudo chattr -i /etc/resolv.conf
sudo vim /etc/resolv.conf

# 6. Test
nslookup servera.mikro.local
nslookup email.mikro.local
nslookup -type=mx mikro.local

8. Najvažnije za pamćenje

StvarZapamti
Modularnoconf-dir=/etc/dnsmasq.d
DHCP gatewaydhcp-option=3,...
DHCP DNSdhcp-option=6,...
DHCP domaindhcp-option=15,...
DNS preko hostsexpand-hosts + /etc/hosts
DNS sve u confaddress=/ime/IP
Mail zapismx-host=...