You are on page 1of 37

DNS HOWTO

Nicolai Langfeldt janl@math.uio.no


v2.2, 11 February 1999

Traducerea în româneşte
Silviu Simen ssimen@ubisoft.ro
22 August 1999

Cum să deveniţi rapid un administrator DNS.


______________________________________________________________________

1. Preambul.................................................................................................................................................................. 2
1.1. Chestiuni legale ................................................................................................................................................. 2
1.2. Credite şi cerere pentru ajutor ........................................................................................................................... 2
1.3. Dedicaţie ........................................................................................................................................................... 2

2. Introducere .............................................................................................................................................................. 2

3. Un server de nume care realizează doar cache..................................................................................................... 4


3.1. Pornirea named.................................................................................................................................................. 7
3.2. O configuraţie şi mai bună ................................................................................................................................ 8
3.3 Felicitări ............................................................................................................................................................. 9

4. Un domeniu simplu ................................................................................................................................................. 9


4.1. Dar la început nişte teorie aridă......................................................................................................................... 9
4.2. Propriul nostru domeniu.................................................................................................................................. 13
4.3. Zona inversă .................................................................................................................................................... 20
4.4. La ce să aveţi grijă........................................................................................................................................... 22
4.5. De ce căutările inverse nu lucrează ................................................................................................................. 22

5. Exemplu de domeniu adevărat ............................................................................................................................ 24


5.1. /etc/named.conf (sau /var/named/named.conf)................................................................................................ 24
5.2. /var/named/root.hints....................................................................................................................................... 25
5.3. /var/named/zone/127.0.0 ................................................................................................................................. 26
5.4. /var/named/zone/land-5.com ........................................................................................................................... 26
5.5. /var/named/zone/206.6.177 ............................................................................................................................. 28

6. Întreţinerea............................................................................................................................................................ 29

7. Conversia de la versiunea 4 la versiunea 8 ......................................................................................................... 31

8. Întrebări şi răspunsuri.......................................................................................................................................... 33
1. named doreşte un fişier named.boot................................................................................................................... 33
2. Cum să folosim DNS în spatele unui firewall? .................................................................................................. 33
3. cum să facem DNS să rotească prin adresele disponibile pentru un serviciu, să spunem www.site.încarcat
pentru a obţine un efect de balansare a încarcării, sau ceva similar? ..................................................................... 33
4. Vreu să configurez DNS pe un intranet închis. Ce trebuie să fac? ..................................................................... 33
5. Cum să configurez un server de nume secundar?............................................................................................... 34
6. Doresc ca bind să ruleze atunci când sunt deconectat de la reţea....................................................................... 34
7. Unde stochează servrul de nume cache-ul? Există vreo posibilitate de control a mărimii acestui cache? ......... 35
8. Salvează named cache-ul între restartări? Pot să îl fac să îl salveze?................................................................. 36
9. Cum pot obţine un domeniu? Doresc să-mi configurez un domeniu numit (de examplu) linux-rules.net. Cum
pot obţine ca domeniul pe care îl doresc să fie asignat mie?.................................................................................. 36
9. Cum să deveniţi un administrator DNS "adevărat".......................................................................................... 36

______________________________________________________________________

1. Preambul
Cuvinte cheie: DNS, bind, bind-4, bind-8, named, dialup, ppp, slip, isdn, Internet, domain, name,
hosts, resolving, caching.

Acest document face parte din Proiectul de Documentare a Linux-ului (Linux Documentation
Project).

1.1. Chestiuni legale


(C)opyright 1995-1999 Nicolai Langfeldt. A nu se modifica fară îmbunătăţirea copyright-ului, se
distribuie gratuit dacă se păstrează mesajul copyright.

1.2. Credite şi cerere pentru ajutor


Vreu să-i mulţumesc lui Arnt Gulbrandsen care m-a facut să suport schiţele acestui document şi
care mi-a furnizat sugestii utile. Vreu de asemenea să mulţumesc numeroşilor oameni care mi-au
trimis e-mail-uri cu sugestii şi note.

Acest document nu va fi niciodată unul final, vă rog să îmi trimiteţi mail-uri cu problemele şi
succesele, aşa încât să pot realiya un HOWTO mai bun. Deci vă rog trimiteţi comentariile si/sau
întrebările sau banii lui janl@math.uio.no. Dacă trimiteţi un e-mail şi doriţi răspuns vă rog să
arătaţi simplaconsideraţie de a fi siguri ca adresa de retur este corectă şi deasemena că
funcţionează. De asemenea, vă rog citiţi secţiunea "Întrebări şi răspunsuri" înainte de a îmi
trimite mail. Alt lucru, eu pot înţelege doar Norvegiana sau Engleză.

Dacă doriţi să traduceţi acest HOWTO vă rog anunţaţi-mă astfel încât să pot ţine evidenţa
limbilor în care a fost publicat, şi de asemea să vă pot anunţa atunci când acest HOWTO a fost
îmbunătăţit.

1.3. Dedicaţie
Acest HOWTO îi este dedicat lui Anne Line Norheim Langfeldt. Desi ea nu îl va citi probabil
niciodată pentru că nu este felul acela de fata.

2. Introducere
Ce este şi ce nu este
DNS este Sitemul Numelor de Domenii (Domain Name System). DNS converteşte numele
maşinilor în adrese IP pe care toate maşinile din reţea le au. El mapează din nume în adrese şi din
adrese în nume, precum şi alte lucruri. Acest HOWTO explică modul de definire a acestor
mapări pe un sistem Linux. O mapare este o simplă asociere între două lucruri, în cazul de faţă
numele unei maşini, ca ftp.linux.org, şi adresa (sau adresele) IP a maşinii 199.249.150.4.

DNS este pentru neiniţiat una dintre ariile cele mai întunecate ale administrării reţelelor. Acest
HOWTO încearcă să facă câteva lucruri clare. El descrie cum să puneţi în funcţiune un server de
nume DNS simplu, începând cu un server care realizează doar cache şi mergând până la setarea
unui DNS primar pentru un domeniu. Pentru situaţii mai complexe vă rog citiţi secţiunea
"Întrebări şi răspunsuri" din acest document. Dacă nu este descris acolo citiţi Documentaţia
Adevărată. Voi reveni să explic ce este Documentaţia Adevărată în ultimul capitol.

Înainte de a începe trebuie să configuraţi maşina dumneavoastră astfel încât să puteţi realiza
telnet în şi din ea, şi să faceţi toate felurile de conexiuni la reţea, şi în mod special să fiţi în stare
să faceţi telnet pe 127.0.0.1 şi să ajungeţi pe masina proprie (testaţi acum!). Aveţi de asemenea
nevoie de fişierele /etc/nsswitch.conf (sau /etc/host.conf), /etc/resolv.conf şi
/etc/hosts în stare bună ca un punct de start, pentru că nu voi explica aici funcţia lor. Dacă nu
le aveţi pe toate setate în regulă şi funcţionale NET-3-HOWTO şi-sau PPP-HOWTO vă explică
cum să le setaţi. Citiţi-le.

Când spun "maşina dumneavoastră" înţeleg maşina pe care încercaţi să setaţi DNS-ul. Nici o altă
maşină pe care o puteţi avea şi este împlicată în efortul dumneavostară de configurare a reţelei.

De asemenea, presupun că nu sunteţi în spatele nici unui fel de firewall care blochează cererile
de nume. Dacă sunteţi aveţi nevoie de o configuraţie specială, vedeţi secţiunea de la "Întrebări şi
răspunsuri".

Servirea numelor în Unix este făcută de un program numit named. El este parte a pachetului
"bind" care este coordonat de Paul Vixie pentru The Internet Software Consortium. named este
inclus în majoritatea distribuţiilor Linux şi este uzual instalat ca /usr/sbin/named. Dacă aveţi
un named puteţi probabil să îl folosiţi; dacă nu puteţi să luaţi un binar de pe un site ftp pentru
Linux, sau să luaţi ultima şi cea mai bună versiune în format sursă de la
ftp://ftp.isc.org:/isc/bind/src/cur/bind-8/. Acest HOWTO este despre bind versiunea 8. Versiunea
veche, despre bind 4, este incă disponibilă la http://www.math.uio.no/~janl/DNS/, în cazul în
care folosiţi bind 4. Dacă pagina de manual vorbeşte despre (aproape de sfârşit, la secţiunea
FILES) named.conf aveţi bind 8, dacă vorbeşte despre named.boot aveţi bind 4. Dacă aveţi 4 şi
sunteţi preocupat de securitate ar trebui să treceţi spre o versiune recentă 8.

Dacă pagina de manual named vorbeşte despre (la sfârşit, în secţiunea fişiere) named.conf aveţi
versiunea bind 8, dacă vorbeşte despre named.boot aveţi bind 4. Dacă aveţi versiunea 4 şi
sunteţi preocupat de securitate ar trebui să aveţi în vedere trecerea la o versiune recentă 8.

DNS este o bază de date distribuită. Aveţi grijă ce puneţi în ea. Dacă puneţi gunoi,
dumneavoastră şi alţii veţi obţine gunoi. Păstraţi DNS-ul în ordine şi consistent şi veţi obţine un
serviciu bun de la el. Învăţaţi cum să-l folosiţi, cum să-l depanaţi, să-l administraţi şi veţi vi un
alt administrator care opreşte reţeaua de la sugrumare prin prost management.

În acest document afirm cu tărie câteva lucruri care nu sunt complet adevărate (dar sunt cel puţin
pe jumătate). Totul în scopul simplificării. Lucrurile vor funcţiona (probabil ;-) dacă veţi crede ce
vă spun.

Tip: Faceţi copii de siguranţă ale tuturor fişierelor pe care vă voi pune să le modificaţi dacă deja
le aveţi, pentru că dacă după cele ce vor urma lucrurile nu funcţionează, să puteţi reveni la starea
veche, în care ele funcţionau.

3. Un server de nume care realizează doar


cache
O primă configurare DNS, foarte folositoare utilizatorilor de dialup.

Un server de nume care realizează doar cache va găsi răspunsurile la cererile de nume şi îşi va
aminti răspunsurl data următoare când va fi nevoie. Aceasta va scurta timpul de aşteptare destul
de mult, în mod special dacă sunteţi pe o conexiune înceată.
Întâi aveţi nevoie de un şişier numit /etc/named.conf. Acesta este citit când named porneşte.
Pentru început el trebuie să conţină doar următoarele:
____________________________________________________________________
// Fişier de configurare pentru un server de nume care realizează doar cache

