Felhasználói eszközök

Eszközök a webhelyen


oktatas:linux:dns_szerver:bind9

< DNS szerver

BIND9

  • Szerző: Sallai András
  • Copyright © 2011, Sallai András
  • Szerkesztve: 2011, 2013, 2017, 2018, 2019
  • Licenc: CC BY-SA 4.0

Előfeltevések

Feltételezzük, hogy van egy futó működő szerver, jól beállított fix IP címmel.

Az IP címet ellenőrizzük az „ip a s” paranccsal. Erre az IP címre kell beállítanunk tartománynevünket.

BIND - Berkeley Internet Name Domain

Telepítés

Rendelkezésre álló verzió:

  • BIND9
# apt install bind9

Szükség lesz még a dig parancsra. Ez két csomagban is benne van:

# apt install knot-dnsutils

vagy

# apt install dnsutils

Ellenőrzés

rndc status
systemctl status bind9
systemctl start bind9
rndc reload
systemctl status bind9

BIND9 konfig fájlok I.

/etc/bind/

Minden zónát fel kell vennünk a /etc/bind/named.conf.local fájlban. A gyökér szerverek elérhetősége alapból konfigurálva van a db.root fájlban.

A /etc/bind/named.conf.options fájl globális az bind egészére vonatkozó beállításokat tartalmazza.

directory opció

  • Egy könyvtárra mutat
  • A zónafájlok helye ehhez a könyvtárhoz képest ralatívan értendők.
  • Esetünkben ezért így helyes:
    • /var/cache/bind

forwarders opció

Ha TOP level domainek lekérdezése helyett az ISP szervereitől akarunk lekérdezni DNS-t a gyorsabb elérés érdekében (mivel azok a névszerverek közelebb vannak), akkor ide írjuk azok IP címét.

Query-source

Query-source address * port 53;

A 8.3 bindtól tetszőleges port megadható amelyen a bind figyeli a kéréseket.

Zónafájlok

Minden zónának kell külön ún. zónafájlt készíteni, melyek szokásos helye /var/cache/bind, bár ezt megváltoztathatjuk.

Itt két újabb könyvtár létrehozása szokásos. A master és a slave. A master könyvtárban tároljuk azokat a zónákat amelyeknek „master” szervere vagyunk, és értelemszerűen a slave könyvtárban azoknak a zónáknak a fájljait tesszük amelyeknek „slave” vagyunk.

Rekord

Minden zónafájl rekordokból áll. Egy rekord a következő részekből áll.

Általánosan:

név TTL osztály típus adat

Részletek:

név TTL osztály típus adat
amit be akarunk állítani meddig tárolhatják
a rekord adatait
(nem kötelező)
IN SOA
A
PTR
NS
CNAME
MX
adatok

Példa:

név TTL osztály típus adat
zold.and. 3D IN A 192.168.5.4

Zónafájlok helye

mkdir /var/cache/bind/master
mkdir /var/cache/bind/slave

A bind a zónaátvitelhez használhat kulcsokat a párbeszédhez. Ezeket egy managed-keys.bind fájlba szokás menteni. A Bind e nélkül is elindul, azonban annak hiánya a naplófájlokban hibaüzenetet generál.

Hozzunk létre a kulcsok számára is egy állományt:

touch /var/cache/bind/managed-keys.bind
chown bind:bind /var/cache/bind/managed-keys.bind

Utóbbi, hogy a bind tudja is írni.

Egy zónabejegyzés

A példában olyan top level domaint választottam, amely nem létezik: „and”.

A zold.and zóna bejegyzése:

mcedit /etc/bind/named.conf.local
zone "zold.and" in {
 type master;
 notify yes;
 file "master/zold.and.zone";
};

Részletek

