DHCP i DNS poslužitelj dnsmasq
Dnsmasq je vrlo popularno besplatno programsko rješenje s otvorenim kodom namijenjeno za DHCP i DNS poslužitelje. Dizajniran je tako da može posluživati imena lokalnih mašina koja nisu u globalnom DNS-u. DHCP poslužitelj integriran u DNS poslužitelj omogućava mašinama sa DHCP alociranom adresom pojavu u samom DNS-u sa nazivom konfiguriranim ili posebno na svakom domaćinu ili konfiguriranom u centralnoj konfiguracijskoj datoteci. Jedna od najvećih prednosti ovoga alata je njegova jednostavna konfiguracija koja će biti objašnjena u ovom radu, te njegova potreba za vrlo malim sistemskim resursima. Takodjer, u širokoj upotrebi je na pametnim telefonima kod kojih se koristi za razna dijeljenja i u radu prijenosnih hotspotova. Dnsmasq kao DNS prikuplja DNS upite koje sprema te na taj način ostvaruje bržu vezu sa stranicama koje su ranije posjećivane, a kao DHCP poslužitelj koristi se za predviđanje unutarnje IP adrese i puta do računala u lokalnoj mreži, LAN-u. Podržane platforme su Linux, Android i Mac OS X.
Instalacija
Na samome početku, dnsmasq moramo instalirati na operativni sustav, u našem slučaju Linux Ubuntu, to izvršavamo naredbom:
# apt-get install dnsmasq
Dnsmasq je automatski konfiguriran i pokrenut nakon instalacije. Da bi testirali jednostavni DNS server upisujemo iduću naredbu za bilo koju željenu web stranicu:
$ dig 9gag.com @localhost
U "Answer section" možemo pronaći IP adresu na kojoj se tražena stranica nalazi.
; <<>> DiG 9.11.4-4-Debian <<>> 9gag.com @localhost
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57886
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 4, ADDITIONAL: 9
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;9gag.com. IN A
;; ANSWER SECTION:
9gag.com. 289 IN A 151.101.194.133
9gag.com. 289 IN A 151.101.66.133
9gag.com. 289 IN A 151.101.2.133
9gag.com. 289 IN A 151.101.130.133
;; AUTHORITY SECTION:
9gag.com. 251 IN NS ns-1294.awsdns-33.org.
9gag.com. 251 IN NS ns-1673.awsdns-17.co.uk.
9gag.com. 251 IN NS ns-629.awsdns-14.net.
9gag.com. 251 IN NS ns-408.awsdns-51.com.
;; ADDITIONAL SECTION:
ns-408.awsdns-51.com. 170089 IN A 205.251.193.152
ns-408.awsdns-51.com. 164278 IN AAAA 2600:9000:5301:9800::1
ns-629.awsdns-14.net. 133726 IN A 205.251.194.117
ns-629.awsdns-14.net. 133726 IN AAAA 2600:9000:5302:7500::1
ns-1294.awsdns-33.org. 133750 IN A 205.251.197.14
ns-1294.awsdns-33.org. 133750 IN AAAA 2600:9000:5305:e00::1
ns-1673.awsdns-17.co.uk. 133874 IN A 205.251.198.137
ns-1673.awsdns-17.co.uk. 133874 IN AAAA 2600:9000:5306:8900::1
;; Query time: 33 msec
;; SERVER: 87.98.175.85#53(87.98.175.85)
;; WHEN: ned kol 12 22:54:26 CEST 2018
;; MSG SIZE rcvd: 414
Konfiguracija
Nakon instalacije paketa, potrebno je odraditi konfiguraciju dnsmasqa. Konfiguracijska datoteka nalazi se na putanji /etc/dnsmasq.conf
. Nakon što smo otvorili datoteku, moramo pronaći komentirani redak u kojem piše listen-adress
te ga odkomentirati. Da bi konfigurirali dnsmasq kao DNS instancu na računalu upisujemo lokalnu IP adresu:
listen-adress=127.0.0.1
Ako želimo da nam računalo sluša ostala računala na lokalnoj IP adresi upisujemo proizvoljnu IP adresu:
listen-adress=192.168.1.1
U istoj datoteci radimo slijedeće izmijene radi odabiranja sučelja i odabira ethernet sučelja koje će ili neće dnsmasq slušati. Komentirani red #interface
, odkomentiramo te dodamo:
interface=eth1
interface=eth2
Da ovi redovi nisu dodani, dnsmasq bi također slušao na eth0
, odnosno na našoj internet konekciji. Ovo nikako nije preporučljivo jer dodaje hakerima veću mogućnost za provalu u vaše računalo.
Po defaultu, DHCP je ugašen i to je vrlo dobra stvar jer ako smo neoprezni, postoji mogućnost da srušimo cijelu mrežu. Da bi ga aktivirali u istoj datoteci pronalazimo redak:
#dhcp-range=192.168.0.50,192.168.0.150,12h
Da bi aktivacija bila uspješna moramo dodijeliti opseg IP adresa koje će biti obuhvaćene. U gornjem retku biti će obuhvaćeno 101 adresa, počevši od 192.168.0.50 i završavajući na 192.168.0.150. Kako imamo dvije različite mreže kojima je potreban DHCP, prethodnu liniju ćemo zamijeniti ovima:
dhcp-range=eth1,192.168.100.100,192.168.100.199,4h
dhcp-range=eth2,192.168.200.100,192.168.200.199,4h
Nazivi eth1
i eth2
nisu potrebni, ali ako radimo mnogo napredniju konfiguraciju tada je potrebno radi boljeg snalaženja pisati imena, da se ne bih zabunili u opsezima (range).
Nakon konfiguriranja dnsmasq.conf datoteke, iduće što moramo napraviti je da DHCP klijent nadoda lokalnu adresu poznatoj DNS adresi u datoteci /etc/resolv.conf
. U navedenu datoteku upisujemo:
nameserver 127.0.0.1
Ovo omogućuje da svi upiti budu poslani na dnsmasq prije nego li budu riješeni na vanjskom DNS-u. Nakon ove rekonfiguracije mrežu je potrebno restartati da bi se nove postavke prihvatile. Restartamo je preko naredbe:
# /etc/init.d/dnsmasq restart
DHCPCD teži za pisanje preko datoteke /etc/resolv.conf
po defaultnim postavkama, stoga ako koristimo DHCP dobra ideja je zaštiti /etc/resolv.conf
datoteku. Da bi ju zaštitili, u datoteku /etc/dhcpcd.conf
nadodajemo:
nohook resolv.conf
Author: Kristian Skender, Vedran Miletić