options {
directory "/var/named";
// Scoaterea comentariilor de pe această opţiune
// poate ajuta dacă trebuie să treceţi printr-un firewall
// şi lucrurile nu funcţionează cum ar trebui
// query-source port 53;
};
zone "." {
type hint;
file "root.hints";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "pz/127.0.0";
};
______________________________________________________________________

Linia `directory' spune named-ului unde să se uite după fişiere. Toate fişierele numite ulterior vor
fi relative la acest director. Astfel pz este un director în /var/named, adică, /var/named/pz.
/var/named este directorul corect în concordanţă cu Linux File system Standard.
Fişierul numit /var/named/root.hints este numit aici.
/var/named/root.hints ar trebui să conţină :
______________________________________________________________________
;
; Pot exista comentarii deschise aici dacă aveţi deja acest fişier
; Dacă nu sunt, nu vă impacientaţi.
;
. 6D IN NS G.ROOT-SERVERS.NET.
. 6D IN NS J.ROOT-SERVERS.NET.
. 6D IN NS K.ROOT-SERVERS.NET.
. 6D IN NS L.ROOT-SERVERS.NET.
. 6D IN NS M.ROOT-SERVERS.NET.
. 6D IN NS A.ROOT-SERVERS.NET.
. 6D IN NS H.ROOT-SERVERS.NET.
. 6D IN NS B.ROOT-SERVERS.NET.
. 6D IN NS C.ROOT-SERVERS.NET.
. 6D IN NS D.ROOT-SERVERS.NET.
. 6D IN NS E.ROOT-SERVERS.NET.
. 6D IN NS I.ROOT-SERVERS.NET.
. 6D IN NS F.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET. 5w6d16h IN A 192.112.36.4
J.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.10
K.ROOT-SERVERS.NET. 5w6d16h IN A 193.0.14.129
L.ROOT-SERVERS.NET. 5w6d16h IN A 198.32.64.12
M.ROOT-SERVERS.NET. 5w6d16h IN A 202.12.27.33
A.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.4
H.ROOT-SERVERS.NET. 5w6d16h IN A 128.63.2.53
B.ROOT-SERVERS.NET. 5w6d16h IN A 128.9.0.107
C.ROOT-SERVERS.NET. 5w6d16h IN A 192.33.4.12
D.ROOT-SERVERS.NET. 5w6d16h IN A 128.8.10.90
E.ROOT-SERVERS.NET. 5w6d16h IN A 192.203.230.10
I.ROOT-SERVERS.NET. 5w6d16h IN A 192.36.148.17
F.ROOT-SERVERS.NET. 5w6d16h IN A 192.5.5.241
______________________________________________________________________

Fişierul descrie serverele de nume "principale" din lume. Acestea se schimbă în timp şi deci
fişierul trebuie să fie întreţinut. Referiţi-vă la secţiunea "Întreţinere" pentru a afla cum să îl ţineţi
actualizat.

Următoarea secţiune în named.conf este ultima zonă. Voi explica folosirea ei într-un capitol
următor, pentru început creaţi fişierul numit 127.0.0 în subdirectorul pz.
______________________________________________________________________
@ IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
1 ; Serial
8H ; Refresh
2H ; Retry
1W ; Expire
1D) ; Minimum TTL
NS ns.linux.bogus.
1 PTR localhost.
______________________________________________________________________
În continuare aveţi nevoie de un /etc/resolv.conf arătând cam aşa:
______________________________________________________________________
search subdomain.your-domain.edu your-domain.edu
nameserver 127.0.0.1
______________________________________________________________________

Linia `search' specifică ce domenii ar trebui căutate pentru orice nume de host la care doriţi să
vă conectaţi. Linia `nameserver' specifică adresa serverului de nume, în cazul de faţă maşina
dumneavoastră (127.0.0.1 este în regulă, chiar dacă maşina are şi alte adrese). Dacă doriţi să
listaţi mai multe servere de nume puneţi o linie `nameserver' pentru fiecare. (Notă: named nu
citeşte niciodată acest fişier, resolver-ul care utilizează named o face).

Pentru a ilustra ce face acest fişier: dacă un client încearcă să găsească foo, atunci întâi este
încercat foo.subdomain.your-domain.edu, apoi foo.your-fomain.edu, şi în fianl foo. Dacă
un client caută sunsite.unc.edu, atunci sunsite.unc.edu.subdomain.your-domain.edu
este încercat întâi (da, este stupid, dar acesta este modul de funcţionare), apoi
sunsite.unc.edu.your-domain.edu, şi în final sunsite.unc.edu. Nu este recomandat să
puneţi prea multe domenii în linia `search', pentru că ia timp cautarea în toate.

Acest exemplu presupune că aparţineţi domeniului subdomain.your-domain.edu, maşina


dumneavoastră fiind atunci numită, probabil, your-machine.subdomain.your-domain.edu.
Linia `search' nu trebuie să conţină domeniul de bază (TLD - Top Level Domain, `edu' în acest
caz). Dacă aveţi nevoie frecvent să conectaţi hosturi în alt domeniu puteţi adăuga acel domeniu
în lista de căutare astfel:
______________________________________________________________________
search subdomain.your-domain.edu your-domain.edu other-domain.com
______________________________________________________________________

şi aşa mai departe. Bineînţeles că va trebui să puneţi nume de domenii adevărate în fişiere. Vă
rog notaţi lipsa punctului la sfârşitul numelor de domenii. Aceasta este important.

În continuare, în funcţie de versiunea libc aveţi nevoie să modificaţi /etc/nsswitch.conf sau


/etc/host.conf. Dacă aveţi nsswitch.conf atunci pe aceata o vom modifica, dacă nu vom
modifica host.conf.

/etc/nsswitch.conf

Acesta este un fişier mare în care se specifică de unde să se ia diferite tipuri de date, din ce fişier
sau bază de date. În mod uzual conţine comentarii ajutătoare la început, pe care ar trebui să
consideraţi a le citi. După aceea gaşiţi linia care începe cu `hosts:', ar trebui să conţină:
______________________________________________________________________
hosts: files dns
______________________________________________________________________

Dacă nu există o asemenea linie care să înceapă cu `hosts:', atunci puneţi-o pe cea de mai sus.
Ea spune că programele se vor uita mai întâi în fişierul /etc/hosts, apoi vor accesa DNS-ul în
conformitate cu resolv.conf.
/etc/host.conf
Acest fişier probabil conţine câteva linii, una dintre ele ar trebui să inceapă cu "order" şi să arate
aşa:
______________________________________________________________________
order hosts,bind
______________________________________________________________________

