2013. október 18., péntek

dns / bind

52
Hálózati maszk:  255.255.255.0
Hálózat:  192.168.1.0
Üzenetszórási cím:  192.168.1.255

A munkaállomás eth0 interfészének konfigurációja az alábbi lesz:

IPv4 cím:  192.168.1.2
Hálózati maszk:  255.255.255.0
Hálózat:  192.168.1.0
Üzenetszórási cím:  192.168.1.255
DNS kiszolgáló:  192.168.1.254
Névkeresési tartományok:  gyakorlat.gamf.hu gamf.hu kefo.hu
4.2. Telepítés és konfigurálás
A  DNS  kiszolgálóként  a  BIND9  (Berkeley  Internet  Name  Domain)  szoftvert  használjuk.
Ehhez  a  bind9  és  a  dnsutils  csomagokat  kell  telepítenünk.  Elsőként  frissítjük  gépünkön  a
csomag adatbázist, majd telepítjük a csomagokat.

$ sudo apt-get update
$ sudo apt-get install bind9 dnsutils

Telepítés  után  automatikusan  elindul  a  szerver.  Az  alap  konfiguráció  egy  csak  gyorstárazó
szervert ad egy egyszerű konfigurálást követően, a jelen gyakorlatban azonban egy elsődleges
mestert kell létrehoznunk, ezért leállítjuk a kiszolgálót

$ sudo service bind9  stop

majd elkezdhetjük a konfigurálást. A konfigurációs állományok az /etc/bind könyvtárban
vannak. A fontosabb állományok az alábbiak:

named.conf   –  itt  szerepelnek  a  további  konfigurációs  állományok
befűzésére vonatkozó utasítások, tartalmát nem változtatjuk.
named.conf.options   –  itt  állítjuk  be  a  lekérdezés  továbbítást,  rekurzív  lekérdezést,
stb.
named.conf.local   –   itt definiáljuk a zónákat.
db.root   –   gyökérszintű névkiszolgálók listája

Szerverünkkel a következő szolgáltatásokat szeretnénk nyújtani:
  Autoritatív (mérvadó) névfeloldás a saját zóna számára (mester).
  Gyorstárazó (caching) névszolgáltatás a többi domén gépeiről. A gyorstárazó szerver más
kiszolgálóktól szerzi be az információt, és lokálisan (gyorstárban) tárolja azt.
  Rekurzív  lekérdezés  a  saját  alhálózat  rezolverei  által  kezdeményezett  névfeloldási
kéréseknél.  Rekurzív  névfeloldásnál  a  DNS  kiszolgáló  teljes  mértékben  megválaszolja
keresési kérdést vagy hibaüzenetet ad. Ennek alternatívája az iteratív névfeloldás, amikor
a  kiszolgáló  részleges  választ  ad  (az  adott  zónához  közelebbi  felelős  DNS  kiszolgáló
címe). Pl. ha a www.iit.uni-miskolc.hu IPv4 címét keressük egy külső hálózat névszervere
segítségével, akkor, ha az adott kiszolgáló rekurzívra van konfigurálva, akkor visszaküldi
rezolverünknek  a  célgép  címét,  egyébként  pedig  rezolverünk  visszakapja  az  uni-Johanyák Zsolt Csaba, Kovács Péter, Göcs László: Linux hálózati adminisztráció a gyakorlatban

53
miskolc.hu  névkiszolgálójának  címét.  Ez  utóbbi  esetben  gépünk  rezolvere  fog  további
kérést küldeni az uni-miskolc.hu névkiszolgálójához.

Első  lépésként  a  /etc/bind/named.conf.options  állományban  szükséges
módosításokat, beállításokat készítjük el. Ehhez nyissuk meg szerkesztésre az állományt.

$ sudo nano /etc/bind/named.conf.options

A kéréstovábbítás beállításához vegyük ki megjegyzésből a forwarders blokkot, és adjuk
meg a névszervereink azonosítóit.

forwarders{
  10.1.51.23;
  10.1.51.25;
};

Itt megadtuk, hogy hova továbbítsa a DNS szerver azokat a névfeloldási kéréseket, amelyeket
nem tudott kiszolgálni a saját adatbázisa alapján. Mentsük el az állományt. Amennyiben nem
a főiskolai hálózatban hajtjuk végre a jelen gyakorlatot, akkor ez a lépés elhagyható. Ilyenkor
az  általunk  konfigurált  névszerver  a  rekurzív  névfeloldási  folyamat  során  közvetlenül  a
gyökérszintű névkiszolgálóknál kezdi a keresést.

