Debian Squeeze Névszerver, névfeloldás (bind)

A következő fejezet a név-szerver bekonfigurálása lesz. Több okból is szükségünk van rá. Nélküle nem lesz internetünk se, a fájlmegosztáshoz és a tartományhoz is kell, de a levelezéshez is szükségünk van rá. A neveket és az ip címeket fel kell oldani.

Állítsuk be a host nevet az /etc/hostname fájlban. Itt csak a gép neve van beleírva a fájlba, semmi más. Nem kötelező pont most foglalkozni vele, lehetett volna közvetlenül a szerver telepítés után is. Ha a telepítéskor jó gép nevet adtunk meg, akkor ez a lépés max ellenőrzésnek jó.

Nézzük meg az /etc/hosts fájl tartalmát is, ha már itt járunk.

Az első sor a localhost erre szükség van mindenféle képen:

127.0.0.1 localhost localhost.localdomain

Ezután felvehetjük a saját gépünk nevét és ip címét, hogy a hálózatban azonosítva legyen így:

10.0.0.1 gep.ceg.hu gep mail.gep.hu mail server proxy

Én most 10.0.0.1 -es ip címmel fogom a szerverünket elérhetővé tenni a hálózatban, "gep" lesz a neve. Viszont nem csak "gep" néven szeretném majd később elérni a kliensekről, hanem pl olyan egyszerűen is, minthogy mail, vagy a szerver neve mögé írt domain névvel(ceg.hu). Igazándiból itt lehetne mindenféle kombinációt kitalálni, hogy később még milyen néven szeretnénk hivatkozni a szerverre. Sokkal egyszerűbb, mint mindenhova begépelni, hogy 10.0.0.1, majd a különböző helyeken.

Amennyiben több szerverünk van azokat is felvehetjük ide akár:
10.0.0.2 gep2.ceg.hu gep2 mail.gep2.hu mail2 server2 proxy2
innentől egyszerűen elérhető a gep2 is, többféle névvel.

Nézzük még meg az /etc/resolv.conf tartalmát is. Ha a szolgáltatónknál van a névszerver, akkor ide bekerül valami automatikusan. Amennyiben mi leszünk a névszerver(mert mondjuk telepítünk egyet), akkor magunkat kell felvenni ide, így:

nameserver 127.0.0.1
search ceg.hu gep.ceg.hu

Ha a szolgáltatótól kapjuk dhcp-sen az internetet, akkor szereti az újraindítások alkalmával visszaírni a beállításokat. Erre majd később egy megoldást eszközölünk.

Térjünk rá a a bind konfigurálására. Telepítsük fel:

apt-get install bind9 dnsutils

Lehetséges egy fájlba írni az összes beállítást, de manapság egyre jobban széttördelik a beállításokat több fájlba az áttekinthetőség érdekében. Az /etc/bind/named.conf fájlban régebben több információ is szerepelt jelenleg viszont alaptelepítésben csak ez a három sor található:
include "/etc/bind/named.conf.options"
include "/etc/bind/named.conf.local"
include "/etc/bind/named.conf.default-zones"

Nekünk ez teljes mértékben megfelel így nem is bántjuk. Az options fájlban az adatbázis vagy cache fájlok elérési útja található és hogy ipv6-ot is kezelje ezt engedélyezték. A local-ban semmi sincs, nekünk eddig semmi dolgunk se volt. A bind.keys és az rndc.keys fájlokban a bindnek vannak azonosító kulcsaik, ne törüljük le őket, ha nem akarjuk a fejünket vakargatni! A zones.rfc1918 se nagyon érdekes a mi esetünkben.

Ami sokkal érdekesebb az amit direkt kihagytam a named.conf.default-zones fájl. Ide fogjuk felvenni a zónáinkat amikből névfeloldást fogunk végezni a helyi hálózaton. Állítsuk be a tartományt, hogy milyen ip tartományból lehetséges a névfeloldás, hogy egy kicsit korlátozzuk a lehetőségeket.

acl "belso_cimek"{
10.0.0.0/8;
localhost;
}

(Ugye a network/interfaces fájlban is megadtuk dns-search értékét? Ennek egyeznie kellene a dhcp-ben option domain-name paraméter értékével és egyezhet a most itt következő zóna nevével is.)
Vegyünk fel egy új zónát halo2 néven. Az eth2 es hálókártyánknak szeretnénk a névfeloldását megoldani így:

zone "halo2.local" {
type master;
file "/etc/bind/db.halo2.local";
allow-query { "belso_cimek" };
};

zone "1.10.in-addr.arpa" {
type master;
file "/etc/bind/db.1.10";
allow-query { "belso_cimek" };
};

Ugye azért van kettő zóna, mert az egyik név szerint old fel a másik ip szerint, hogy mind a két irány megoldott legyen. Természetesen vegyünk fel a többi belső ip tartományunkra is zónákat, ha szeretnénk azokon is névfeloldást. A típusnál meglehet adni, hogy elsődleges vagy másodlagos névszerver lesz-e. Nem tapasztaltuk a hiányát a másodlagos névszervernek, persze biztonságosabb lehet ha van slave, de mi megelégedtünk egy elsődlegessel is.

A default alap zónák és a localhost névfeloldásához az alábbi fájlok szükségesek: db.0, db.127, db.255, db.empty, db.local, db.root az utolsóban a fő névszerverek vannak felsorolva. (ha nem akarunk semmit se elérni a világban, akkor nyugodtan hülyeségre átírhatjuk őket! :) )

Ezután az itt megadott zónafájlokat ki is kellene fejtenünk mégpedig azokban a fájlokban amiket megadtunk. Azok pl így fognak kinézni:

db.halo2.local tartalma:
$ORIGIN .
$TTL 604800 ; 1 week
ceg.hu IN SOA ns1.ceg.hu. root.ceg.hu. (
2007102701 ; serial
10800 ; refresh (3 hours)
7200 ; retry (2 hours)
2419200 ; expire (4 weeks)
604800 ; minimum (1 week)
)
NS ns1.ceg.hu.
NS ns2.ceg.hu.
MX 10 mail.ceg.hu.
$ORIGIN ceg.hu.
pc1 A 10.1.1.2
server2 A 10.1.0.2
ns1 A 10.0.0.1
ns2 A 10.1.0.1
mail CNAME ns1
proxy CNAME ns2
server CNAME ns2
www CNAME firewall

Az MX rekord azonosítja a levelező szervert a hálózatban. Az A rekorddal vehetünk fel gépeket pl a pc1-et. CNAME -el azonosító neveket vehetünk fel. (A fájl csak egy példa és logikátlan a vége! Csak a lehetőségeket taglalja, tessék értelemszerűen felvenni azokat a CNAME és A rekordokat amik nekünk majd helyesek lesznek! )

/etc/bind/db.1.10 fájl tartalma:
$ORIGIN .
$TTL 604800 ; 1 week
1.10.in-addr.arpa IN SOA ns1.ceg.hu. root.ceg.hu. (
2007102701 ; serial
604800 ; refresh (1 week)
86400 ; retry (1 day)
2419200 ; expire (4 weeks)
604800 ; minimum (1 week)
)
NS ns1.ceg.hu.
NS ns2.ceg.hu.
$ORIGIN 1.10.in-addr.arpa.
1.0 PTR gep.ceg.hu.
$ORIGIN 1.1.10.in-addr.arpa.
2 PTR pc1.ceg.hu.

Minden ugyanúgy működik csak fordítva. Mert fordítva működik a névfeloldás és az ip címek megvannak fordítva. Így hátulról kezdjük el kiolvasni. Itt felvettük a gep nevű szervert ami ugye a 10.1.0.1-es ip-n elérhető(eth2) és a pc1 nevű gépet is elfogjuk tudni érni a 10.1.1.2 ip-n.

A /etc/bind mapppa mappában a fájlok a bind jogában kell állniuk.
chown -R bind:bind /etc/bind/*

Ezután indítsuk el vagy indítsuk újra a szolgáltatást.

/etc/init.d/bind9 restart (vagy start)

A következő parancsokkal tudjuk tesztelni, hogy mindent jól működik-e. Nem lehet hiba egyik parancs kimenetén sem.

dig -x gep
dig -x 127.0.0.1
dig -x 10.0.0.1

nslookup 127.0.0.1
nslookup ceg.hu
nslookup ns1.ceg.hu
nslookup ns1.gep.ceg.hu
nslookup ns1.halo2.ceg.hu

netstat natp paranccsal lehet ellenőrizni a portokat. Az 53-as portot fogja a named (a névszerverünk), ha látjuk, akkor rendben van.

Akinek kevés a magyarázat:
Domain Name System
bind9 (lenny)
[Bind hivatalos oldala]
bind konfigurálás

2013.02.23.