Dacă nu există nici o linie `order', trebuie să adăugaţi una. Ea spune rutinelor pentru rezolvarea
numelor ale hostului să se uite întâi în /etc/hosts, apoi să întrebe serverul de nume (care este
specificat în resolv.conf ca fiind la 127.0.0.1).

3.1. Pornirea named


După toate acestea este timpul să pornim named-ul. Dacă utilizaţi o conexiune dialup, întâi
conectaţi-vă. Scrieţi `ndc start', şi apăsaţi return, fără opţiuni. Dacă aceasta nu funcţionează
încercaţi `/usr/sbin/ndc start'. Dacă nici aşa nu funcţionează citiţi secţiunea "Întrebări şi
răspunsuri". Dacă citiţi fişierul de mesaje syslog (uzual /var/adm/messages, dar alt director
poate fi /var/log şi alt fişier poate fi syslog) în timp ce porniţi named (utilizaţi tail -f
/var/log/messages) ar trebui să vedeţi ceva de genul:
(liniile care se termină în \ continuă pe linia următoare)

Feb 15 01:26:17 roke named[6091]: starting. named 8.1.1 Sat Feb 14 \


00:18:20 MET 1998 ^Ijanl@roke.uio.no:/var/tmp/bind-8.1.1/src/bin/named
Feb 15 01:26:17 roke named[6091]: cache zone "" (IN) loaded (serial 0)
Feb 15 01:26:17 roke named[6091]: master zone "0.0.127.in-addr.arpa" \
(IN) loaded (serial 1)
Feb 15 01:26:17 roke named[6091]: listening [127.0.0.1].53 (lo)
Feb 15 01:26:17 roke named[6091]: listening [129.240.230.92].53 (ippp0)
Feb 15 01:26:17 roke named[6091]: Forwarding source address is [0.0.0.0].1040
Feb 15 01:26:17 roke named[6092]: Ready to answer queries.

Dacă există vreun mesaj despre vreo eroare, atunci este o greşeală. named va scrie fişierul în
care este aceasta (unul din named.conf sau root.hints). Omorâţi named şi verificaţi fişierele.

Acum puteţi testa configuraţia. Porniţi nslookup pentru a vă examina munca.

$ nslookup
Default Server: localhost
Address: 127.0.0.1

Dacă aceasta este ceea ce aţi obţinut, funcţionează. Să sperăm. Orice altceva, reveniţi şi verificaţi
totul. De fiecare dată când modificaţi fişierul named.conf trebuie să restartaţi named utilizând
comanda ndc restart.

Acum putem introduce o cerere. Încercaţi să căutaţi o maşină aproape de dumneavoastră.


pat.uio.no este aproape de mine, la Universitatea din Oslo:
pat.uio.no
Server: localhost
Address: 127.0.0.1
Name: pat.uio.no
Address: 129.240.130.16

nslookup acum a cerut named-ului dumneavoastră să caute maşina pat.uio.no. El a contactat


unul din serverele de nume specificate în fişierul root.hints, şi l-a întrebat calea de acolo.
Poate dura puţin înainte ca răspunsul să sosească pentru că s-ar putea să se caute în toate
domeniile specificate în /etc/resolv.conf.

Dacă întrebaţi de acelaşi host din nou, veţi obţine:

pat.uio.no
Server: localhost
Address: 127.0.0.1
Non-authoritative answer:
Name: pat.uio.no
Address: 129.240.2.50

Notaţi linia "Non-authoritative answer:" pe care am obţinut-o de data aceasta. Ea înseamnă că


named nu s-a dus pe reţea să întrebe de data aceasta, informaţia fiind în cache acum. Dar
informaţia din cache poate fi expirată (stale). Deci sunteţi informaţi fugar de această posibilitate:
`Non-authorative answer:'. Când nslookup spune aceasta a doua oară când cereţi un host este un
semn sigur că named plasează informaţia în cache şi funcţionează. Ieşiţi din nslookup cu
comanda `exit'.

3.2. O configuraţie şi mai bună


În reţele largi, bine organizate, academice sau ale ISP (Internet Service Provider - Ofertant de
Servicii Internet) veţi găsi că s-a definit o ierarhie de server DNS "forwarder", care ajută la
uşurarea încărcării în reţeaua locală şi serverele de afară deasemenea. Nu este uşor de ştiut dacă
sunteţi în interiorul unei asemenea reţele sau nu. Nu este însă aşa important, şi utilizând serverul
DNS al ISP-ului dumneavoastră ca "forwarder" puteţi face răspunsurile la cererile de nume mai
rapide şi să micşoraţi încărcarea reţelei dumneavoastră. Dacă utilizaţi un modem aceasta poate fi
o victorie importantă. Pentru exemplul nostru, să considerăm că ISP-ul dumneavoastră are două
servere de nume pe care vă lasă sa le utilizaţi, cu adresa IP 10.0.0.1 şi 10.1.0.1. Atunci, în
fişierul named.conf, în interiorul secţiunii de deschidere numită "options", inseraţi aceste linii:
______________________________________________________________________
forward first;
forwarders {
10.0.0.1;
10.1.0.1;
};
______________________________________________________________________

Restartaţi named şi testaţi cu nslookup. Ar trebui să funcţioneze bine.


3.3 Felicitări
Acum ştiţi cum să configuraţi un server de numa care realizează doar cache. Luaţi o bere, lapte
sau ce preferaţi pentru a sărbători aceasta.

4. Un domeniu simplu
Cum să configuraţi propriul domeniu

4.1. Dar la început nişte teorie aridă


Înainte să începem cu adevărat secţiunea aceasta vă voi prezenta nişte teorie şiun exemplu de
cum funcţionează DNS-ul. Şi o vom citi, pentru că este bună pentru dumneavoastră. Dacă nu
doriţi ar trebui să o frunzăriţi cel puţin. Opriţi-vă din frunzărit când ajungeţi la ce ar trebui să
puneţi în fişierul named.conf.

DNS-ul este un sistem ierarhic, structurat ca un arbore. Rădăcina este numită `.' şi pronounţată
`root'. Sub ea, se găsesc un număr de Top Level Domains (TLDs), cele mai cunoscute fiind
ORG, COM, EDU şi NET, dar mai sunt multe altele. Exact ca un arbore, el are o rădăcină care se
ramnifică. Dacă aveţi puţin idee de ştiinţa calculatoarelor veţi recunoaşte DNS ca pe un arbore de
căutare, şi veţi fi capabili să găsiţi noduri, frunze şi muchii.

Când caută o maşină, cererea procesează recursiv ierarhia, începând de sus. Dacă doriţi să aflaţi
adresa prep.ai.mit.edu, serverul de nume trebuie să găsească un server de nume care serveşte
edu. El întreabă un server . (deja ştie serverele . pentru asta există fişierul root.hints),
serverul . dă o listă cu serverele edu:

$ nslookup
Default Server: localhost
Address: 127.0.0.1
Începem prin a întreba un server din rădăcină:
server c.root-servers.net.
Default Server: c.root-servers.net
Address: 192.33.4.12
Setăm tipul cererii la NS (înregistrările cu servere de nume):
set q=ns
Întrebăm despre edu:
edu.
Punctul de la sfârşit este aici important, el îi spune nslookup-ului că cerem pe edu de sub . (şi
nu sub vreunul din domeniile noastre de căutare, asta creşte viteza)

edu nameserver = A.ROOT-SERVERS.NET


edu nameserver = H.ROOT-SERVERS.NET
edu nameserver = B.ROOT-SERVERS.NET
edu nameserver = C.ROOT-SERVERS.NET
edu nameserver = D.ROOT-SERVERS.NET
edu nameserver = E.ROOT-SERVERS.NET
edu nameserver = I.ROOT-SERVERS.NET
edu nameserver = F.ROOT-SERVERS.NET
edu nameserver = G.ROOT-SERVERS.NET
A.ROOT-SERVERS.NET internet address = 198.41.0.4
H.ROOT-SERVERS.NET internet address = 128.63.2.53
B.ROOT-SERVERS.NET internet address = 128.9.0.107
C.ROOT-SERVERS.NET internet address = 192.33.4.12
D.ROOT-SERVERS.NET internet address = 128.8.10.90
E.ROOT-SERVERS.NET internet address = 192.203.230.10
I.ROOT-SERVERS.NET internet address = 192.36.148.17
F.ROOT-SERVERS.NET internet address = 192.5.5.241
G.ROOT-SERVERS.NET internet address = 192.112.36.4

Acesta ne spune că toate serverele ROOT-SERVERS.NET servesc EDU., deci putem să întrebăm pe
oricare dintre ele. Vom continua prin a întreba C. Acum dorim să ştim care servere servesc
nivelul următor din numele de domeniu: mit.edu.:

mit.edu.
Server: c.root-servers.net
Address: 192.33.4.12

Non-authoritative answer:
mit.edu nameserver = W20NS.mit.edu
mit.edu nameserver = BITSY.mit.edu
mit.edu nameserver = STRAWB.mit.edu

Authoritative answers can be found from:


W20NS.mit.edu internet address = 18.70.0.160
BITSY.mit.edu internet address = 18.72.0.3
STRAWB.mit.edu internet address = 18.71.0.151

steawb, w20ns şi bitsy servesc toate mit.edu, alegem una şi întrebăm despre numele un nivel
mai sus: ai.mit.edu:

server W20NS.mit.edu.

Numele de host-uri nu sunt case sensitive, dar eu folosesc mouse-ul pentru cut and paste, deci l-
am copiat cum era pe ecran.
Server: W20NS.mit.edu
Address: 18.70.0.160

ai.mit.edu.
Server: W20NS.mit.edu
Address: 18.70.0.160

Non-authoritative answer:
ai.mit.edu nameserver = ALPHA-BITS.AI.MIT.EDU
ai.mit.edu nameserver = GRAPE-NUTS.AI.MIT.EDU
ai.mit.edu nameserver = TRIX.AI.MIT.EDU
ai.mit.edu nameserver = MUESLI.AI.MIT.EDU
ai.mit.edu nameserver = LIFE.AI.MIT.EDU
ai.mit.edu nameserver = BEET-CHEX.AI.MIT.EDU
ai.mit.edu nameserver = MINI-WHEATS.AI.MIT.EDU
ai.mit.edu nameserver = COUNT-CHOCULA.AI.MIT.EDU
ai.mit.edu nameserver = MINTAKA.LCS.MIT.EDU

Authoritative answers can be found from:


AI.MIT.EDU nameserver = ALPHA-BITS.AI.MIT.EDU
AI.MIT.EDU nameserver = GRAPE-NUTS.AI.MIT.EDU
AI.MIT.EDU nameserver = TRIX.AI.MIT.EDU
AI.MIT.EDU nameserver = MUESLI.AI.MIT.EDU
AI.MIT.EDU nameserver = LIFE.AI.MIT.EDU
AI.MIT.EDU nameserver = BEET-CHEX.AI.MIT.EDU
AI.MIT.EDU nameserver = MINI-WHEATS.AI.MIT.EDU
AI.MIT.EDU nameserver = COUNT-CHOCULA.AI.MIT.EDU
AI.MIT.EDU nameserver = MINTAKA.LCS.MIT.EDU
ALPHA-BITS.AI.MIT.EDU internet address = 128.52.32.5
GRAPE-NUTS.AI.MIT.EDU internet address = 128.52.36.4
TRIX.AI.MIT.EDU internet address = 128.52.37.6
MUESLI.AI.MIT.EDU internet address = 128.52.39.7
LIFE.AI.MIT.EDU internet address = 128.52.32.80
BEET-CHEX.AI.MIT.EDU internet address = 128.52.32.22
MINI-WHEATS.AI.MIT.EDU internet address = 128.52.54.11
COUNT-CHOCULA.AI.MIT.EDU internet address = 128.52.38.22
MINTAKA.LCS.MIT.EDU internet address = 18.26.0.36

Deci museli.ai.mit.edu este un nameserver pentru ai.mit.edu:

server MUESLI.AI.MIT.EDU
Default Server: MUESLI.AI.MIT.EDU
Address: 128.52.39.7

Acum voi schimba tipul cererii, am găsit serverul de nume şi acum îl vom întreba tot ce ştie
despre prep.ai.mit.edu.

set q=any
prep.ai.mit.edu.
Server: MUESLI.AI.MIT.EDU
Address: 128.52.39.7
prep.ai.mit.edu CPU = dec/decstation-5000.25 OS = unix
prep.ai.mit.edu
inet address = 18.159.0.42, protocol = tcp
ftp telnet smtp finger
prep.ai.mit.edu preference = 1, mail exchanger = gnu-life.ai.mit.edu
prep.ai.mit.edu internet address = 18.159.0.42
ai.mit.edu nameserver = beet-chex.ai.mit.edu
ai.mit.edu nameserver = alpha-bits.ai.mit.edu
ai.mit.edu nameserver = mini-wheats.ai.mit.edu
ai.mit.edu nameserver = trix.ai.mit.edu
ai.mit.edu nameserver = muesli.ai.mit.edu
ai.mit.edu nameserver = count-chocula.ai.mit.edu
ai.mit.edu nameserver = mintaka.lcs.mit.edu
ai.mit.edu nameserver = life.ai.mit.edu
gnu-life.ai.mit.edu internet address = 128.52.32.60
beet-chex.ai.mit.edu internet address = 128.52.32.22
alpha-bits.ai.mit.edu internet address = 128.52.32.5
mini-wheats.ai.mit.edu internet address = 128.52.54.11
trix.ai.mit.edu internet address = 128.52.37.6
muesli.ai.mit.edu internet address = 128.52.39.7
count-chocula.ai.mit.edu internet address = 128.52.38.22
mintaka.lcs.mit.edu internet address = 18.26.0.36
life.ai.mit.edu internet address = 128.52.32.80

Deci începând cu ., am găsit succesiv servere de nume pentru fiecare nivel din numele de
domeniu. Dacă aţi fi folosit propriu dumneavoastra server DNS în loc să folosiţi toate aceste
servere, named-ul dumneavoastră ar fi căutat aceste informaţii şi le-ar fi stocat în cache şi nu ar fi
fost nevoit să le ceară din nou pentru o perioadă.
În arbore, analog cu fiecare "." în nume, există un punct de ramnificaţie. Şi fiecare parte între "."
reprezintă numele ramnificaţiilor individuale în arbore.

Noi parcurgem arborele luând numele pe care îl dorim (prep.ai.mit.edu), căutând rădăcina (.)
şi apoi căutând următoarea ramură de parcurs, în acest caz edu. Odată găsită, o parcurgem
utilizând serverul care ştie despre acea parte din nume. În continuare ne uităm peste ramura mit
din ramura edu (numele combinat este mit.edu) şi o parcurgem utilizând un server care ştie
despre mit.edu. Din nou ne uităm după următoarea ramură, ea este ai.mit.edu, şi din nou
utilizăm serverul care ştie despre ea. Acum am ajuns la serverul bun, la dreapta punctului de
ramnificaţie. Ultima parte este găsirea prep.ai.mit.edu, care este simplă. În ştiinţa
calculatoarelor numim în mod uzual prep frunza unui arbore.

O chestie despre care s-a vorbit puţin, dar care este importantă este domeniul in-addr.arpa. El
este deasemena îmbricat, precum domeniile normale. in-addr.arpa ne permite să găsim numele
hostului atunci când deţinem adresa. Un lucru important aici este acela că adresele sunt scriser în
ordinea inversă în domeniul in-addr.arpa. Dacă aveţi adresa unei maşini: 192.128.52.43,
named procedează la fel ca în exemplul pentru prep.ai.mit.edu: caută servere pentru arpa.
Caută servere in-addr.arpa., caută servere 192.in-addr.arpa., caută servere 128.192.in-
addr.arpa., caută servere 52.128.192.in-addr.arpa. Caută înregistrările necesare pentru
43.52.128.192.in-addr.arpa. Inteligent, nu ? (Spuneţi `da'.) Scrierea inversă a numerelor
poate duce la confuzii însă.