A  rekurzív  névfeloldás  engedélyezése  érdekében  a  forwarders  blokkot  követően
helyezzük el a

recursion yes;

bejegyzést,  majd  szabályozzuk,  hogy  mely  gépek  vehetik  igénybe  a  névszolgáltatást  és  a
rekurzív névfeloldást az alábbi sorokkal

allow-query { belso; };
allow-recursion { belso; };

A  belso  egy  címke,  aminek  definiálásához  az  options  blokkot  követően  egy  külön
blokkot hozunk létre, amiben a helyi gépet és a saját alhálózatot nevezzük meg.

acl belso {
  127.0.0.1;
  192.168.1.0/24;
};

Mivel IPv6 hálózatunk nincs ezért a

listen-on-v6 { any; };

sort tegyük megjegyzésbe (//).

A  gamf.hu  alatt  hozzuk  létre  saját  zónánkat  gyakorlat.gamf.hu  néven.  A
névfeloldási zóna mellett címfeloldási zónát (1.168.192.in-addr.arpa) is készítünk. 4. DNS szerver telepítése és beállítása
(Johanyák Zsolt Csaba)

54
Mindkettő mester (master) zóna lesz. A zónák deklarálásához nyissuk meg szerkesztésre a
/etc/bind/named.conf.local állományt.

$sudo nano /etc/bind/named.conf.local

Az állomány végére begépeljük a két zóna definícióját:

zone "gyakorlat.gamf.hu" {
    type master;
    file "/etc/bind/gyakorlat.gamf.hu";
};

zone "1.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/1.168.192";
};

Elmentjük  az  állományt,  majd  létrehozzuk  először  a  névfeloldáshoz  szükséges  zónafájt.
Kiindulásként  (mintaként)  használhatjuk  a  db.local  állományt  vagy  létrehozhatunk  egy
teljesen üres állományt is a

$ sudo nano /etc/bind/gyakorlat.gamf.hu

paranccsal. Begépeljük az alábbiakat:

$TTL 604800
@  IN  SOA  9-szerver.gyakorlat.gamf.hu.  
hallgato.9-szerver.gyakorlat.gamf.hu. (
            1  ; Sorszám
       604800  ; Frissítés
        86400  ; Újrapróbálkozás
      3600000  ; Lejárat
      2419200 ) ; Negatív gyorstárazási idő
;
@  IN  NS  9-szerver.gyakorlat.gamf.hu.
9-szerver  IN A  192.168.1.254
belzebub  IN A  192.168.1.2
posta  IN CNAME  9-szerver

A  fentiekben  szereplő  második  és  harmadik  sor  az  állományban  egyetlen  sorként  kell
szerepeljen, és a hallgato előtt szóköz vagy tabulátor jel kell álljon! Az utolsó sor után
nyomjuk meg az Enter billentyűt, ugyanis az állomány végén újsor jel kell álljon.
Magyarázat:
  TTL (sec): a zóna rekordjaira érvényes alapértelmezett elavulási idő (Time To Live)
  SOA (Start Of Authority) rekord: tartalmazza a névkiszolgáló FQDN-jét
(9-szerver.gyakorlat.gamf.hu.)  ponttal  lezárva,  a  levelezésért  felelős
felhasználó postafiók címét úgy, hogy a @ jelet ponttal helyettesítjük
(hallgato.9-szerver.gyakorlat.gamf.hu.)  és  az  alábbi  érvényességi
időadatokat. Johanyák Zsolt Csaba, Kovács Péter, Göcs László: Linux hálózati adminisztráció a gyakorlatban

55
  Sorszám: hányadik változata ez a zónaállománynak, ennek alapján tudják beazonosítani a
slave szerverek, hogy történt-e módosítás a zónaállományban.
  Frissítés (sec): mennyi időnként kell a slave szervereknek a master-től megkérdezni, hogy
a zóna sorszáma mennyi.
  Újrapróbálkozás (sec): ha a frissítés nem sikerült, akkor a slave ennyi időt vár, mielőtt
újra próbálkozik.
  Lejárat (sec): ha nem sikerül a master-rel kommunikálniuk, ennyi ideig szolgáltatják a
