DNSmasq
Mnohí iste viete čo sú to pojmy ako DNS server, či DHCP server. A iste viete, že na vytvorenie DNS servera treba použiť bind a na DHCP server zase dhcpd. Oba nástroje sú komplexné, umožňujú veľkú prispôsobivosť, ale tým je komplexná aj ich konfigurácia. Ja na tieto služby používam dnsmasq.
Na začiatku manuálovej stránky sa dočítate, že dnsmasq je odľahčený DNS, TFTP a DHCP server, ktorý je cielený pre poskytnutie spojených služieb DNS a DHCP v LAN. Výsledkom je, že DNS server (skoro) automaticky zvládne preklad mien na IP adresy strojov, ktorým pridelil IP adresu prostredníctvom DHCP. Avšak, treba mať na pamäti, že je to odľahčený server, teda neimplementuje úplne všetky vlastnosti spomínaných služieb. To však nemusí byť nevýhodou, pretože v LAN často stačí to čo poskytuje.
Pri nastavovaní servera DNSmasq nepotrebuejte detailne vedieť čo to sú
a ako sa definujú zónové súbory, nemusíte poznať jednotlivé typy
záznamov. Všetko čo potrebujete vedieť pre vytvorenie DNS servera, je
poznať úlohu súborov /etc/hosts
a /etc/resolv.conf
. Ako je to
možné? Je to prosté. DNSmasq používa ako databázu dvojíc meno IP adresa práve
súbor /etc/hosts
(a samozrejme súbor s DHCP zápožičkami). Zároveň však
vystupuje ako kešovací (cache) DNS server a adresy nadradených
serverov hľadá práve v spomínanom /etc/resolv.conf
. Avšak toto
základné nastavenie je možné zmeniť, ale o tom neskôr.
Inštalácia
Nikto Vám nebráni stiahnuť si z domovskej stránky (http://www.thekelleys.org.uk/dnsmasq) zdrojové kódy a server si preložiť. Ja však dávam prednosť distribučnému riešeniu, takže pre inštaláciu odporúčam použiť systém APT:
aptitude install dnsmasq
a hneď po nainštalovaní si možno pozrieť, o akú verziu ide:
dnsmasq --version
Dnsmasq version 2.45 Copyright (C) 2000-2008 Simon Kelley
Compile time options IPv6 GNU-getopt no-ISC-leasefile DBus I18N TFTP
This software comes with ABSOLUTELY NO WARRANTY.
Dnsmasq is free software, and you are welcome to redistribute it
under the terms of the GNU General Public License, version 2 or 3.
Ako vidno, okrem verzie o sebe prezradí aj voľby, s ktorými bol
preložený. Konfigurácia je v jednom súbore, prevolene ním je súbor
/etc/dnsmasq.conf
, ktorý je bohato komentovaný. Tieto komentáre vo
svojom popise vynechám, ale vrelo odporúčam odložiť si ich, napríklad
vytvorením kópie konfiguračného súboru:
cp /etc/dnsmasq.conf /etc/dnsmasq.conf.bak
Konfiguračný súbor má štandardnú syntax, čiže jedna voľba na riadok.
Kompletný zoznam volieb je v manuálovej stránke dnsmasq,
pričom konfiguračné voľby sú rovnaké ako dlhé voľby príkazového riadku
(dnsmasq --help
).
Že DNSmasq beží, možno overiť napríklad pomocou príkazu netstat:
netstat -tupln | grep dnsmasq
tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 2705/dnsmasq
tcp6 0 0 :::53 :::* LISTEN 2705/dnsmasq
udp 0 0 0.0.0.0:53 0.0.0.0:* 2705/dnsmasq
udp6 0 0 :::53 :::* 2705/dnsmasq
Základné nastavenie DNS
Popis niektorých konfiguračných volieb konfiguračného súboru, ktoré slúžia na nastavenie DNS servera:
nastavuje aby dnmasq nepredával nadradeným serverom požiadavky na doménové mená bez prípony DNS:
domain-needed
nastavuje aby dnsmasq nepredával nadradeným serverom požiadavky na preklad súkromných adries:
bogus-priv
definuje názov lokálnej domény, teda domény obsluhovanej týmto DNS serverom (primárna zóna):
local=/example.org/
definuje rozhranie, na ktorom má dnsmasq prijímať požiadavky (aj napriek tomuto nastaveniu bude LISTEN 0.0.0.0, ale požiadavky z iných ako tu vymenovaných rozhraní bude ignorovať):
interface=eth0
zapína filtrovanie nepotrebných DNS požiadaviek vytvorených windows, pozor oi. to blokuje všetky požiadavky SRV, ale má vplyv len na predávanie požiadaviek, lokálne záznamy SRV (pomocou
srv-host=
) filtrované nie sú:filterwin2k
z
/etc/hosts
vracia také odpovede na požiadavky, ktoré záležia na rozhraní, ktorým bola požiadavky prijatá (ak má meno v/etc/hosts
viac ako jednu IP adresu a aspoň jedna z nich je v rovnakej podsieti ako vstupné rozhranie, potom vráti len adresu z tejto podsiete):localise-queries
zapína automatické pridávanie mena domény k menám strojov z
/etc/hosts
:expand-hosts
nastavuje meno domény, ktoré bude použité pri predchádzajúcej voľbe (teda, ktoré bude pridávané k menám strojov z
/etc/hosts
):domain=example.org
Na nastavenie DNS a samotného dnsmasq existuje nepreberné množstvo ďalších volieb, preto odporúčam prelúskať dokumentáciu, ale vyššie uvedené voľby postačujú na základné nastavenie.
Základné nastavenie DHCP
nastavenie DHCP, ktoré udáva (v zadanom poradí) počiatočnú a koncovú IP adresu rozsahu zapožičiavania adries a čas zápožičky. Maska je automaticky vypočítaná z danej triedy adries:
dhcp-range=192.168.0.50,192.168.0.150,12h
nastavenie masky pre rozsah výpožičiek (medzi rozsah IP adries a čas výpožičky):
dhcp-range=192.168.0.50,192.168.0.150,255.255.255.0,12h
statické priradenie IP adresy pre danú MAC adresu (alebo pre stroj tlaciaren z
/etc/hosts
):dhcp-host=00:00:e8:64:8e:28,192.168.0.60 dhcp-host=11:22:33:44:55:66,tlaciaren
Aj na nastavenie DHCP servera existuje nepreberné množstvo ďalších volieb, ktoré umožňujú nastaviť jednotlivé voľby DHCP, posielané klientom. Predvolene však posiela základné DHCP voľby (IP smerovača a DNS servera nastavené na IP počítača, na ktorom dnsmasq beží.
Základné nastavenie TFTP
zapína zabudovaný TFTP server:
enable-tftp
nastavuje cestu pre koreňový adresár TFTP:
tftp-root=/var/lib/tfptboot
meno štartovacieho súboru pre PXE:
dhcp-boot=pxelinux.0
Verte alebo nie, ale tieto tri konfiguračné voľby je všetko čo treba, samozrejme čo sa týka TFTP servera.