Tocmai am spus o minciună. DNS nu lucrează exact în modul în care v-am spus. Dar este
aproape aşa.

4.2. Propriul nostru domeniu


Acum să definim propriul nostru domeniu. Vom face domeniul linux.bogus şi vom defini
maşinile din el. Foloses un nume de domeniu total aiurea ca să fiu sigur că nu voi deranja pe
nimeni Acolo Afară.

Încă un lucru înainte de a începe: nu toate caracterele sunt permise în numele de host-uri. Suntem
restricţionaţi la caracterele din alfabetul englezesc: a-z, şi numere: 0-9 şi caracterul '-' (dash).
Limitaţi-vă la aceste caractere. Literele mari şi mici sunt identice pentru DNS, deci pat.uio.no
este identic cu Pat.UiO.No.

Deja am pus în named.conf această linie:


______________________________________________________________________
zone "0.0.127.in-addr.arpa" {
type master;
file "pz/127.0.0";
};
______________________________________________________________________

Vă rog notaţi lipsa caracterului "." la sfârşitul numelor de domenii în acest fişier. Se spune că
vom defini zona 0.0.127.in-addr.arpa, că vom fi serverul principal pentru ea şi că este
stocată într-un fişier numit pz/127.0.0. Deja am creat acest fişier, el conţine:
______________________________________________________________________
@ IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
1 ; Serial
8H ; Refresh
2H ; Retry
1W ; Expire
1D) ; Minimum TTL
NS ns.linux.bogus.
1 PTR localhost.
______________________________________________________________________

Vă rog luaţi aminte la "." de la sfârşitul numelor de domenii din acest fişier, în comparaţie cu
fişierul named.conf de mai sus. Unii preferă să înceapă fiecare zonă cu o directivă $ORIGIN, dar
este superfluă. Originea unei zone (unde în ierarhia DNS aparţine) este specificată în secţiunea
zone din fişierul named.conf, în acest caz 0.0.127.in-addr.arpa.

