Ovo je kratak i brz pregled kroz podesavanja DNS-a. To znaci da nece moci da objasni sve zapetljanosti koje se javljaju u DNS-u kao i da ovo nije knjiga (kao sto je DNS and BIND od O’Reilly publishing). U stvari je namenjen da vam pomogne da za kratko vreme podignete DNS i pruzi vam osnovno znanje o tome kako sve radi. Vecina ovih konfiguracija ce raditi i na Bind 8. Ali ipak, ovo nije testirano. Gde god je to moguce, preporucujem da koristite verziju 9 iz sledecih razloga:
Mozete omoguciti bind u vasem /etc/rc.conf tako da startup skripta zna da hocete da je pokrenete:
named_enable="YES" named_chrootdir="/var/named" named_chroot_autoupdate="YES"
Mozda cete upitati, “Zasto bih chroot-ovao Bind?”. Prvo i najvaznije, morate da pretpostavite da postoji mogucnost da ce neko nekada pokusati da hakuje vase servise na neki nacin. Ako podesite chroot za Bind na nacin opisan dole imacete server koji je pokrenut da ne radi kao root u svom licnom “sandbox-u” tako da iako neko i uspe da udje, najgore sto ce moci da uradi je da manipulise fajlovima u direktorijumu gde je vas bind server zatvoren. Iz ovog razloga cete zeleti da backup-ujete vase zone fajlove.
Ako koristite najsveziju verziju FreeBSD sistema, ovo dole nije ustvari potrebno. Startup skripta ce uraditi sve umesto vas sa izuzetkom kreiranja named.conf i named.root. Ono sto trebate da uradte je da kreirate ispravni named.conf u /var/named/etc/namdb/named.conf i uradite:
cp /usr/src/etc/namedb/named.root /var/named/etc/namedb/named.root
Odavde mozemo aktivirati startup skriptu i pretpostavljajuci da je vas named.conf ispravan (sto se moze proveriti sa named-checkconf) mozete pokrenuti named sa:
/etc/rc.d/named start
Ako pustite da startup kreira vase chroot okruzenje kao sto je to objasnjeno u gorjnoj sekciji onda ovo mozete da preskocite. Nastavite sa Zavrsnim Koracima.
Prvo morate da kreirate direktorijume za vase chroot-ovano okruzenje tako sto cete uraditi sledece:
mkdir -p /var/named/dev /var/named/etc /usr/named/var/run
Sledece, moracete da ubacite odgovarajuce fajlove u direktorijume koje ste upravo kreirali:
cp /etc/named/named.root /var/named/named.root cp /etc/localtime /var/named/etc/localtime
Ako vec imate postojece conf ili zone fajlove onda i njih prebacite u /var/named. Obavezno promenite opcije direktorijuma u vasem postojecem named.conf (pogledajte ispod).
Posto ce Bind biti u svom skoro nezavisnom okruzenju moracete da kreirate neke unose za uredjaje tako sto cete uradite sledece:
mknod /var/named/dev/null c 2 2 mknod /var/named/dev/random c 2 3
Na kraju, omogucicemo da Bind bude vlasnik svih fajlova i direktorijuma koje smo kreirali:
chown -R bind:bind /var/named/*
OK, kreirali smo okruzenje, sada samo moramo da podesimo syslog i /etc/rc.conf.
/etc/rc.d/syslogd stop /etc/rc.d/syslogd start
syslogd skripta ce detektovati da ste pokrenuli named, i da mora da doda dodatni socket. Ovo ce restartovati syslogd sa dodatnim socket-om za logovanje u /var/named/dev. Postarajte se da je syslogd pokrenut u vasem /etc/rc.conf ako vec nije tamo:
syslogd_enable="YES"
Pokazacemo kako da podesite bind server za NAT i Internet server. Naravno ako ne zelite da ovo bude vidljivo na Internetu mozete to onda blokirati zastitnim zidom. Vecina vas ce verovatno podesavati bind9 za standardne v4 adrese. Ovo mozda nije najbolji tutorijal koji postoji, dacu samo pregled podesavanja za Ipv6, ako znate kako da podesite IPv4 bind onda mozete ovo da preskocite. Isto tako, pretpostavicemo da koristite chroot-ovano okruzenje kao sto je to gore objasnjeno.
rndc alatka je korisna za kontrolisanje named lokalno ili sa udaljenog racunara, neke od njegovih funkcija vam mogu dati i korisne statistike. Vredi da se podesi. Evo i kako.
Pokrenite rndc-confgen -a. Ovo ce postaviti fajl rndc.key u /etc/namedb/. Primeticete da kljuc izgleda otprilike ovako:
key "rndc-key" {
algorithm hmac-md5;
secret "5CKK3LlNDdkxshC5gmnzYQ==";
};
Ubacite kljuc u vas /var/named/etc/namedb/named.conf. Radice ako stavite rndc specifikacije na pocetku fajla ovako:
controls {
inet 127.0.0.1 allow { localhost; } keys { rndc-key; };
};
key "rndc-key" {
algorithm hmac-md5;
secret "5CKK3LlNDdkxshC5gmnzYQ==";
};
Ovo omogucava da samo localhost ima pristup kontrolisanju named sa rndc, ali se ovo moze modifikovati.
Ubacite kljuc u vas /etc/rndc.conf. Ovo je primer ovog fajla sa kljucem iz gornjeg primera.
options {
default-server localhost;
default-key "rndc-key";
};
server localhost {
key "rndc-key";
};
key "rndc-key" {
algorithm hmac-md5;
secret "5CKK3LlNDdkxshC5gmnzYQ==";
};
Pokrenite named ili killall -HUP named da bi se promene primenile ako vec imate named pokrenut. Ako nije, onda ce promene nastupiti sledeci put kada pokrenete named..
Prvo, trebace vam konfiguracioni fajl. Pokusacu da vas provedem kroz ovo i da na primerima objasnim kako je to uradjeno na Section6 Mrezama tako da mozete nauciti i primeniti prema vasim potrebama.
Options {
directory "/";
listen-on { 1.2.3.4; };
recursion no; #Make it so people can only look up records on this host
version "";
pid-file "/var/run/named/pid";
rrset-order {
class IN type A name "www.example.com" order random;
};
};
Ovo ce postaviti vas glavni direktorijum kao chroot-ovan dikrektorijum. Posto je named chroot-ovan, njegov root je /var/namedb/ ako ste ga podesili prema primeru.
Objasnjenje opcija
rrset-order {
order random;
};
Pored random postoje i opcije cyclic, i fixed
zone "." {
type hint;
file "named.root";
};
zone "section6.net" {
type master;
file "zones/db.section6.net";
notify yes;
allow-transfer { 216.7.11.132; 64.71.191.27; 212.100.224.176; 66.37.215.46; };
};
zone "0.0.10.in-addr.arpa" {
type master;
file "zones/db.0.0.10.in-addr.arpa";
};
zone "89.67.45.123.in-addr.arpa" {
type master;
file "zones/db.13.180.230.12.in-addr.arpa";
};
// Provide a reverse mapping for the loopback address 127.0.0.1
zone "localhost" {
type master;
file "zones/db.localhost";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "zones/db.0.0.127.in-addr.arpa";
notify no;
};
U redu, ovo je dosta. Generalno imamo root hints fajl, fajl koji je obavezan kada se potrazuju nepoznati DNS, i jedna forward zona: section6.net koja pokazuje mapiranje imena u adrese. Imamo 2 mapiranja adresa u imena, jedna za vasu privatnu mrezu 10.0.0.0/24 i jedna za vas spoljasnji IP, 123.45.67.89. Primetite formate ovih zona, kasnije ce vam biti jasnije. Imamo i obavezne fajlove za localhost zone, nas kompjuter koji je localhost i 127.0.0.1. Primeticete da je section6.net jedini sa notify yes i allow transfer opcijama. notify yes znaci da obavestava hostove o promenama. Imamo notify no postavljenu u vecini zona zato sto su one samo za unitrasnju upotrebu. allow transfer odredjuje hostove kojima je dozvoljeno da transferuju vase informacije do njihovih.
Za svaku definisanu zonu u vasem named.conf trebace vam odgovarajuci zonski fajl koji opisuje forward ili reverse informacije za tu zonu. Ispod je primer IPv4 forward zonskog fajla za section6.lan. Ime fajla, prema named.conf je db.section6.lan.
$ORIGIN section6.net.
$TTL 1d
section6.net. IN SOA syndie.section6.net. root.syndie.section6.net. (
1 ; Serial
10800 ; Refresh after 3 hours
3600 ; Retry after 1 hour
604800 ; Expire after 1 week
86400 ) ; Minimum TTL of 1 day
IN NS syndie.section6.net.
;
section6.net IN MX 10 syndie.section6.net.
;
@ IN A 10.0.0.1
localhost IN A 127.0.0.1
syndie IN A 10.0.0.1
vpn IN A 10.0.0.2
schism IN A 10.0.0.5
test IN A 10.0.0.20
ganymede IN A 10.0.0.42
web IN A 10.0.0.99
gabrielle IN A 10.0.0.242
;
hades IN CNAME syndie
ns IN CNAME syndie
mail IN CNAME syndie
ftp IN CNAME ganymede
Primeticete nekoliko stvari ovde. $ORIGIN ustvari govori named-u koji domen da prikaci zapisima tako da nemoramo da pisemo istu stvar svaki put. Ovo . na kraju domena je vazno, ako je zaboravite stvari nece raditi. Postoje 2 stringa nakon SOA (Start of Authority). Jedna govori ko je SOA za domen, a druga imenuje kontakte (root.syndie.section6.lan = root@syndie.section6.lan). A zapisi upucuju na IP adrese, CNAME zapisi su druga imena za A zapise. Dobra je praksa da nemate CNAME koji upucuje na drugi CNAME. MX zapis kaze mail exchanger-ima da salju mail na tu adresu za taj domen. Broj nakon toga je prioritet, od kojih je 1 najveci.
A sada primer za reverse zonski fajl. Ovo je za zonu 0.0.10.in-addr.arpa.
$TTL 1d
0.0.10.in-addr.arpa. IN SOA syndie.section6.net. root.syndie.section6.net. (
1 ; Serial
10800 ; Refresh after 3 hours
3600 ; Retry after 1 hour
604800 ; Expire after 1 week
86400 ) ; Minimum TTL of 1 day
@ IN NS syndie.section6.net.
1 IN PTR syndie.section6.net.
2 IN PTR vpn.antithesist.net.
5 IN PTR schism.section6.net.
20 IN PTR test.section6.net.
42 IN PTR ganymede.section6.net.
99 IN PTR web.section6.net.
242 IN PTR gabrielle.section6.net.
Vecina deklaracija ovde su iste kao i u forward fajlu. Svi zapisi ovde su PTR zapisi. Posto imate definisan 0.0.10.in-addr.arpa (koji se prevodi u 10.0.0.x) samo treba da stavite “x” vrednost za svaku adresu. Opet, ne zaboravite . nakon svakog punog imena domena ili nece raditi.
Na pocetku, ako vam se ovaj tutorijal ne svidja i zelite da procitate nesto drugo vezano za podesavanje BIND-a za IPv6 mozete procitati Ovaj dokument. Neke dodatne beleske za IPv6 DNS. Postoje 2 formata za A zapise u IPv6: AAAA i A6. Posto jos uvek cekam da vidim A6 zapis javno, uputicu vas na gore navedeni dokument ako zelite da ga podesite. Ali cu opisati kako da podesite 2 formata za reverse DNS (nibble i bitstream). IPv6 zone u named.conf
Ja sam podesio moje IPv6 forward zapise u istom zonskom fajlu u kojem se nalaze IPv4 zapisi, iako ovo radi mozda neki nece hteti da to tako urade. Mozete kreirati pod-domen da bi odvojili vase IPv4 i IPv6 zapise, ali ne postoji nista lose da oba zapisa budu u istom fajlu, ili 2 indenticna imena koji upucuju na IPv6 i na IPv4 zapis. Do sada je kod mene radilo ovako. Ovo su IPv6 specificne informacije koje su dodate u moj named.conf primer iznad.
// IPv6 zone files
// ==========
//
// First, load the zone for the IPv6 loopback address.
//
//The new current way of reverse (Bitstream)
zone "\[x0000000000000000/64].ip6.arpa" {
type master;
file "zones/db.0000:0000:0000:0000.ip6.arpa";
allow-transfer {none;};
};
//The old (depreciated) reverse (Nibble format)
zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.int" {
type master;
file "zones/db.0000:0000:0000:0000.ip6.int";
allow-transfer {none;};
};
zone "\[x200104701f000222/64].ip6.arpa" {
type master;
file "zones/db.2001.470.1f00:222.ip6.arpa";
};
zone "2.2.2.0.0.0.f.1.0.7.4.0.1.0.0.2.ip6.int" {
type master;
file "zones/db.2001.470.1f00:222.ip6.int";
};
Kao sto mozete videti imam prve 4 grupe od po 16 bita (poznate i kao /64 posto je 16 * 4 = 64) definisane u zonskim fajlovima. Prva dva unosa definisu moj localhost, a druga 2 definisu moj opseg javnih adresa 2001.470.1f00.222/64. Vecina ovog dela fajla je razumljiva i bez komentara.
Izvor: http://www.section6.net/wiki/index.php/Using_DNS_with_BIND