Tartalomjegyzék
BIND9
- Szerző: Sallai András
- Copyright © 2011, Sallai András
- Szerkesztve: 2011, 2013, 2017, 2018, 2019
- Licenc: CC BY-SA 4.0
- Web: https://szit.hu
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