Acest fişier de zonă conţine 3 înregistrări de resurse (resource records, RRs): A SOA RR. A NS
RR şi A PTR RR. SOA este prescurtarea pentru Start Of Authority (Început de
Autoritate).Caracterul `@' este o notaţie specială, având sens de origine, şi deoarece coloana
domeniu pentru acest fişier este 0.0.127.in-addr.arpa; prima linie înseamnă de fapt:

0.0.127.in-addr.arpa. IN SOA ...

NS este Name Server RR. Nu este nici un '@' la începutul acestei linii, este implicit deoarece
ultima linia a început cu '@'. Se scrie mai puţin aşa. Deci linia NS ar putea fi scrisă şi aşa:

0.0.127.in-addr.arpa. IN NS ns.linux.bogus

Ea spune DNS care maşină este server de nume pentru domeniul 0.0.127.in-addr.arpa, el
este ns.linux.bogus. "ns" este un nume obişnuit pentru serverele de nume, la fel cum serverele
de web sunt numite de obicei www.ceva.undeva, dar numele poate fi oricare altul. În final,
înregistrarea PTR spune că host-ul la adresa 1 în subreţeaua 0.0.127.in-addr.arpa, adică,
127.0.0.1 se numeşte localhost.

Înregistrarea SOA este preambulul tuturor fişierelor de zone, şi trebuie să existe fix una în fiecare
asfel de fişier. Ea descrie zona, de unde vine (o maşină numită ns.linux.bogus) şi cine este
responsabil de conţinutul ei (hostmaster@linux.bogus, trebuie să vă puneţi adresa de e-mail aici),
ce versiune a fişierului zonă este (serial: 1) şi alte lucruri în legătură cu cache-ul şi serverele
DNS secundare. Pentru celelalte câmpuri (refresh, retry, expire şi minimum) utilizaţi numerele
din acest HOWTO şi ar trebui să fie în regulă.

Acum reporniţi named-ul (comanda este ndc restart) şi utilizaţi nslookup pentru a examina
ce aţi făcut.

$ nslookup

Default Server: localhost


Address: 127.0.0.1
127.0.0.1
Server: localhost
Address: 127.0.0.1

Name: localhost
Address: 127.0.0.1

deci ia localhost din 127.0.0.1, ceea ce este bine. Acum, pentru treaba principală, domeniul
linux.bogus, inseraţi o nouă secţiune "zone" în named.conf:

______________________________________________________________________
zone "linux.bogus" {
notify no;
type master;
file "pz/linux.bogus";
};
______________________________________________________________________

Din nou atenţie la lipsa caracterului "." din numele domeniului în fişierul named.conf.

În fişierul zonei linux.bogus vom pune date complet aiurea:


______________________________________________________________________
;
; Fişier pentru zona linux.bogus
;
; Întreg fişierul pentru zona
;
@ IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
199802151 ; serial, todays date + todays serial #
8H ; refresh, seconds
2H ; retry, seconds
1W ; expire, seconds
1D ) ; minimum, seconds
;
NS ns ; Inet Address of name server
MX 10 mail.linux.bogus ; Primary Mail Exchanger
MX 20 mail.friend.bogus. ; Secondary Mail Exchanger
;
localhost A 127.0.0.1
ns A 192.168.196.2
mail A 192.168.196.4
______________________________________________________________________

Două lucruri trebuie să fie clare despre înregistrarea SOA. ns.linux.bogus trebuie să fie o maşină
existentă cu o înregistrare A. Nu este permis să aveţi o înregistrare CNAME pentru maşina
menţionată în înregistrarea SOA. Numele nu trebuie să fie "ns", poate fi orice nume de host
permis. În continuare, hostmaster.linux.bogus trebuie să fie citit ca
hostmaster@linux.bogus, şi acesta trebuie să fie un mail alias sau un mailbox pe care persoana
care întreţine DNS-ul să-l citească frecvent. Orice mail în legătură cu domeniul va fi trimis la
adresa listată aici. Numele nu trebuie să fie "hostmaster", poate fi adresa dumneavoastra de e-
mail normală, dat adresa "hostmaster" este adeseori de aşteptat să fie validă.

Este un nou tip de înregistrare de resurse (RR) în acest fişier, MX, sau Mail eXchanger RR. El
spune sistemului de mail unde să trimită mail care este adresat cuiva someone@linux.bogus, la
noi se trimite la mail.linux.bogus sau mail.friend.bogus. Numărul dinaintea fiecărei
maşini este prioritatea MX RR-ului. RR-ul cu cea mai mică prioritate (10) este acela la care
mail-ul fa fi trimis dacă este posibil. Dacă apare vreo eroare mail-ul va fi trimis unui server cu
număr mai mare, un server secundar de mail, la noi mail.friend.bogus care are prioritatea 20
aici.

Reporniţi named-ul cu comanda este ndc restart. Examina ce aţi făcut cu nslookup:

$ nslookup
set q=any
linux.bogus
Server: localhost
Address: 127.0.0.1

linux.bogus
origin = ns.linux.bogus
mail addr = hostmaster.linux.bogus
serial = 199802151
refresh = 28800 (8 hours)
retry = 7200 (2 hours)
expire = 604800 (7 days)
minimum ttl = 86400 (1 day)
linux.bogus nameserver = ns.linux.bogus
linux.bogus preference = 10, mail exchanger = mail.linux.bogus.linux.bogus
linux.bogus preference = 20, mail exchanger = mail.friend.bogus
linux.bogus nameserver = ns.linux.bogus
ns.linux.bogus internet address = 192.168.196.2
mail.linux.bogus internet address = 192.168.196.4

După o examinare atentă veţi găsi un bug. Linia

linux.bogus preference=10, mail exchanger=mail.linux.bogus.linux.bogus

este greşită. Ar trebui să fie:

linux.bogus preference = 10, mail exchanger = mail.linux.bogus


Am făcut această greşeală deliberat, ca să puteţi învăţa din ea :-) Uitându-vă în fişierul cu zona
veţi găsi că în linia

MX 10 mail.linux.bogus ; Primary Mail Exchanger

lipseşte un punct. Sau are un "linux.bogus" în plus. Dacă un nume de maşină nu se termină în
punct într-un fişier zonă originea este adăugată la sfârşit, ceea ce a dus la noi la
linux.bogus.linux.bogus. Deci sau:
______________________________________________________________________
MX 10 mail.linux.bogus. ; Primary Mail Exchanger
______________________________________________________________________
sau
______________________________________________________________________
MX 10 mail ; Primary Mail Exchanger
______________________________________________________________________

sunt corecte. Eu prefer ultima forma, este mai puţin de scris. Sunt însă unii experţi în bind care
nu sunt de acord cu asta, şi sunt unii care sunt de acord. Într-un fişier de zone domeniul trebuie
să fie scris şi terminat cu ".", sau nu trebuie scris deloc, caz în care el este substituit cu originea.

Trebuie să vă bat la cap că în fişierul named.conf nu trebuie să fie "." după numele de domenii.
Nici nu aveţi habar de câte ori un "." în plus sau în minus au stricat lucrurile şi au adus confuzie.

Deci după aceasta, iată noul fişier zonă, cu câteva informaţii în plus:
______________________________________________________________________
;
; Fişier pentru zona linux.bogus
;
; Întreg fişierul pentru zona
;
@ IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
199802151 ; serial, todays date + todays serial #
8H ; refresh, seconds
2H ; retry, seconds
1W ; expire, seconds
1D ) ; minimum, seconds
;
TXT "Linux.Bogus, your DNS consultants"
NS ns ; Inet Address of name server
NS ns.friend.bogus.
MX 10 mail ; Primary Mail Exchanger
MX 20 mail.friend.bogus. ; Secondary Mail Exchanger

localhost A 127.0.0.1
gw A 192.168.196.1
HINFO "Cisco" "IOS"
TXT "The router"

ns A 192.168.196.2
MX 10 mail
MX 20 mail.friend.bogus.
HINFO "Pentium" "Linux 2.0"
www CNAME ns

donald A 192.168.196.3
MX 10 mail
MX 20 mail.friend.bogus.
HINFO "i486" "Linux 2.0"
TXT "DEK"

mail A 192.168.196.4
MX 10 mail
MX 20 mail.friend.bogus.
HINFO "386sx" "Linux 1.2"

ftp A 192.168.196.5
MX 10 mail
MX 20 mail.friend.bogus.
HINFO "P6" "Linux 2.1.86"
______________________________________________________________________

Există un număr de RR-uri noi aici: HINFO (Host INFOrmation) are două părţi, este un bun
obicei să le menţionaţi pe amândouă. Prima parte este este hardware-ul sau CPU-ul de pe
maşină. Maşina numită ns are un CPU Pentium şi rulează Linux 2.0. CNAME (Canonical
NAME) este o modalitate de a da fiecărei maşini mai multe nume. Deci www este un alias pentru
ns.

Folosirea înregistrarii CNAME este un pic controversată. Dar este "safe" de urmărit regula: o
înregistrare MX, CNAME sau SOA nu trebuie să refere niciodată o înregistrare CNAME, ele
trebuie să refere ceva dintr-o înregistrare A, deci este de nedorit să avem:
______________________________________________________________________
foobar CNAME www ; NU!
______________________________________________________________________
dar corect să avem:
______________________________________________________________________
foobar CNAME ns ; Da!
______________________________________________________________________

Este de asemenea "safe" să presupunem că un CNAME nu este un nume legal pentru o adresă de
mail: webmaster@www.linux.bogus este o adresă de mail ilegală dată de configuraţia de ami
sus. Vă puteţi aştepta ca câţiva administratori de amil Acolo Afară să forţeze această regulă,
chiar dacă ea lucrează pentru dumneavoastră. Modalitatea de evitare a acesteia este folosirea de
înregistrări A (şi posibil altele deasemenea, ca înregistrările MX) în schimb.
______________________________________________________________________
www A 192.168.196.2
______________________________________________________________________

Un număr de "arch-bind-wizards" recomandă evitarea completă a utilizării CNAME. Dar


discuţia despre cum sau cum să nu depăşeşte acest HOWTO.

Dar după cum vedeţi, acest HOWTO şi multe site-uri nu urmează această regulă.

Încărcaţi noua bază de date rulând ndc reload, aceasta forţâând named sa-şi recitească fişierele.

$ nslookup
Default Server: localhost
Address: 127.0.0.1

ls -d linux.bogus

Aceasta înseamnă că toate înregistrările trebuie listate. Rezultatul este acesta:


[localhost]
$ORIGIN linux.bogus.
@ 1D IN SOA ns hostmaster (
199802151 ; serial
8H ; refresh
2H ; retry
1W ; expiry
1D ) ; minimum

1D IN NS ns
1D IN NS ns.friend.bogus.
1D IN TXT "Linux.Bogus, your DNS consultants"
1D IN MX 10 mail
1D IN MX 20 mail.friend.bogus.
gw 1D IN A 192.168.196.1
1D IN HINFO "Cisco" "IOS"
1D IN TXT "The router"
mail 1D IN A 192.168.196.4
1D IN MX 10 mail
1D IN MX 20 mail.friend.bogus.
1D IN HINFO "386sx" "Linux 1.0.9"
localhost 1D IN A 127.0.0.1
www 1D IN CNAME ns
donald 1D IN A 192.168.196.3
1D IN MX 10 mail
1D IN MX 20 mail.friend.bogus.
1D IN HINFO "i486" "Linux 1.2"
1D IN TXT "DEK"
ftp 1D IN A 192.168.196.5
1D IN MX 10 mail
1D IN MX 20 mail.friend.bogus.
1D IN HINFO "P6" "Linux 1.3.59"
ns 1D IN A 192.168.196.2
1D IN MX 10 mail
1D IN MX 20 mail.friend.bogus.
1D IN HINFO "Pentium" "Linux 1.2"

Aceasta este bine. După cum vedeţi, arată cam ca fişierul zonă însuşi. Să vedem ce spune despre
www singur:

set q=any
www.linux.bogus.
Server: localhost
Address: 127.0.0.1

www.linux.bogus canonical name = ns.linux.bogus


linux.bogus nameserver = ns.linux.bogus
linux.bogus nameserver = ns.friend.bogus
ns.linux.bogus internet address = 192.168.196.2

Cu alte cuvinte, numele adevărat pentru www.linux.bogus este ns.linux.bogus, şi de


asemenea sunt date câteva informaţii despre ns, suficiente să vă conectaţi la el dacă aţi fi un
program.

Acum suntem la jumătarea drumului.

4.3. Zona inversă


Acum programele pot converti numele din linux.bogus în adrese la care se pot conecta. Dar
este necesară însă şi o zonă înversă, una care să facă DNS-ul în stare să convertească dintr-o
adresă la un nume. Acest nume este folosi de o mulţime de diferite servere (FTP, IRC, WWW şi
altele) ca să decidă dacă vor să vorbească cu dumneavoastră sau nu, sau ce prioritate să vă
asocieze. Pentru acces deplin la Internet o zonă inversă este necesară.

Puneţi aceasta în named.conf:


______________________________________________________________________
zone "196.168.192.in-addr.arpa" {
notify no;
type master;
file "pz/192.168.196";
};
______________________________________________________________________
Este exact la fel cu 0.0.127.in-addr.arpa, şi conţinutul este similar:
______________________________________________________________________
@ IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
199802151 ; Serial, todays date + todays serial
8H ; Refresh
2H ; Retry
1W ; Expire
1D) ; Minimum TTL
NS ns.linux.bogus.

1 PTR gw.linux.bogus.
2 PTR ns.linux.bogus.
3 PTR donald.linux.bogus.
4 PTR mail.linux.bogus.
5 PTR ftp.linux.bogus.
______________________________________________________________________

Acum restartaţi named-ul (ndc restart) şi examinaţi-vă munca cu nslookup:


______________________________________________________________________
192.168.196.4
Server: localhost
Address: 127.0.0.1

Name: mail.linux.bogus
Address: 192.168.196.4
______________________________________________________________________

deci pare OK, să vedem totul acum:


______________________________________________________________________
ls -d 196.168.192.in-addr.arpa
[localhost]
$ORIGIN 196.168.192.in-addr.arpa.
@ 1D IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
199802151 ; serial
8H ; refresh
2H ; retry
1W ; expiry
1D ) ; minimum

1D IN NS ns.linux.bogus.
1 1D IN PTR gw.linux.bogus.
2 1D IN PTR ns.linux.bogus.
3 1D IN PTR donald.linux.bogus.
4 1D IN PTR mail.linux.bogus.
5 1D IN PTR ftp.linux.bogus.
@ 1D IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
199802151 ; serial
8H ; refresh
2H ; retry
1W ; expiry
1D ) ; minimum
______________________________________________________________________
Arată bine ! Dacă ce vedeţi nu arată aşa atunci uitaţi-vă la erorile din syslogd, v-am explicat cum
la începutul acestui capitol.

4.4. La ce să aveţi grijă


Sunt câteva lucruri pe care trbuie să le adaug aici. Adresele IP din exemple de mai sus sunt luate
din unul din blocurile de reţele private, adică nu sunt permise pe internet. Deci se pot folosi fără
probleme într-un HOWTO. Al doilea lucru este linia notify no. Ea spune named să nu-şi anunţe
serverele secundare (slaves) când s-a facut vre-un update la unul din fişierele cu zone.

În bind-8 named poate anunţa celelalte servere listate în înregistrările NS în fişierul zonă când o
zonă s-a modificat. Aceasta este convenabil pentru uz ordinar, dar pentru experimentări cu
zonele această facilitate trebuie să fie oprită, pentru că nu doim ca experimenul nostru să polueze
Ineternetul, nu ?
Şi, de asemenea, acest domeniu este foarte aiurea, la fel şi adresele din el. Pentru un exemplu din
lumea reală vedeţi următoarea secţiune mare.

4.5. De ce căutările inverse nu lucrează


Sunt câteva chestii care în mod normal sunt evitate cu căutările inverse care sunt deseori vazute
când se configurează zonele inverse. Înainte de a începe aveţi nevoie de căutările inverse ale
maşinilor să funcţioneze pe serverul de nume al dumneavoastră. Dacă nu este aşa, reveniţi şi
remediaţi înainte de a continua.

Voi discuta două eşecuri ale căutărilor inverse după cum sunt vazute din afara reţelei
dumneavoastră.

4.5.1. Zona inversă nu este delegată


Când cereţi unui ISP o clasă de adrese şi un nume de domeniu numele de domeniu este în mod
normal delegat ca master, desigur. O delegare este înregistrarea NS care vă ajută să ajungeţi de la
un server de nume la altul, după cum am explicat în secţiunea de mai sus. Aţi citit-o, nu-i aşa ?
Dacă zona inversă nu funcţionează reveniţi şi citiţi-o. Acum.

Zona inversă trebuie de asemenea să fie delegată. Dacă aţi obţinut reţeaua 192.168.196 cu
domeniul linux.bogus de la ISP-ul dumneavoastră, este necesar ca el să pună înregistrări NS
pentru dumneavoastră în zonele inverse la fel ca în zonele de înaintare. Dacă urmăriţi lanţul de la
in-addr.arpa în sus până la reţeaua dumneavoastră veţi găsi probabil o verigă lipsă în lanţ.
Foarte probabil la ISP-ul dumneavoastră. Odată găsită această ruptură, contactaţi-vă ISP-ul şi
cereţi-i să o corecteze.

4.5.2. Aveţi o subreţea ce are mai puţin de o clasă


Acesta este oarecum o chestiune avansată, dar astfel de subreţele sunt destul de comune în zilele
noastre şi este posibil să aveţi aşa ceva dacă nu sunteţi o companie de marime mijlocie.

O subreţea cu mai puţin de o clasă este ceea ce ţine Internet-ul în funcţiune astăzi. Cu câţiva ani
înainte a fost mare agitaţie despre micşorarea adreselor de IP. Oamenii de la IETF (Internet
Engineering Task Force, ei ţin Internet-ul în funcţiune) şi-au bătut capul şi au rezolvat problema.
La un anume preţ. Preţul este că veţi primi mai puţin de o clasă "C" şi unele lucruri se vor strica.
Vă rog vedeţi Ask Mr. DNS la http://www.acmebw.com/askmrdns/00007.htm pentru o explicaţie
a acesteia şi cum să o rezolvaţi.

Aţi citit-o ? Nu am de gând să o explic deci vă rog citiţi-o.

Prima parte a problemei este aceea că ISP-ul dumneavoastră trebuie să înţeleagă tehnica descrisă
de Mr. DNS. Nu toţi micii ISP-işti au o asemenea înţelegere. Dacă este aşa trebuie să le le
explicaţi şi să fiţi perseverent. Dar fiţi siguri mai întâi că o înţelegeţi ;-). Ei vor seta o zonă
înversă pe serverul lor pe care o puteţi verifica pentru corectitudine cu nslookup.

A doua parte şi ultima a problemei este aceea că trebuie să înţelegeţi tehnica. Dacă nu sunteţi
sigur reveniţi şi citiţi-o din nou. Apoi vă puteţi seta propria dumneavoastă zonă inversă dup cum
este descris de Mr. DNS.

Mai este încă o capcană care vă pândeşte. Vechii resoveri nu sunt capabili să urmeze smecheria
CNAME în rezolvarea lanţului şi vor eşua în încercarea de a rezolva invers maşina
dumneavoastră. Aceasta poate rezulta în asignarea unei adrese incorecte, refuzarea accesului sau
ceva asemănător. Dacă vă încurcaţi în aşa ceva singura soluţie (pe care o cunosc) este ca ISP-ul
dumneavostră să vă pună înregistrările PTR direct în fişierul lor cu clasa incompletă în locul
utilizării smecheriei CNAME.

Unii ISP vă oferă alte moduri de a rezolva asta, ca de exemplu formuri Web în care veţi
introduce mapările inverse, sau alte sisteme magice.
5. Exemplu de domeniu adevărat
Unde vom prezenta nişte fişiere zonă adevărate

Utilizatorii mi-au sugerat să includ un exemplu real al unui domeniu care funcţionează, pe lângă
exemplul didactic.

Folosesc acest exemplu cu permisiunea lui David Bullock de la LAND-5. Aceste fişiere au fost
la zi în 24 septembrie 1996, şi au fost modificate pentru a fi conforme cu restricţiile bind 8 şi să
folosească extensiile de mine. Deci, ce vedeţi aici este puţin diferit de ceea ce veţi găsi dacă
căutaţi pe name serverul lui LAND-5 acum.

5.1. /etc/named.conf (sau /var/named/named.conf)


Aici găsim secţiunea zonei primare pentru cele două zone inverse necesare: reţeaua 127.0.0 şi
subreţeaua 206.6.177 a LAND-5. Şi o linie primară pentru zona de înaintare land-5.com. De
asemenea, observaţi că în loc să stocheze aceste fişiere într-un director numit pz, aşa cum am
făcut eu în acest HOWTO, el le pune într-un director numit zone.
______________________________________________________________________
// Boot file for LAND-5 name server

options {
directory "/var/named";
};

zone "." {
type hint;
file "root.hints";
};

zone "0.0.127.in-addr.arpa" {
type master;
file "zone/127.0.0";
};

zone "land-5.com" {
type master;
file "zone/land-5.com";
};

zone "177.6.206.in-addr.arpa" {
type master;
file "zone/206.6.177";
};
______________________________________________________________________
Dacă puneţi aceasta în fişierul named.conf al dumneavoastră, VA ROG puneţi "notify no;" în
secţiunea zonelor pentru cele două zone land-5 pentru a evita accidentele.

5.2. /var/named/root.hints
Nu uitaţi că acest fişier este dinamic, cel listat aici este vechi. Ar fi mai bine să utilizaţi unul
produs acum, cu dig, după cum voi explica.
______________________________________________________________________
; << DiG 8.1 << @A.ROOT-SERVERS.NET.
; (1 server found)
;; res options: init recurs defnam dnsrch
;; got answer:
;; -HEADER<<- opcode: QUERY, status: NOERROR, id: 10
;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13
;; QUERY SECTION:
;; ., type = NS, class = IN

;; ANSWER SECTION:
. 6D IN NS G.ROOT-SERVERS.NET.
. 6D IN NS J.ROOT-SERVERS.NET.
. 6D IN NS K.ROOT-SERVERS.NET.
. 6D IN NS L.ROOT-SERVERS.NET.
. 6D IN NS M.ROOT-SERVERS.NET.
. 6D IN NS A.ROOT-SERVERS.NET.
. 6D IN NS H.ROOT-SERVERS.NET.
. 6D IN NS B.ROOT-SERVERS.NET.
. 6D IN NS C.ROOT-SERVERS.NET.
. 6D IN NS D.ROOT-SERVERS.NET.
. 6D IN NS E.ROOT-SERVERS.NET.
. 6D IN NS I.ROOT-SERVERS.NET.
. 6D IN NS F.ROOT-SERVERS.NET.

;; ADDITIONAL SECTION:
G.ROOT-SERVERS.NET. 5w6d16h IN A 192.112.36.4
J.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.10
K.ROOT-SERVERS.NET. 5w6d16h IN A 193.0.14.129
L.ROOT-SERVERS.NET. 5w6d16h IN A 198.32.64.12
M.ROOT-SERVERS.NET. 5w6d16h IN A 202.12.27.33
A.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.4
H.ROOT-SERVERS.NET. 5w6d16h IN A 128.63.2.53
B.ROOT-SERVERS.NET. 5w6d16h IN A 128.9.0.107
C.ROOT-SERVERS.NET. 5w6d16h IN A 192.33.4.12
D.ROOT-SERVERS.NET. 5w6d16h IN A 128.8.10.90
E.ROOT-SERVERS.NET. 5w6d16h IN A 192.203.230.10
I.ROOT-SERVERS.NET. 5w6d16h IN A 192.36.148.17
F.ROOT-SERVERS.NET. 5w6d16h IN A 192.5.5.241

;; Total query time: 215 msec


;; FROM: roke.uio.no to SERVER: A.ROOT-SERVERS.NET. 198.41.0.4
;; WHEN: Sun Feb 15 01:22:51 1998
;; MSG SIZE sent: 17 rcvd: 436
______________________________________________________________________
5.3. /var/named/zone/127.0.0
Doar baza, înregistrarea SOA obligatorie, şi o înregistrare care mapează 127.0.0.1 pe localhost.
Amândouă sunt necesare. Nu trebuie să fie mai multe în acest fişier. Nu va trebui să fie modificat
niciodată, dacă nu se schimbă serverul de nume sau adresa hostmaster.
______________________________________________________________________
@ IN SOA land-5.com. root.land-5.com. (
199609203 ; Serial
28800 ; Refresh
7200 ; Retry
604800 ; Expire
86400) ; Minimum TTL
NS land-5.com.

1 PTR localhost.
______________________________________________________________________

5.4. /var/named/zone/land-5.com
Aici vedem înregistrarea obligatorie SOA, şi înregistrările NS necesare. Putem vedea că el are un
server de nume secundar, ca fiind ns2.psi.net. Aceasta este aşa cum trebuie să fie, tot timpul să
aveţi un server secundar ca backup. Putem vedea că are un host care realizează mai multe
servicii Internet, şi că este făcut cu CNAME-uri (o alternativă ar fi utilizarea de înregistrări A).

Aşa cum puteţi vedea din înregistrarea SOA, fişierul zonă are originea în land-5.com, persoana
de contact este root@land-5.com. hostmaster este un alt nume des utilizat pentru persoana de
contact. Numărul serial este obişnuitul format yyyymmdd cu numărul serial al zilei la urmă;
aceasta este probabil a şasea versiune a fişierului de pe 20 septembrie 1996. Nu uitaţi că numărul
serial trebuie să crească monoton, aici este doar o cifră pentru numărul serial al zilei, deci după 9
editări el trebuie să aştepte până mâine înainte de a edita fişierul din nou. Ar fi bine să utilizaţi 2
cifre.
______________________________________________________________________
@ IN SOA land-5.com. root.land-5.com. (
199609206 ; serial, todays date + todays serial #
8H ; refresh, seconds
2H ; retry, seconds
1W ; expire, seconds
1D ) ; minimum, seconds
NS land-5.com.
NS ns2.psi.net.
MX 10 land-5.com. ; Primary Mail Exchanger
TXT "LAND-5 Corporation"

localhost A 127.0.0.1
router A 206.6.177.1

land-5.com. A 206.6.177.2
ns A 206.6.177.3
www A 207.159.141.192

ftp CNAME land-5.com.


mail CNAME land-5.com.
news CNAME land-5.com.

funn A 206.6.177.2

;
; Workstations
;
ws-177200 A 206.6.177.200
MX 10 land-5.com. ; Primary Mail Host
ws-177201 A 206.6.177.201
MX 10 land-5.com. ; Primary Mail Host
ws-177202 A 206.6.177.202
MX 10 land-5.com. ; Primary Mail Host
ws-177203 A 206.6.177.203
MX 10 land-5.com. ; Primary Mail Host
ws-177204 A 206.6.177.204
MX 10 land-5.com. ; Primary Mail Host
ws-177205 A 206.6.177.205
MX 10 land-5.com. ; Primary Mail Host
; {Many repetitive definitions deleted - SNIP}
ws-177250 A 206.6.177.250
MX 10 land-5.com. ; Primary Mail Host
ws-177251 A 206.6.177.251
MX 10 land-5.com. ; Primary Mail Host
ws-177252 A 206.6.177.252
MX 10 land-5.com. ; Primary Mail Host
ws-177253 A 206.6.177.253
MX 10 land-5.com. ; Primary Mail Host
ws-177254 A 206.6.177.254
MX 10 land-5.com. ; Primary Mail Host
______________________________________________________________________

Dacă examinaţi serverul de nume al lui land-5 veţi găsi că numele hosturilor sunt de forma
ws_number. De la versiunile târzii de bind 4, named a începutsă forţere restricţiile pentru ce
caractere pot fi utilizate în numele host-urilor. Deci asta nu funcţionează în bind 8 de loc, şi eu
am substituit "-" în locul "_" pentru utilizarea în acest HOWTO.

Alt lucru de notat este acela că staţiile de lucru nu au nume individuale, ci un prefix urmat de
ultimele două părţi ale adresei IP. Utilizând o asemenea convenţie poate simplifica întreţinerea
destul de mult, dar poate fi puţin impersonal, şi, de fapt, poate fi o sursă de iritare pentru clienţi.

Vedem de asemenea că funn.land-5.com este un alias pentru land-5.com, dar cu înregistrare A,


nu cu CNAME. Acesta este o politică bună, după cum am mai spus.
5.5. /var/named/zone/206.6.177
Voi comenta acest fişier mai jos
______________________________________________________________________
@ IN SOA land-5.com. root.land-5.com. (
199609206 ; Serial
28800 ; Refresh
7200 ; Retry
604800 ; Expire
86400) ; Minimum TTL
NS land-5.com.
NS ns2.psi.net.
;
; Servers
;
1 PTR router.land-5.com.
2 PTR land-5.com.
2 PTR funn.land-5.com.
;
; Workstations
;
200 PTR ws-177200.land-5.com.
201 PTR ws-177201.land-5.com.
202 PTR ws-177202.land-5.com.
203 PTR ws-177203.land-5.com.
204 PTR ws-177204.land-5.com.
205 PTR ws-177205.land-5.com.
; {Many repetitive definitions deleted - SNIP}
250 PTR ws-177250.land-5.com.
251 PTR ws-177251.land-5.com.
252 PTR ws-177252.land-5.com.
253 PTR ws-177253.land-5.com.
254 PTR ws-177254.land-5.com.
______________________________________________________________________

Zona inveră este partea din configurare care pare să creezecele mai multe necazuri. Este utilizată
pentru a găsi numele host-urilor dacă aveţi adresa IP a acestora. Exemplu: sunteţi un server de
IRC şi acceptaţi conexiuni de la clienţi IRC. Dar sunteţi un server IRC norvegian, şi deci doriţi
să acceptaţi conexiuni doar de la clienţi din Norvegia şi alt ţări scandinave. Când primiţi o
conexiune de la un client IRC, biblioteca C este capabilă să vă spună adresa IP a maşinii care s-a
conectat, pentru că adresa IP este conţinută în toate pachetele care trec prin reţea. Acum puteţi
chema o fumcţie numită gethostbyaddr care caută numele unui host dat prin adresa IP.
gethostbyaddr întreabă un server DNS, care va parcurge DNS-ul, căutând maşina.
Presupunem că conexiunea clienului este de la ws-177200.land-5.com. Adresa IP pe care
biblioteca C o da serverului IRC este 206.6.177.200. Pentru a găsi numele maşinii respective
trebuie să găsim 200.177.6.206.in-addr.arpa. Serverul DNS va găsi serverele arpa., apoi
serverele in-addr.arpa., urmând calea inversă prin 206, apoi 6 şi apoi găsind serverul pentru
zona 177.6.206.in-addr.arpa la LAND-5. De la care în final obţine răspunsul că pentru
200.177.6.206.in-addr.arpa are o înregistrare "PTR ws-177200.land-5.com", adică numele
pentru 206.6.177.200 este ws-177200.land-5.com. Ca şi explicaţia cum prep.ai.mit.edu
este găsit, este puţin ficţionar.

Revenim la exemplul cu serverul IRC. Serverul IRC acceptă conexiuni de la ţările scandinave,
adică *.no, *.se, *.dk, numele ws-177200.land-5.com în mod clar nu face parte din acestea, şi
serverul va refuza coneziunea. Dacă nu ar fi existat o mapare inversă a 206.2.177.200 în zona
in-addr.arpa, serverul nu ar fi fost în stare să găsească un nume şi ar fi avut de comparat
206.2.177.200 cu *.no, *.se şi *.dk, nici unul din ele neprtrivindu-se.

Unii vă vor spune că mapările pentru căutarea inversă sunt importante doar pentru servere, sau
nu sunt importante deloc. Nu este aşa: multe servere ftp, news, IRC şi chiar http nu acceptă
conexiuni de la maşini la care nu le pot găsi numele. Deci mapările inverse pentru maşini sunt de
fapt necesare.

6. Întreţinerea
Să o menţii funcţională

Există o trabă de întreţinere pe care trebuie să o faceţi la named, alta decât să îl ţineţi în
funcţiune. Aceea este de a ţine fişierul root.hints la zi. Cel mai simplu este utilizând dig,
prima dată rulaţi dig fără nici un argument, veţi obţine fişierul root.hints în conformitate cu
serverul dumneavoastră. Apoi întrebaţi unul din serverele din root cu dig@rootserver. Veţi
observa că output-ul seamănă teribil cu un fişier root.hints. (dig @e.root-servers.net .
ns root.hints.new) şi înlocuiţi vechiul root.hints cu el.

Nu uitaţi să reîncarcaţi named după ce aţi înlocuit fişierul cache.

Al Longyear mi-a trimis acest script, care poate fi rulat automat pentru a ţine la zi root.hints,
instalaţi o intrare în crontab pentru a-l rula o dată pe lună şi uitaţi de el. Scriptul presupune că
mail-ul funcţionează şi că aliasul pentru mail "hostmaster" este definit. Trebuie să-l modificaţi
pentru configuraţia dumneavoastră.

______________________________________________________________________
#!/bin/sh
#
# Update the nameserver cache information file once per month.
# This is run automatically by a cron entry.
#
# Original by Al Longyear
# Updated for bind 8 by Nicolai Langfeldt
# Miscelanious error-conditions reported by David A. Ranch
# Ping test suggested by Martin Foster
#
(
echo "To: hostmaster <hostmaster"
echo "From: system <root"
echo "Subject: Automatic update of the root.hints file"
echo

PATH=/sbin:/usr/sbin:/bin:/usr/bin:
export PATH
cd /var/named

# Are we online? Ping a server at your ISP


case `ping -qnc some.machine.net` in
*'100% packet loss'*)
echo "The network is DOWN. root.hints NOT updated"
echo
exit 0
;;
esac

dig @rs.internic.net . ns root.hints.new 2&1

case `cat root.hints.new` in


*NOERROR*)
# It worked
:;;
*)
echo "The root.hints file update has FAILED."
echo "This is the dig output reported:"
echo
cat root.hints.new
exit 0
;;
esac

echo "The root.hints file has been updated to contain the following
information:"
echo
cat root.hints.new

chown root.root root.hints.new


chmod 444 root.hints.new
rm -f root.hints.old
mv root.hints root.hints.old
mv root.hints.new root.hints
ndc restart
echo
echo "The nameserver has been restarted to ensure that the update is
complete."
echo "The previous root.hints file is now called
/var/named/root.hints.old."
) 2&1 | /usr/lib/sendmail -t
exit 0
______________________________________________________________________

Unii dintre dumneavoastră aţi găsit că fişierul root.hints este disponibil de la Internic. Vă rog
nu utilizaţi ftp pentru menţinerea la zi a fişierului root.hints, metoda de mai sus este mult mai
prietenoasă cu reţeaua şi deasemenea cu Internic.

7. Conversia de la versiunea 4 la versiunea 8


Aceasta a fost inţia o secţiune despre utilizarea bind 8 scrisă de David E. Smith
(dave@bureau42.ml.org). Am modificat-o puţin pentru a se potrivi cu noul nume al secţiunii

Nu este prea mare treabă. Doar cu utilizarea named.conf în loc de named.boot, totul este
identic. Şi bind 8 vine cu un script perl care converteşte fişierele din stil vechi în stil nou.

Exemplu de named.boot (stil vechi) pentru un server de numa care face doar cache:
______________________________________________________________________
directory /var/named
cache . root.hints
primary 0.0.127.IN-ADDR.ARPA 127.0.0.zone
primary localhost localhost.zone
______________________________________________________________________

În linia de comanda, în directorul bind8/src/bin/named (se presupune că aveţi sursele, dacă


aveţi doar binarele are trebui să existe şi scriptul pe undeva, dar nu sunt sigur), scrieţi:
______________________________________________________________________
./named-bootconf.pl < named.boot named.conf
______________________________________________________________________

Aceasta creează named.conf:


______________________________________________________________________
// generated by named-bootconf.pl

options {
directory "/var/named";
};

zone "." {
type hint;
file "root.hints";
};

zone "0.0.127.IN-ADDR.ARPA" {
type master;
file "127.0.0.zone";
};

zone "localhost" {
type master;
file "localhost.zone";
};
______________________________________________________________________

Funcţionează pentru orice există în fişierul named.boot, dar nu adaugă noile îmbunătăţiri şi
opţiuni de configurare care le permite bind 8. Iată un named.conf care face acelaşi lucru, dar
ceva mai eficient.
______________________________________________________________________
// This is a configuration file for named (from BIND 8.1 or later).
// It would normally be installed as /etc/named.conf.
// The only change made from the `stock' named.conf (aside from this
// comment :) is that the directory line was uncommented, since I
// already had the zone files in /var/named.

