Professional Documents
Culture Documents
Traducerea în româneşte
Silviu Simen ssimen@ubisoft.ro
22 August 1999
1. Preambul.................................................................................................................................................................. 2
1.1. Chestiuni legale ................................................................................................................................................. 2
1.2. Credite şi cerere pentru ajutor ........................................................................................................................... 2
1.3. Dedicaţie ........................................................................................................................................................... 2
2. Introducere .............................................................................................................................................................. 2
6. Întreţinerea............................................................................................................................................................ 29
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).
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.
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.
ş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.
/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).
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.
$ 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.
pat.uio.no
Server: localhost
Address: 127.0.0.1
Non-authoritative answer:
Name: pat.uio.no
Address: 129.240.2.50
4. Un domeniu simplu
Cum să configuraţi propriul domeniu
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)
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
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
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.
Î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.
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:
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
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.
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
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
______________________________________________________________________
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
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
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.
______________________________________________________________________
Name: mail.linux.bogus
Address: 192.168.196.4
______________________________________________________________________
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.
Î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.
Voi discuta două eşecuri ale căutărilor inverse după cum sunt vazute din afara reţelei
dumneavoastră.
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.
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.
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.
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
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
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.
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.
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
echo "The root.hints file has been updated to contain the following
information:"
echo
cat root.hints.new
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.
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
______________________________________________________________________
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";
};
______________________________________________________________________
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.
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/
___________________________________________________________________
în secţiunea "options" a fişierului named.conf după cum am sugerat în examplul din secţiunea
"caching".
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.
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.
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 ";".
· 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
___________________________________________________________________
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.
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.
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ă.
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ă.
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.
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.
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.