Soluții - PC Magazine Romania, Septembrie 2002
Motto:
"- Băiete, porți pistoalele prea jos !
- Vechiul șerif, Parker, le purta așa ...
- Știu. Șeriful Parker e mort."
(Henry
Fonda instruind un proaspăt șerif, în filmul western Steaua de tinichea)
Numele trandafirului
Răzvan Sandu
Începând cu acest episod, vom pătrunde în detaliile sistemului
de operare Linux abordând, unul câte unul, serviciile pe care acesta le oferă.
Veți avea ocazia să descoperiți de ce Linux este un concurent atât de puternic
pentru sistemele de operare comerciale: în distribuție primiți gratuit un set
de unelte de nivel "profesional", care vă oferă o maximă flexibilitate
și viteză de lucru. Nu în ultimul rând, veți putea să înțelegeți mecanismele
interne de funcționare ale rețelelor private și internetului, mecanisme care,
privite prin prisma altor platforme, vă sunt accesibile doar "din exterior".
Smog
Cei care au cât de cât experiență în Windows știu că, începând cu Windows 2000,
Microsoft a făcut eforturi majore pentru a-și adapta propriul sistem de operare
funcționării în internet. În această întrecere, firma din Redmond are de recuperat
decalajul considerabil - "de cultură", aș putea zice - pe care-l are
față de promotorii Unix, ocupanții tradiționali ai pieței serverelor și ai marilor
noduri internet: în principal AT&T, Sun, Hewlett-Packard și uriașul IBM.
Lupta se anunță grea, fiindcă eficiența și flexibilitatea Unix-ului nu pot
fi concurate ușor de un sistem ce-și are rădăcinile în tehnologiile primelor
PC-uri single-user.
Pentru a se putea integra internetului, mașinile Windows trebuiau, în primul
rând, să adopte mecanismele de adresare și denumire folosite pe rețeaua mondială.
De mulți ani, aceste mecanisme sunt sinonime cu structura ierarhică de domenii
și cu serviciul client-server Domain Name Service (DNS). Campionul tehnologiilor
proprietare se vede astfel nevoit să se alinieze unor standarde bine cunoscute
și care nu se află sub controlul său. Pentru utilizatorul final, rezultatul
este unul singur: indiferent că administrați o mașină Windows sau una Linux,
trebuie să vă familiarizați cu DNS - o zonă care, pentru mulți, era până nu
demult o "pată albă".
Despre acest serviciu va fi vorba în cele ce urmează.
Istorie
Pentru a comunica într-o rețea cât de mică bazată pe TCP/IP, calculatoarele
au nevoie să fie identificate unic prin adrese numerice. Conform standardului
IPv4 (care va fi înlocuit în foarte scurt timp cu IPv6), o adresă numerică IP
are forma unui număr exprimat pe 32 de biți, de forma 192.168.0.1.
Fiind numerice, adresele IP sunt perfecte pentru prelucrarea într-un sistem
de calcul, dar greu de reținut pentru oameni. Aceștia preferă să denumească
mașinile folosind nume. Pentru a introduce puțină ordine în marea de calculatoare
răspândite în internet, numele au o structură ierarhică: mașina www.ibm.com.
aparține domeniului organizațiilor comerciale (.com), respectiv firmei IBM și
este serverul său de World Wide Web (www).
Aceasta introduce o nouă problemă: cum se pot asocia (în mod neechivoc) numele
mașinilor cu adresele lor IP? Cum poate fi consultată această bază de date?
Operația de găsire a adresei IP atunci când se cunoaște numele mașinii este
cunoscută sub denumirea de rezolvare a numelui în sens direct (forward), iar
cea contrară sub denumirea de rezolvare inversă (reverse). După cum bănuiți,
acest mecanism este intens folosit și foarte important: este suficient să deschideți
un browser web și să tastați în bara de adrese un nume ca www.debian.org
pentru ca mașina dvs. să fie nevoită să găsească adresa IP a serverului căutat
- altfel, nu veți putea primi pagina web stocată acolo.
În zilele de început ale internetului, soluția găsită era un simplu fișier
text în care se scriau, linie cu linie, asocierile stabilite. Orice mașină Unix
posedă un asemenea fișier: este fișierul /etc/hosts:
192.168.0.1 computer.firma.com.
192.168.0.2 server.sit.net.
Fișierul /etc/hosts este folosit și astăzi, dar numai în rețele mici, neconectate
la internet. Pe măsura dezvoltării internetului, fișierul /etc/hosts căpăta
o dimensiune uriașă și devenea dificil de sincronizat între mașinile participante
în rețea. Gândiți-vă câte milioane de linii, fără nici o greșeală, ar trebui
să posede un asemenea fișier în zilele noastre ! O altă soluție trebuia inventată
rapid - una care să ofere flexibilitate și viteză ...
Botezătorul
Răspunsul a venit tot din zona marilor centre Unix (universități, noduri internet,
sisteme bancare și militare) internet Software Consortium (www.isc.org)
a dezvoltat programul bind, care, ajuns azi la versiunea 9, rămâne și acum cea
mai folosită implementare a serviciului DNS, eficientă și bine standardizată.
În paralel, Microsoft au adăugat și ei o versiune proprie a acestui serviciu,
care se distribuie odată cu Windows 2000 Server.
Un domeniu reprezintă un grup de mașini ce aparțin aceleiași organizații, aceluiași
grup sau aceleiași zone geografice. Exemple de domenii pot fi .com, domeniul
firmelor comerciale, .mitedu., domeniul Institutului de Tehnologie din Massachussets
sau .xnet.ro., domeniul unui furnizor de internet din România. Domeniul rădăcină
(root), care le include pe toate celelalte, este notat cu un punct (.). Sub
el, la primul nivel ierarhic, veți întâlni domenii importante, cum ar fi domeniul
militar al Statelor Unite (.mil.), domeniul guvernamental (.gov.), domeniile
geografice ca .ro., .de. sau .uk., domeniul administrativ al internetului (.net.),
domeniul organizațiilor non-profit (.org.) ș.a. Pe a doua treaptă ierarhică,
pot fi înregistrate domenii aparținând diverselor organizații sau state, cum
ar fi .hp.com., fsf.org. sau pub.ro.. De obicei, la nivelul al treilea întâlniți
deja numele mașinilor care aparțin unui anumit domeniu - www.protv.ro.
este serverul web al postului de televiziune ProTV.
Se observă că domeniile (și numele lor) au structură ierarhică. Numele complet
al unei mașini, care o identifică univoc - cum ar fi www.hp.com.
(inclusiv punctul final) - poartă denumirea de Fully Qualified Domain Name (FQDN).
O zonă (care se suprapune întotdeauna peste un domeniu) reprezintă o grupare
de mașini care se găsesc sub aceeași administrare. Spre exemplu, fizica.pub.ro.
poate fi domeniul aparținând Laboratorului de Fizică al politehnicii din București
și totodată o zonă, fiindcă administrarea denumirii calculatoarelor ce il alcătuiesc
este delegată personalului de acolo.
Ping-pong în rețea
Un client DNS este o mașină care dorește să afle adresa IP a unei alte mașini
pe baza numelui său (sau invers). Pentru asta, el contactează un server DNS
(a cărui adresă IP trebuie să o cunoască în prealabil) pentru a obține răspunsul.
Un server DNS poate conține mapările nume-IP pentru una sau mai multe zone (se
spune că are autoritate asupra acelor zone). În acest caz, el le va comunica
clientului. În caz contrar, va încerca să găsească, prin căutări recursive,
serverul DNS care are autoritate pentru zona solicitată de client și va obține
soluția de la acesta. Procesul poate fi complicat și poate genera mult trafic
de rețea, dar este o metodă eficientă de căutare într-o bază de date distribuită.
Desigur, folosirea unui server DNS dintr-o locație cât mai apropiată geografic
de client va micșora încărcarea rețelei și va genera, probabil, răspunsuri mai
rapide.
Pentru ca un client să poată beneficia întotdeauna de un serviciu DNS, se definesc
servere DNS principale (master sau primary), care conțin definițiile zonelor
aflate sub autoritatea lor și servere secundare (slave sau secondary) care nu
fac decât să "copieze" aceste definiții. Redundanța mecanismului asigură
întotdeauna un punct de salvare în cazul în care serverul DNS principal nu este
accesibil sau când încărcarea rețelei este prea mare.
Practic ...
Proaspăt instalatul sistem Linux conține implicit serverul DNS bind pe care
îl puteți utiliza pe rețeaua firmei, presupunând că tocmai v-ați înregistrat
un domeniu de tipul firma.com. prin furnizorul dvs. de internet. Înregistrarea
constă tocmai în a introduce în baza de date a furnizorului maparea între numele
domeniului firma.com. și adresele IP ale serverelor de nume care vor opera pe
rețeaua dvs. Astfel, toți clienții care vor căuta situl www.firma.com. vor ajunge
- prin intermediul ISP-ului la care sunteți conectat - să "întrebe"
serverele DNS din cadrul organizației dvs. Desigur, domeniul www. firma.com.
poate rămâne și în administrarea ISP-ului, dar toate firmele mai mari vor dori
să îl aibă sub propriul control (adică să creeze o nouă zonă).
Pentru a exploata bind, trebuie să creați mai întâi fișierele de configurare
care îl comandă. Acestea sunt /etc/named.conf și fișierele-zonă aflate în directorul
/var/named. Odată scrise aceste fișiere, nu vă rămâne decât să porniți daemonul
named și serverul dvs. DNS este funcțional. Pe sistemul meu Red Hat, named poate
fi pornit prin intermediul utilitarului ntsysv, o unealtă foarte comodă.
Listingul care urmează prezintă un exemplu de fișier /etc/named.conf, care
este responsabil cu stabilirea parametrilor globali de configurare și cu listarea
tuturor zonelor administrate de nameserver.
## named.conf - configuration for bind
#
# Generated automatically by bindconf, alchemist et al.
controls {
inet 127.0.0.1 allow { localhostc} keys { rndckey; };
};
include "/etc/rndc.key";
options {
directory "/var/named/";
};
zone "." {
type hint;
file "named.ca";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "0.0.127.in-addr.arpa.zone";
};
zone "localhost" {
type master;
file "localhost.zone";
};
În fișierul de mai sus, puteți observa că serverul DNS instalat are autoritate
(master) asupra zonelor localhost (un nume de gazdă fals, pentru calculatoare
neconectate la internet), directă și 0.0.127.in-addr.arpa, inversă. Definiția
acestor zone se găsește în fișierele cu același nume.
Un alt fișier important, pe care însă nu-l veți modifica niciodată, este /var/named/named.ca.
El conține adresele IP și numele serverelor DNS care au autoritate asupra domeniului
rădăcină (.).
Adăugând în secțiunea options o subsecțiune de forma:
forward first;
forwarders {
192.168.5.4;
192.168.3.6;
};
puteți indica serverului dvs. DNS să interogheze alte servere DNS externe (de
exemplu, cele ale ISP-ului) ale căror adrese IP sunt cunoscute. Mecanismul este
util mai ales în cazul rețelelor locale care dispun de o legătură lentă cu internetul.
Iată mai jos și conținutul celor două fișiere de zonă:
localhost.zone
$TTL 86400
@ IN SOA localhost root.localhost (
1 ; serial
28800 ; refresh
7200 ; retry
604800 ; expire
86400 ; ttl
)
@ IN NS localhost.
@ IN A 127.0.0.1
și 0.0.127.in-addr.arpa.zone:
$TTL 86400
@ IN SOA localhost. root.localhost (
1 ; serial
28800 ; refresh
7200 ; retry
604800 ; expire
86400 ; ttk
)
@ IN NS localhost.
1 IN PTR localhost.
Mașina ce are autoritate asupra acestor zone este calculatorul local localhost,
iar eventualele e-mail-uri generate de sistem sunt trimise la root@localhost.
Primul fișier conține, pe ultima linie, o înregistrare de tip A care asociază
numele localhost cu adresa interfeței loopback 127.0.0.1. Al doilea fișier face
maparea în sens invers: pointerul PTR asociază adresa 127.0.0.1 cu numele localhost.
Frumosul este alcătuit din detalii...
Complicat, nu? Dacă vă simțiți intimidat, documentul DNS-HOWTO de la www.tldp.org
vă descrie cu mai multe amănunte ce aveți de făcut. De obicei, nu trebuie decât
să modificați corespunzător fișierele de configurare (folosindu-le pe cele prezentate
ca șablon), să porniți daemonul named și ... la drum.
DNS conține înregistrări (resource records) care pot oferi informații valoroase
despre o anumită mașină. în timp ce înregistrările de tip A (vezi mai sus) mapează
nume, înregistrările NS precizează care sunt nameserverele pentru domeniul firma.com.
(primary și secondary), cele MX stabilesc mașinile care pot primi poșta electronică
pentru domeniu (mailservere), iar HINFO oferă informații despre hardware-ul
unei anume mașini. În plus, se pot utiliza și alias-uri pentru un anume calculator
(înregistrările CNAME).
Puteți testa serverul DNS pe care l-ați pus în funcțiune într-un mod foarte
simplu. Asigurați-vă că dispuneți de un fișier /etc/resolv.conf de forma:
search firma.com
nameserver 127.0.0.1
și folosiți programul dig pentru a vedea ce răspunsuri veți primi atunci când
doriți să obțineți toate înregistrările care se referă la domeniul oarecare.com.:
dig oarecare.com. any
Puteți restrânge informațiile solicitate folosind alte clase de interogări
în loc de any: mx pentru a identifica serverele de mail ale domeniului, ns pentru
a obține nameserverele care îl deservesc sau chiar hw pentru a căuta detalii
despre hardware-ul folosit.
Comanda de bază hostname și utilitare cum ar fi linuxconf vă permit să stabiliți
după dorință numele mașinii dvs. Linux. Fișierul /etc/resolv.conf arată ordinea
în care vor fi cercetate diverse domenii (în cazul nostru este investigat firma.com;
dacă veți cere detalii despre mașina cu numele mihai, vor fi căutate atât mihai
cât și mihai. firma.com) și listează adresele IP ale serverelor DNS externe
care vor fi interogate.
Directorul general
Odată cu Windows 2000, Microsoft a introdus o nouă tehnologie de creare a unui
domeniu, anume Active Directory (folosesc aici termenul domeniu în sensul administrativ
dat de documentația Microsoft, nu în sensul DNS). Active Directory este un serviciu
de catalog, asemănător cu LDAP, care vă permite să definiți în mod unic clase
de obiecte și numele lor pe o anumită zonă a unei rețele: computere, utilizatori,
imprimante, etc. Pentru realizarea acestui serviciu, Windows folosește DNS,
în baza de date a căruia introduce câteva înregistrări "pentru uzul propriu".
Campania publicitară ce a însoțit lansarea lui Windows 2000 Server nu a obosit
să sublinieze faptul că acum Active Directory și DNS sunt integrate, ceea ce,
spune Microsoft, oferă multe avantaje.
La o primă vedere, lucrurile ar putea sta așa. Analizând însă în profunzime,
nu trebuie uitat faptul că DNS este un serviciu standardizat, prezent în toate
sistemele de operare existente pe internet și că el face subiectul unor norme
publice, deschise (documente RFC). Din contra, Active Directory este o tehnologie
proprietară, a cărei dezvoltare este în totalitate sub controlul Microsoft.
Imbinarea prea strânsă între aceste tipuri de tehnologii are, de multe ori,
scopuri comerciale evidente - clienții vor rămâne "ancorați" în sisteme
proprietare, a căror dezvoltare i-a costat mult timp și mulți bani. Pentru dvs.,
aspirant la statutul de membru al comunității free-software, trecerea de la
un sistem deschis la unul proprietar nu este o schimbare de dorit.
Concret, ce înseamnă aceasta? Dacă tocmai ați instalat un sistem Windows 2000
Server și sunteți pe cale să configurați serverul DNS inclus (care nu este bind-ul
open source !), vi se va oferi alternativa de a alege între servere primary,
secondary sau Active Directory integrated. Primele două sunt similare cu opțiunile
master sau slave ale bind-ului - vă recomand cu căldură să alegeți una dintre
ele, în funcție de necesități. A treia opțiune realizează un tip de server integrat
cu Active Directory - nimeni nu vă poate garanta compatibilitatea acestui sistem
cu cele open-source, folosite pe marea majoritate a domeniilor internet ...
Capitolul pentru oameni săraci
Marea majoritate a documentelor referitoare la DNS presupun aprioric că rețeaua
pentru care încercați să configurați noul server dispune de o conexiune permanentă
la internet, de o adresă IP fixă etc.. Din păcate, acesta este un caz mai rar
întâlnit în România - cel puțin pentru micile rețele individuale.
Dacă situația în care vă găsiți este similară cu a mea, atunci între dvs. și
restul rețelei mondiale există o legătură temporară, telefonică - un modem,
poate un router ... Aveți de ales între a configura un server DNS numai pentru
rețeaua internă sau unul caching-only. Ultimul este un server DNS "parțial",
care nu face decât să memoreze adresele găsite - cu ajutorul altor servere -
într-o memorie cache, accelerând puțin accesul dvs. la internet. Distribuțiile
de Linux importante vin cu un asemenea server caching-only preconfigurat, în
format .rpm. în ambele situații, detalii de configurare se găsesc în DNS-HOWTO
și în documentele citate de autorul acestuia ca bibliografie. Atenție, însă
- dacă nu aveți un domeniu DNS înregistrat, punerea la punct a unui "DNS
intern" cere puțină experiență și atenție, fiindcă o configurare incorectă
poate crea probleme utilizatorilor de pe alte domenii, "oficiale".
Și, dacă tot am adus vorba, ați vizitat situl postului de televiziune B1 TV
? El se găsește la adresa www.b1.tv. Când am văzut pentru prima dată această
adresă, mărturisesc, am fost șocat ! Cine permite unei firme oarecare - fie
ea și un post de televiziune - să înregistreze domenii direct sub domeniul rădăcină
? Pe mâna cui a ajuns administrarea internetului ? Nu mai știam ce să cred ...
Mi-a venit în ajutor un coleg mai experimentat, care mi-a explicat că nu e vorba
de nici o încălcare a standardelor. Domeniul de nivel 1 .tv nu are, la origine,
nimic comun cu televiziunea. El aparține statului Tuvalu, la fel cum domeniul
.ro aparține României. Îmi mărturisesc ignoranța - nu știu unde este situat
Tuvalu pe harta lumii. Probabil însă că nu-s prea multe rețele pe acolo, fiindcă
statul în cauză își "închiriază" domeniul celor dornici să adauge
domeniului lor terminația .tv. Înregistrarea în DNS este, deci, perfect legală
- .tv este un domeniu din categoria celor geografice.
James Bond 007
DNS este și una dintre uneltele care vă ajută să obțineți informațiile dorite
- sau nedorite? - pe internet. Aceste investigații nu au nimic ilegal, de aceea
la configurarea unui server DNS nu uitați că toate detaliile despre rețeaua
dvs. pe care le introduceți în baza de date vor fi accesibile oricui. Cu programele
dig și nslookup efectuați manual interogările pe care un client DNS le face
automat. De exemplu, dacă doriți să știți pe ce mașină ajung e-mail-urile destinate
adresei [email protected] și ce adresă IP are ea, nu trebuie decât să folosiți
unul dintre programele amintite asupra domeniului .firma.com., indicând drept
criteriu de selecție înregistrările MX (mailservere). Veți primi o listă a serverelor
de mail existente pe domeniu (în general două), impreună cu prioritățile și
cu adresele IP corespunzătoare. în paginile manual ale dig și nslookup sunt
descrise modurile de utilizare ale comenzilor amintite.
În loc de încheiere
Serviciul DNS este un subiect mult prea complex pentru a putea fi tratat aici
în detaliu. Cu toate acestea, dacă vă găsiți în postura de a administra o mică
rețea și nu beneficiați de asistență tehnică din partea unui expert, este neapărat
necesar să vă familiarizați cu funcționarea sa. Nu numai că acesta este un "subiect
fierbinte" pe internet, necesar și în cele mai simple instalări, dar o
configurare incorectă a DNS va genera întârzieri nepermis de mari în întreaga
rețea.
Pentru utilizatorii de acasă: la următorul abonament internet pe care îl veți
încheia, asigurați-vă măcar că ISP-ul dvs. v-a furnizat numele complete (FQDN)
și adresele IP corecte pentru cel puțin două servere DNS existente pe rețeaua
sa. Acestea sunt mașinile pe care le veți "interoga" ori de câte ori
veți tasta un URL în bara de adrese a browser-ului. Corecta lor configurare
și funcționare vă va scuti de multe neplăceri - un acces rapid la internet,
deci o factură telefonică mai mică ...
Dacă folosiți Windows 98, 2000 Professional, Me sau XP, mașina dvs. poate juca
numai rolul de client DNS. în Control-Panel, verificați că legătura dvs. în
rețea (LAN sau Dial-Up) are completate, la rubrica TCP/IP Properties, adresele
DNS corecte indicate de furnizorul dvs. de internet. în caz contrar, cum spuneam,
accesul pe Net se va desfășura cu timpi de așteptare mult prea lungi.
Până la întâlnirea noastră viitoare, vă urez un hacking plăcut prin meandrele
numelor internet!
|