zone "zold.and" in { A zóna neve
type master; Mester típusú zóna
notify yes; A Slave szervernek nem kell a
refresh lejáratára figyelni, maga
kezdeményezheti a frissítést
file "master/zold.and.zone"; A zónafájl helye

Ellenőrizzük, a konfiguráció helyességét a named-checkconf paranccsal:

named-checkconf /etc/bind/named.conf.local

A zónafájloknak szokásos kiterjesztése .zone Szokás szerint a fájl neve a zóna nevével megegyezik, amelynek adunk egy .zone kiterjesztést. (Ettől eltérhetünk, de így találjuk meg könnyen zónafájljainkat.

touch /var/cache/bind/master/zold.and.zone

Minimális zóna:

zold.and.zone
$TTL 3D
zold.and. SOA ns.zold.and. hostmaster.zold.and. (
			    2012012401
			    8H
			    2H
			    4W
			    1D)
zold.and.	NS	ns.zold.and.
zold.and.	A	192.168.5.4
ns.zold.and.    A       192.168.5.4
  • SOA rekord
    • zold.and. - a domain, amiről szó van
    • SOA - a rekord neve
    • zold.and. - névszerver - ez most önmagára mutat
    • hostmaster.zold.and. - e-mail cím
    • szériaszám
    • slave frissítési idő
    • slave mennyi idő múlva próbálkozzon újra, ha sikertelen volt a frissítés
    • a zóna lejár ekkor
    • egy feloldó (rezolver) mennyi ideig tartsa elérhetetlennek, ha elérhetetlen volt

Az A rekord neve előtt a zóna neve helyett megadható @ karakter is:

zold.and.

De akár el is hagyhatjuk.

zold.and.zone
$TTL 3D
zold.and. SOA ns.zold.and. hostmaster.zold.and. (
			    2012012401
			    8H
			    2H
			    4W
			    1D)
              NS	ns.zold.and.
              A  	192.168.5.4
ns            A         192.168.5.4

Szintaktikai ellenőrzés:

named-checkzone zold.and /var/cache/bind/master/zold.and.zone

Újraindítjuk a szervert:

invoke-rc.d bind9 restart

Ellenőrizzük, van-e hibaüzenetünk a syslog állományban:

tail /var/log/syslog

Ellenőrizzük, hogy névszerverünk szolgáltatja-e a domaint:

dig @localhost zold.and
; <<>> DiG 9.7.3 <<>> @localhost zold.and
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41154
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;zold.and.			IN	A

;; ANSWER SECTION:
zold.and.		86400	IN	A	192.168.5.4

;; AUTHORITY SECTION:
zold.and.		86400	IN	NS	zold.and.

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Jan 24 20:44:21 2012
;; MSG SIZE  rcvd: 56

A kimenetben keressük az „ANSWER SECTION” sorokat, amit követ a helyes név domainnév és IP cím összerendelés:

zold.and.		86400	IN	A	192.168.5.4

Most ellenőrizzük, hogy az alkalmazásaink is képesek-e használni. A zold.and zónát egyelőre csak saját szerverünk ismeri, ezért állítsuk be azt DNS szervernek.

Ezek után állítsuk be a /etc/resolv.conf fájlban a DNS szervernek a saját DNS szerverünk címét, majd ellenőrizzük a host paranccsal is:

host zold.and
nslookup zold.and

Zóna újra

Állítsunk be aldomaineket, aliasokat.

Az NS rekordnak és az első A rekordnak (amely nem tartalmazza a host nevet sem), rögtön a SOA rekord után kell megadni. Csak ezek után jöhet a többi!

zold.and.zone
$TTL 3D
@ SOA ns.zold.and hostmaster.zold.and. (
			    2012012401
			    8H
			    2H
			    4W
			    1D)
		NS	ns.zold.and.
		NS	ns2.zold.and.
		A	192.168.5.4
 
ns		A	192.168.5.4
ns2		A	192.168.5.4
iskolazo	A	192.168.5.4
mail		A	192.168.5.4
www		CNAME	iskolazo

postmaster@zold.and

DNS szerverünkön működnie kell a postmaster@zold.and e-mail címnek. E nélkül a regirsztrátorok nem fogadják el kérelmünket.

Technikai ellenőrzés

Technikai ellenőrzés

  • .hu domain esetén 2 hét várakozási idő
  • A regisztrátor csak akkor delegálja a toplevel szervereken a domainünket, ha lefut a regchek, azaz a technikai ellenőrzés sikeres

BIND újraindítása

Új zóna esetén:

/etc/init.d/bind9 reload

Ha változtatunk egy zónán:

rndc reload

MX rekord a BIND-ban

Amire ügyelni kell a sorrend. Az MX rekordot az NS rekord után helyezzük el. A másik, hogy a mail.zold.and. ne alias legyen, helyette „A” rekord.

kek.suli.zone
@ SOA ns.zold.and hostmaster.zold.and (
			    2012012401
			    8H
			    2H
			    4W
			    1D)
		NS		ns.zold.and.
		NS		ns2.zold.and.
		MX	10	zold.and.
		A		192.168.5.4
ns		A		192.168.5.4
ns2		A		192.168.5.4
iskolazo	A		192.168.5.4
mail		A		192.168.5.4
www		CNAME		iskolazo

Ellenőrző eszközök

  • host kiszolgáló lekérdezése (bind9-host csomag része)
  • dig kiszolgáló tesztelése (dnsutils csomag része)
  • dlint hiba ellenőrző
  • nslookup kiszolgáló interaktív lekérdezése (dnsutils csomag része)
  • rblcheck a domainünk rbl listán van-e?

dig

Kiszolgáló tesztelése

Megadjuk neki melyik névszerver beállításaira vagyunk kíváncsiak, és melyik domain-re.

dig @localhost zold.and

A példában a localhost-on futó DNS szerverre vagyok kíváncsi, és szeretném tudni mit mond a zold.and domaintről.

Ha csak az „A” rekordot szeretnénk látni, lebeszélhetjük a dig parancsot a többi sor kiírásáról:

dig +nocomments +nostats +nocmd +noquestion szit.hu

Ha az MX rekordra vagyunk kíváncsiak:

dig +nocomments +nostats +nocmd +noquestion MX szit.hu

Ha még kevesebb szükséges:

dig +short szit.hu
dig +short MX szit.hu

Postmaster ellenőrzése

telnet localhost 25

vagy

telnet 127.0.0.1 25

Megnézzük a postaládát

Ha távolról lépünk be, akkor nem kell megnézni, ha nincs ilyen e-mail cím akkor nem fogadja el, hacsak nem vagyunk OpenRelay

Inverz zóna

Konfigurációs állomány

mcedit /etc/bind/named.conf.local
zone "8.22.165.195.in-addr.arpa" in {
    type master;
    notify yes;
    file "master/159.166.22.8.zone";
};

Ellenőrizzük:

named-checkconf /etc/bind/named.conf.local

Zóna fájl

mcedit /var/cache/bind/master/195.166.22.8.zone
$TTL 3D
@ SOA ns1.zold.and hostmaster.zold.and (
                                  2006092401
                                  8H
                                  2H
                                  4W
                                  1D)
                 NS ns1.zold.and.
                 PTR zold.and.

A zónafájl szintaktikai ellenőrzése:

named-checkzone 8.22.166.195.in-addr.arpa /var/cache/bind/master/195.166.22.8.zone

Újraindítás

invokde-rc.d bind9 restart

PTR ellenőrzése

Elkészültünk a beállításokkal. Ellenőrizzük, hogy a DNS szerverünk szolgáltatja-e a bejegyzést.

dig

dig -t ptr @localhost 4.5.168.192.in-addr.arpa

Helyes válasz esetén:

;; ANSWER SECTION:
4.5.168.192.in-addr.arpa.   259200  IN   PTR     zold.and. 

host

A host paranccsal:

A vizsgálathoz legyen beállítva a /etc/resolv.conf fájlban a DNS szervernek a localhost.

host 195.166.22.8

Az iskolapéldánk:

host 192.168.5.4

Ha rendben van a futtatás eredménye:

4.5.168.192.in-addr.arpa domain name pointer zold.and.

Módosítás

Ha egy meglévő zónát módosítunk, kezdjük a sorozatszám növelésével!

Másodlagos szerver

Másodlagos illetékes szerver.

Egy másik szerveren beállítom zold.and zónát:

zone "zold.and" {
        type slave;
        masters { 192.168.5.4; };
};
 
zone "4.5.168.192.in.addr.arpa" {
        type slave;
        masters { 192.168.5.4; };
};

Ha szeretnénk, hogy az adatokat el is mentse a bind, akkor állítsunk be file sort is. A bind számára adjunk írási jogot.

zone "zold.and" {
        type slave;
        masters { 192.168.5.4; };
        file "/var/cache/bind/slave/zold.and.zone";
};
chown bind.bind /var/cache/bind/slave
invoke-rc.d bind9 restart

Újraindítás után nézzük meg:

cat /var/cache/bind/slave/zold.and.zone

Lehetséges eredmény:

$ORIGIN .
$TTL 80	; 1 minute 20 seconds
zold.and		IN SOA	ns1.zold.and. hostmaster.zold.and. (
				2012032301 ; serial
				60         ; refresh (1 minute)
				20         ; retry (20 seconds)
				120        ; expire (2 minutes)
				90         ; minimum (1 minute 30 seconds)
				)
			NS	ns1.zold.and.
			NS	ns2.zold.and.
			A	192.168.5.100
$ORIGIN zold.and.
iskolazo		A	192.168.5.100
ns1			A	192.168.5.100
ns2			A	192.168.5.100
www			CNAME	iskolazo

A tesztelés érdekében nagyon kis TTL értékeket állítottam be a master zónafájlban.

Biztonság

Zónaátvitelek korlátozása

Zónaátvitelt ne engedélyezzük mindenhonnan.

A példában csak a 192.168.5.8-as másodlagos szervernek és localhoston engedélyezzük:

zone "zold.and" {
      allow-transfer { 192.168.5.8; localhost; };
};

Lekérdezések korlátozása

Ha valaki nem a mi tartományunkból kérdez le, akkor azt ne engedjük.

options {
      allow-query { 192.168.5.0/24; localhost; };
};
 
zone "zold.and" {
      allow-query { any; };
};
 
zone "5.168.192.in-addr.arpa" {
      allow-query { any; };
};

Rekurzív lekérdezéseket is csak a saját tartományból engedélyezzük.

options {
        allow-recursion { 192.168.5.0/24; localhost; };
};

Futtatás nem root felhasználóként

Alapvetően Debian rendszerben dolgozunk és itt alapból nem rootként fut a bind. Ha forrásból telepítettük vagy más rendszeren dolgozunk, ahol nem így van, akkor használjuk a -u kapcsolót a felhasználó megadásához.

Keressük meg az indító scriptet, amely lehet például a következő:

/etc/init.d/bind9

A -u kapcsolót illesszük a kapcsolók közzé. Például:

start-stop-daemon --start --oknodo --quiet --exec /usr/sbin/named -u bind

Dokumentáció

apt-get install bind9-doc  
ls /usr/share/doc/bind9-doc

Függelék

Tartománynév

Gyakorláshoz használható toplevel domainek:

  • .suli
  • .isi
  • .and

Ezek sehol nem szerepelnek a világhálón.

Ezek után ilyen domaineket hozhatunk létre:

  • toretlen.suli
  • toretlen.isi
  • toretlen.and
  • kezes.suli
  • kezes.isi
  • kezes.and
  • stb.

Zónaminták

Minimális zóna

$TTL 3D
zold.and.    SOA    zold.and.    hostmaster.zold.and. (
                             2012032301
                             8H
                             2H
                             3W
                             1D)
             NS    zold.and.
             A     192.168.5.4

NS rekorddal

$TTL 3D
@        SOA    ns1.zold.and.    hostmaster.zold.and. (
                             2012032301
                             8H
                             2H
                             3W
                             1D)
         NS    ns1.zold.and.
         A     192.168.5.4
ns1      A     192.168.5.4

A hostnév felvétele

$TTL 3D
@        SOA    ns1.zold.and.    hostmaster.zold.and. (
                             2012032301
                             8H
                             2H
                             3W
                             1D)
         NS    ns1.zold.and.
         A     192.168.5.4
ns1      A     192.168.5.4
iskolazo A     192.168.5.4

Becenevek (aliasok) megadása

$TTL 3D
@        SOA    ns1.zold.and.    hostmaster.zold.and. (
                             2012032301
                             8H
                             2H
                             3W
                             1D)
         NS    ns1.zold.and.
         A     192.168.5.4
ns1      A     192.168.5.4
iskolazo A     192.168.5.4
www      CNAME iskolazo
ftp      CNAME iskolazo
irc      CNAME iskolazo

Levelezés

$TTL 3D
@        SOA    ns1.zold.and.    hostmaster.zold.and. (
                             2012032301
                             8H
                             2H
                             3W
                             1D)
         NS    ns1.zold.and.
         MX  10 mail.zold.and.
         A     192.168.5.4
ns1      A     192.168.5.4
iskolazo A     192.168.5.4
mail     A     192.168.5.4
www      CNAME iskolazo
ftp      CNAME iskolazo
irc      CNAME iskolazo
  • Az MX rekordot az NS után vegyük fel!
  • A mail.zold.and. ne alias legyen!

Inverz feloldás

$TTL 3D
@        SOA    ns1.zold.and.    hostmaster.zold.and. (
                             2012032301
                             8H
                             2H
                             3W
                             1D)
         NS    ns1.zold.and.
         PTR  zold.and.

A zóna neve:

4.5.168.192.in-addr.arpa

Inverz feloldás több IP esetén

Ha mi vagyunk az illetékesek a 192.168.5.0 hálózatban:

$TTL 3D
@        SOA    ns1.zold.and.    hostmaster.zold.and. (
                             2012032301
                             8H
                             2H
                             3W
                             1D)
         NS    ns1.zold.and.
4        PTR  elso.zold.and.
5        PTR  masodik.zold.and.

A zóna neve:

5.168.192.in-addr.arpa

IN osztály

$TTL 3D
@        IN SOA    ns1.zold.and.    hostmaster.zold.and. (
                             2012032301
                             8H
                             2H
                             3W
                             1D)
         IN NS    ns1.zold.and.
         IN MX 10 mail.zold.and.
         IN A     192.168.5.4
ns1      IN A     192.168.5.4
iskolazo IN A     192.168.5.4
mail     IN A     192.168.5.4
www      IN CNAME iskolazo
ftp      IN CNAME iskolazo
irc      IN CNAME iskolazo

Illetékesség, rekurzív feloldás

Ha szerverünk illetékes domainek számára, de rekurzív feloldást nem szeretnénk, akkor a következő beállítások kellenek:

allow-query { any; };
recursion no;

Ha a rekurzió engedni kell valahol, akkor ezekhez hasonlóan tehetjük meg:

allow-recursion {  192.168.5/24; };
allow-recursion { 10.0/16; };
allow-recursion-on { 192.168.2.3; };

Dinamikus DNS frissítés

Lehetővé teszi, egy névszerveren rekordok hozzáadását, elvételét a zónafájl frissítése közben. Például dinamikus IP esetén jól jöhet.

Erre való az nsupdate parancs:

nsupdate

Az nsupdate a dnsutils csomagban található.

DNS hierarchia a gyökértől

A következő példában egy .and toplevel domainnek nézzük meg egy domain hierarchia kialakítását.

ns.root szerver -- 10.30.20.1

/etc/bind/named.conf
options {
    directory "/etc/bind/zones";
};
 
zone "." {
    type master;
    file "root.zone";
    allow-transfer { none; };
};
/etc/bind/zones/root.zone
$TTL 2d
.    IN   SOA   ns.root. hostmaster.ns.root. (
                      2         ; Serial
                 604800         ; Refresh
                  86400         ; Retry
                2419200         ; Expire
                 604800 )       ; Nagative Cache TTL
 
.         NS   ns.root.
ns.root.  A    10.30.20.1
 
$ORIGIN and.
@         NS   a.and.
a.and.    A    10.30.20.2

a.and szerver 10.30.20.2

/etc/bind/named.conf
options {
    directory "/etc/bind/zones";
    recursion yes;
    allow-query { any; };
    version "not currently available";
};
 
zone "and" {
  type master;
  file "and.zone";
  allow-transfer { none; };
};
 
zone "10.in-addr.arpa" {
  type master;
  file "10.rev";
};
/etc/bind/zones/and.zone
$TTL 2d
@       IN     SOA     a.and. hostmaster.a.and. (
                           2           ; Serial
                      604800           ; Refresh
                       86400           ; Retry
                     2419200           ; Expire
                      604800  )        ; Negative Cache TTL  
 
and.           NS     a.and.
a.and.         A      10.30.20.2
 
$ORIGIN piros.and.
@              NS     ns.zold.and.
ns.zold.and.   A      10.30.20.3
 
$ORIGIN zold.and.
@              NS     ns
ns             A      10.30.20.3
/etc/bind/zones/10.rev
$ORIGIN 10.in-addr.arpa.
$TTL 2d
@             SOA    ns.zold.and. hostmaster.zold.and. (
              20170106 3h 15m 1w 2d )
@             NS     ns.zold.and.
3             PTR    ns.zold.and.

zold.and szerver -- 10.30.20.3

/etc/bind/named.conf
options {
  directory "/etc/bind/zones";
  recursion yes;
  allow-query { any; };
};
 
zone "piros.and" {
  type master;
  file "piros.and.zone";
  allow-transfer { none; };
};
 
zone "zold.and" {
  type master;
  file "zold.and.zone";
  allow-transfer { none; };
};
 
zone "10.in-addr.arpa" {
  type master;
  file "10.rev";
  allow-transfer { none; };
};
 
zone "30.10.in-addr.arpa" {
  type master;
  file "10.30.rev";
  allow-transfer { none; };
};
 
zone "20.30.10.in-addr.arpa" {
  type master;
  file "10.30.20.rev";
  allow-transfer { none; };
};
 
zone "in-addr.arpa" {
  type master;
  file "root.rev";
  allow-transfer { none; };
};
/etc/bind/zones/10.30.20.rev
$ORIGIN 20.30.10.in-addr.arpa.
$TTL 2d
@            SOA    ns.zold.and.   hostmaster.zold.and. (
             2017010600 3h 15m 1w 2d )
@            NS     ns.zold.and.
@            PTR    ns.zold.and.
3            PTR    ns.zold.and.
4            PTR    ns.zold.and.
/etc/bind/zones/10.30.rev
$ORIGIN 30.10.in-addr.arpa.
$TTL 2d
@            SOA    ns.zold.and.   hostmaster.zold.and. (
             2017010600 3h 15m 1w 2d )
@            NS     ns.zold.and.
@            PTR    ns.zold.and.
/etc/bind/zones/10.rev
$ORIGIN 10.in-addr.arpa.
$TTL 2d
@            SOA    ns.zold.and.   hostmaster.zold.and. (
             2017010600 3h 15m 1w 2d )
@            NS     ns.zold.and.
30           NS     ns.zold.and.
@            PTR    ns.zold.and.
/etc/bind/zones/piros.and.zone
$TTL 2d
@            SOA    ns.zold.and.   hostmaster.zold.and. (
             2017010600 3h 15m 1w 2d )
piros.and.   NS     ns.zold.and.
piros.and.   A      10.30.20.4
/etc/bind/zones/root.rev
$ORIGIN in-addr.arpa
$TTL 2d
@            SOA    ns.root.   hostmaster.ns.root. (
             2017010600 3h 15m 1w 2d )
 
@            NS     ns.root.
 
$ORIGIN 10.in-addr.arpa
@            NS     ns.zold.and.
/etc/bind/zones/root.zone
.           3600    NS     ns.root.
ns.root.    3600    A      10.30.20.1
/etc/bind/zones/zold.and.zone
$ORIGIN zold.and.
$TTL 2d
@            SOA    ns.zold.and.   hostmaster.zold.and. (
             2017010600 3h 15m 1w 2d )
zold.and.    NS     ns.zold.and.
zold.and.    A      10.30.20.3
ns.zold.and. A      10.30.20.3
www          CNAME  zold.and.

isp.and szerver -- 10.30.20.5

/etc/bind/named.conf
options {
  directory "/etc/bind/zones";
};
 
zone "." {
  type hint;
  file "root.zone";
};
/etc/bind/zones/piros.and.zone
.            3600      NS      ns.root.
ns.root.     3600      A       10.30.20.1
oktatas/linux/dns_szerver/bind9.txt · Utolsó módosítás: 2023/08/20 23:15 szerkesztette: admin