options {
directory "/var/named";
datasize 20M;
};

zone "localhost" IN {
type master;
file "localhost.zone";
};

zone "0.0.127.in-addr.arpa" IN {
type master;
file "127.0.0.zone";
};

zone "." IN {
type hint;
file "root.hints";
};
______________________________________________________________________

În distribuţia de bind 8 în directorul bind8/src/bin/named/test veţi gasi acest fişier, precum


şi copii ale zişierelor zonă, mulţi le pot doar copia şi utiliza imediat.

Formatul fişierelor zonă şi root.hints este identic, la fel şi comenzile pentru întreţinerea lor.
8. Întrebări şi răspunsuri
Vă rog citiţi această secţiune înainte de a-mi trimite mail-uri.

1. named doreşte un fişier named.boot

Citiţi HOWTO-ul greşit. Vă rog citiţi versiunea veche a acestui HOWTO, care acoperă bind 4, la
http://www.math.uio.no/~janl/DNS/

2. Cum să folosim DNS în spatele unui firewall?

Un hint: forward only;, Probabil veţi avea nevoie de asemenea de


___________________________________________________________________
query-source port 53;

___________________________________________________________________

în secţiunea "options" a fişierului named.conf după cum am sugerat în examplul din secţiunea
"caching".

3. cum să facem DNS să rotească prin adresele disponibile


