Kategória: Linux a sieť

Zmenené: 29. júl 2009

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.