zónát a világ számára
  Használható a 1W2D3H alak is

Úgy a szerver (9-szerver), mint az asztali (belzebub) operációs rendszerrel futó virtuális gépet
felvettük,  valamint  készítettünk  egy  álnevet  (posta)  is  a  szervernek.  Mentsük  el  a
gyakorlat.gamf.hu  állományt,  majd  hozzuk  létre  az  inverz  feloldáshoz
(címfeloldáshoz)  szükséges  /etc/bind/1.168.192  zónafájlt.  Itt  sablonként
használhatjuk  a  db.127 állományt. A jelen  gyakorlat  során  az üres  állomány létrehozását
választjuk

$ sudo nano /etc/bind/1.168.192

majd begépeljük az alábbi konfigurációt

$TTL 604800
@  IN  SOA  9-szerver.gyakorlat.gamf.hu.
hallgato.9-szerver.gyakorlat.gamf.hu. (
            1  ; Sorszám
       604800  ; Frissítés
        86400  ; Újrapróbálkozás
      2419200  ; Lejárat
       604800 ) ; Negatív gyorstárazási idő
;
@  IN  NS  9-szerver.gyakorlat.gamf.hu.
254  IN  PTR  9-szerver
2  IN  PTR  belzebub

A  fentiekben  szereplő  második  és  harmadik  sor  az  állományban  egyetlen  sorként  kell
szerepeljen, és a hallgato előtt szóköz vagy tabulátor jel kell álljon! Az utolsó sor után
nyomjuk meg az Enter billentyűt, ugyanis az állomány végén újsor jel kell álljon. Mentsük el
a 1.168.192 állományt.

A  zónafájlok  létrehozását  követően  a  helyi  gépet  (127.0.0.1)  kell  beállítanunk  DNS
szerverként. Ennek érdekében az /etc/network/interfaces állományban a

dns-nameservers 10.1.51.23

sort lecseréljük az alábbi sorra

dns-nameservers 127.0.0.1

majd újraindítjuk a hálózati alrendszert 4. DNS szerver telepítése és beállítása
(Johanyák Zsolt Csaba)

56

$ sudo /etc/init.d/networking restart

A DNS kiszolgáló alapból IPv6-on próbálkozik a névfeloldással. Mivel csak IPv4 hálózatunk
van  a  szerver  indítási  opciói  között  ezt  jeleznünk  kell  az  /etc/defaults/bind9
állományban. Nyissuk meg szerkesztésre az állományt:

$ sudo /etc/defaults/bind9

és egészítsük ki az OPTIONS sort a -4 kapcsolóval az alábbiakban megfelelően:

OPTIONS=”-u bind -4”
4.3. Tesztelés
A névkiszolgálót az előtérben futtatva teszteljük:

$ sudo named –g -4

Amennyiben  a  megjelenő  egyoldalas  outputban  rndc.key:  permission  denied
hibaüzenet  jelenik  meg,  akkor  gondoskodjunk  arról,  hogy  az  rndc.key  állomány
tulajdonosa  legyen  a  root  felhasználó  és  csoportja  legyen  a  bind  csoport,  valamint  a
hozzáférési engedélyek legyenek a következők szerint beállítva: - rw- -r- ---. Amikor
a kiszolgáló hibamentesen elindul, akkor váltsunk át egy új terminálra, jelentkezzünk ott be,
majd teszteljük a szerver működését az név- és címfeloldási lekérdezésekkel úgy a helyi zóna
gépei, mint távoli gépek esetén.

$ host 9-szerver.gyakorlat.gamf.hu
$ host belzebub
$ host posta
$ host 192.168.1.2
$ host 192.168.1.254
$ nslookup ubuntu.hu
$ nslookup kefodok

Teszteljük  a  szerver  működését  a  munkaállomás  gépről  is  a  fenti  vagy  hasonló
lekérdezésekkel.  Amennyiben  kiszolgálónk  hibamentesen  működik,  akkor  váltsunk  arra  a
terminálra, ahol elindítottuk a névszervert, majd állítsuk le azt Ctrl+C-vel. Végül indítsuk a
szolgáltatást tartós használatra a

$ sudo service bind9 start

paranccsal.  Indítsuk  újra  a  virtuális  gépet,  majd  a  bejelentkezést  követően  ellenőrizzük  a
kiszolgáló működési állapotát pl. a

$ service bind9 status