pentru un serviciu, să spunem www.site.încarcat pentru a
obţine un efect de balansare a încarcării, sau ceva similar?

Faceţi mai multe înregistrări A pentru www.site.încărcat şi utilizaţi bind 4.9.3 sau mai mare.
Atunci bind va realiza automat un round-robin cu răspunsurile. Aceasta nu funcţionează cu
versiunile mai vechi de bind.

4. Vreu să configurez DNS pe un intranet închis. Ce trebuie


să fac?

Aruncaţi fişierul root.hints şi faceţi doar fişierele zone. Asta înseamnă şi că nu trebuie să
menţineţi la zi acest fişier.

5. Cum să configurez un server de nume secundar?

Dacă serverul primar/master are adresa 127.0.0.1, puneţi o linie ca următoare în fişierul
named.conf al serverului secundar:

___________________________________________________________________
zone "linux.bogus" {
type slave;
file "sz/linux.bogus";
masters { 127.0.0.1; };
};

___________________________________________________________________

Puteţi lista mai multe servere primare din care zona poate fi copiată, separându-le prin ";".

6. Doresc ca bind să ruleze atunci când sunt deconectat de la


reţea

Sunt trei puncte în legătură cu aceasta:

· Am primit un mail de la Ian Clark ic@deakin.edu.au în care el explică felul în care a realizat
aceasta.

Rulez named pe maşina mea care face "masquerading". Am două fişiere root.hints, unul
numit root.hints.real care conţine serverele root adevărate şi altul numit root.hints.fake
care conţine ...
___________________________________________________________________
; root.hints.fake
; this file contains no information
___________________________________________________________________

Când sunt deconectat copiez fişierul root.hints.fake în root.hints şi restartez named.


Când sunt conectat copiez fişierul root.hints.real în root.hints şi restartez named.

Aceata este făcută în ip-down şi respectiv ip-up.

Prima dată când fac o cerere deconectat la un nume de domeniu despre care named nu are detalii
obţin aceasta în messages:
Jan 28 20:10:11 hazchem named[10147]: No root nameserver for class IN which I
can live with.

Cu certitudine se pare că funcţionează pentru mine. Pot utiliza serverul de nume pentru maşinile
locale în timp ce sunt deconectat fără întârzierea pentru domeniul extern şi când sunt conectat
cererile funcţionează normal.

· Am primit de asemenea informaţii despre modul în care bind interacţionează cu portmapper pe


o maşină în general deconectată de la Karl-Max Wanger:

Utilizez propriul named pe toate maşinile care ocazional sunt conectate la Internet prin
modem.Serverul de nume rulează doar ca cache, nu are nici o arie de autoritate şi întreabă totul
la serverele de nume din fişierul root.cache. În mod obişnuit pe Slackware, el este pornit
înainte de nfsd and mountd. Pe una dintre maşinile mele (un notebook Libretto 30) am
problema următoare: uneori nu pot monta de pe alt sistem conectat la LAN-ul meu, dar în
majoritatea timpului nu se poate. Aceeaşi situaţie indiferent de utilizarea PLIP, un card PCMCIA
ethernet sau PPP peste o interfaţă serială. După ceva timp de ghciri şi experimentări am găsit că
aparent named s-a încurcat cumva cu procesul de înregistrare pe care nfsd şi mountd trebuie să-l
aibă cu portmapper-ul la pornire (pornesc aceşti daemoni la boot-are, ca de obicei). Pornirea
named-ului după nfsd şi mountd a eliminat această problemă compet. Cum nu este nici un
dezavantaj de aşteptat de la asemenea secvenţă de boot sfătuiec pe toţi să facă la fel pentru a
preveni acest potenţial necaz.

· În final, există un HOWTO despre aceasta: Ask Mr. DNS la


http://www.acmebw.com/askmrdns/-linux-ns. Este despre bind 4 totuşi, deci va trebui să adaptaţi
ce spune pentru bind 8.

7. Unde stochează servrul de nume cache-ul? Există vreo


posibilitate de control a mărimii acestui cache?

Cache-ul este păstrat compet în memorie, nu este scris pe disc deloc. De fiecare dată când
omorâţi named cache-ul este pierdut. Cache-ul nu este controlabil în nici un fel. named îl
controlează prin câteva reguli simple şi atât. Nu puteţi controla cache-ul şi nici mărimea lui
pentru nici un motiv. Dacă doriţi aşa ceva vă puteţi "rezolva" prin modificarea named. Dar
aceasta nu este recomandată.

8. Salvează named cache-ul între restartări? Pot să îl fac să îl


salveze?

Nu, named nu salvează cache-ul când moare. Aceasta înseamnă că cache-ul trebuie refăcut de
fiecare dată când reporniţi named. Nu există nici o modalitate de a face named să salveze cache-
ul într-un fişier. Dacă doriţi aşa ceva vă puteţi "rezolva" prin modificarea named. Dar aceasta nu
este recomandată.

9. Cum pot obţine un domeniu? Doresc să-mi configurez un


domeniu numit (de examplu) linux-rules.net. Cum pot obţine
ca domeniul pe care îl doresc să fie asignat mie?

Contactaţi-vă ISP-ul. Acesta va fi în măsură să vă ajute. În majoritatea tărilor va fi nevoie să


platiţi bani pentru a obţine un domeniu.

9. Cum să deveniţi un administrator DNS


"adevărat"
Documentaţie şi unelte

Documentaţie Adevărată există. Online şi tipărită. Citirea unei părţi din aceasta implică saltul de
la un administrator mic la unul mare. Documentaţia tipărită standard este "DNS and BIND" de
C. Liu şi P. Albitz de la O'Reilly & Associates, Sebastopol, CA, ISBN 0-937175-82-X. Am citit-
o, este excelentă, şi deşi este bazată pe bind 4, aceasta nu este o problemă reală. Este de
asemenea o secţiune despre DNS în "TCP/IP Network Administration", de Craig Hunt de la
O'Reilly..., ISBN 0-937175-82-X. Altă necesitate pentru buna administrare DNS (sau bună
pentru orice de felul acesta) este "Zen and the Art of Motorcycle Maintenance" de Robert M.
Pirsig. Disponibilă ca ISBN 0688052304 şi altele.

Online puteţi găsi documentaţie la: http://www.dns.net/dnsrd/ (DNS Resources Directory),


http://www.isc.org/bind.html; un FAQ, un manual de referinţă (BOG - Bind Operations Guide) şi
de asemenea documente şi definiţiile protocoalelor şi hack-uri DNS (acestea şi majoritatea, dacă
nu toate RFC-urile menţionate mai jos sunt conţinute în distribuiţia bind-ului). Nu am citit multe
din ele, deci nu sunt un administrator DNS adevarat. Arnt Gulbrandsen pe de altă parte a citit
BOG şi a fost extaziat de el. Newsgroup-ul comp.protocols.tcp-ip.domains este despre DNS. În
plus există un număr de RFC-uri despre DNS, cele mai importante fiind probabil acestea:

RFC 2052
A. Gulbrandsen, P. Vixie, Un DNS RR pentru specificarea locaţiei serviciilor (DNS SRV),
Octombrie 1996

RFC 1918
Y. Rekhter, R. Moskowitz, D. Karrenberg, G. de Groot, E. Lear, Alocarea adreselor pentru reţele
private, 02/29/1996.

RFC 1912
D. Barr, Erori comune şi operaţionale de configurare a DNS-ului, 02/28/1996.

Erori în RFC 1912


B. Barr Erori în RFC 1912, disponibil la http://www.cis.ohio-state.edu/~barr/rfc1912-
errors.html.

RFC 1713
A. Romao, Unelte pentru depanarea DNS, 11/03/1994.

RFC 1712
C. Farrell, M. Schulze, S. Pleitner, D. Baldoni, Codarea DNS a locaţiilor geografice, 11/01/1994.

RFC 1183
R. Ullmann, P. Mockapetris, L. Mamakos, C. Everhart, Noi definiţii DNS RR, 10/08/1990.

RFC 1035
P. Mockapetris, Numele de domenii - implementare şi specificare, 11/01/1987.

RFC 1034
P. Mockapetris, Numele de domenii - concepte şi facilităţi, 11/01/1987.

RFC 1033
M. Lottor, Ghidul operaţiilor administratorilor de domenii, 11/01/1987.

RFC 1032
M. Stahl, Ghidul administratorilor de domenii, 11/01/1987.

RFC 974
C. Partridge, Rutarea mail-urilor şi sistemul de domenii, 01/01/1986.

You might also like