CATEGORII DOCUMENTE |
Servere de domenii de nume DNS
DNS. Introducere
Programele de la nivelul de aplicatie ar putea sa se refere la sistemele gazda, cutiile postale si alte resurse hardware dintr-o retea de calculatoare, prin adresele lor de retea (de exemplu, adresa IP). Tinand cont de formatul acestor adrese, mintea umana cu greu le-ar putea retine. Mai mult, in cazul in care, de exemplu, in trimiterea prin posta electronica la adresa amc@18.4.1.125 furnizorul de servicii Internet muta serverul de posta pe o alta statie, cu IP diferit, aceasta adresa de email s-ar schimba. De aceea, era necesar un sistem de nume, de alias-uri pentru aceste adrese IP, astfel incat adresarea lor sa fie cat mai usor de utilizat si sa fie independenta de statia de lucru. Utilizand acest sistem, adresa de email ar fi devenit amc@wi.mit.edu. Deoarece reteaua intelege doar adrese numerice, trebuia inventat si un mecanism de convertire a datelor alfanumerice in adrese de retea. In continuare este prezentat modul in care s-a realizat aceasta transformare.
In reteaua ARPANET, una din primele retele de calculatoare aparute, se utiliza un fisier care cuprindea toate sistemele gazda si adresele lor IP corespunzatoare. Pentru aceasta retea care, initial cuprindea cateva sute de masini, sistemul era eficient. Odata cu extinderea retelei, dimensiunea fisierului a crescut foarte mult si exista riscul de conflict de nime de sisteme gazda. In aceste conditii, trebuia inventat un sistem care sa gestioneze toate aceste nume, adica un Domain Name Service (DNS).
In principal, DNS este o schema ierarhica de nume de domenii, caruia ii este asociat un sistem de baze de date distribuite pentru gestionarea acestei scheme. El pune in corespondenta numele sistemelor gazda cu adresele lor de retea, dar poate avea si alte scopuri. DNS este definit in RFC-urile 1034 si 1035.
Utilizarea DNS este pe scurt urmatoarea: corespondenta intre un nume si o adresa IP se realizeaza folosind un program aplicatie care apeleaza o biblioteca numita resolver, careia i se transmite ca parametru numele. Resolver-ul trimite un pachet UDP la serverul DNS local, care cauta acest nume si returneaza adresa IP catre resolver, care, la randul lui, o transmite apelantului. Programul initial poate apoi stabili, de exemplu, o conexiune TCP cu destinatia.
Spatiul de nume DNS
Administrarea unui numar mare de nume este o problema complexa. In sistemul postal, gestionarea numelor se realizeaza prin scrierea pe plic a numelui destinatarului, adresei acestuia, orasului, statului, tarii in care acesta locuieste. Astfel, nu va exista o confuzie intre adresa lui Ion Popescu din Romania, Bucuresti, Bd. Iuliu Maniu, respectiv a lui Ion Popescu tot din Bucuresti, Bd. Victoriei si nici al lui Ion Popescu, Toronto, Canada. DNS functioneaza folosind un principiu asemanator.
Internetul este organizat in 200 de domenii de nivel superior, fiecare continand mai multe sisteme gazda. Domeniul este impartit in subdomenii, care la randul lor sunt impartite, creind o ierarhie arborescenta dupa cum se poate observa in Fig. Frunzele arborelui reprezinta domenii care nu au subdomenii, insa pot contine mii de sisteme gazda. Domeniile din primul nivel al arborelui sunt de doua tipuri: generice si specifice unor tari. Domeniile generice sunt de tip com (comercial), edu (institutii educationale), gov (guvernul federal SUA), mil (militar), org (organizatii non-profit), net (furnizori Internet). Domeniile de tari includ o intrare pentru fiecare tara, dupa cum defineste standardul international ISO 3166. Pe masura ce retelele de calculatoare se dezvolta se introduc nume noi de nivel superior.
Fig. 2 Nume de domenii DNS
Pentru obtinerea unui domeniu de nivel secundar, ca de exemplu, numeCompanie.com, se consulta serviciul de inregistrare al nivelului superior corespunzator, (com in cazul de fata) pentru a vedea daca numele respectiv nu exista deja in baza de date. Daca numele este disponibil, solicitantul plateste o taxa anuala si primeste numele. Astazi, majoritatea denumirilor comune este alocata deja.
Domeniile de nume pot fi absolute sau relative. Un nume absolut se termina cu un punct ( de exemplu wi.mit.edu), in timp ce unul relativ nu. In ambele cazuri numele respectiv se refera la un anumit nod din arbore si la toate nodurile sale inferioare. Numele de domenii nu fac distinctie intre literele mari si cele mici. Astfel, edu, Edu, EDU, inseamna acelasi lucru.
Inregistrari de resurse
Fiecarui domeniu ii poate fi asociata o multime de inregistrari de resurse. Pentru un singur sistem gazda, cea mai obisnuita asignare de resursa este adresa IP. Atunci cand un resolver trimite un nume de domeniu catre un DNS, priemste ca raspuns inregistrarile de resurse asociate acelui nume.
O inregistrare de resursa este un 5-tuplu cu formatul urmator:
Nume_domeniu Timp_de_viata Clasa Tip Valoare
Nume_domeniu precizeaza domeniul caruia i se aplica inregistrarea. Acest camp este o cheie de cautare primara in baza de date. Ordinea inregistrarilor nu este importanta.
Timp_de_viata da informatii despre cat de stabila este conexiunea respectiva. Se acorda valori mari pentru cele stabile (de exemplu, 86400 secunde pentru durata unei zile) si valori mici pentru cele instabile (de exemplu, 30 secunde). Tip precizeaza tipul inregistrarii. Cele mai importanta tipuri sunt prezentate in Tabelul 3.1.
Tip |
Semnificatie |
Valoare |
SOA |
Start autoritate |
Parametrii zonei |
A |
Adresa IP a unui sistem gazda |
Intreg pe 32 biti |
MX |
Schimb de posta |
Prioritate, domeniu dispus sa accepte servicii de posta electronica |
NS |
Server de Nume |
Numele serverului pe domeniu |
CNAME |
Nume canonic |
Numele domeniului |
PTR |
Pointer |
Alias pentru adresa IP |
HINFO |
Descriere sistem gazda |
Sistem de operare ASCII |
TXT |
Text |
Text ASCII neinterpretat |
Tabelul 3.1 Principalele valori pentru campul Tip
Inregistrarea SOA poate furniza numele sursei primare de informatii despre zona serverului de nume, adresa de email a administratorului, un identificator unic si diversi indicatori, contoare de timp etc.
Inregistrarea A pastreaza adresa IP pe 32 de biti a unui sistem gazda.
Inregistrarea MX precizeaza numele sistemului gazda care este capabil sa accepte posta electronica pentru domeniul respectiv. De exemplu, daca cineva vrea sa trimita un email la adresa amc@wi.mit.edu, atunci trebuie sa gaseasca un server care sa accepte email.
Inregistrarea NS are rolul de a specifica serverele de nume. De exemplu, fiecare baza de date DNS are o inregistrare NS pentru fiecare domeniu de pe primul nivel, astfel incat posta electronica sa poata trimite emailuri la nivele mult inferioare unui subarbore.
Inregistrarea CNAME permite folosirea alias-urilor. De exemplu, o persoana care doreste sa trimita un mesaj unei persoane al carui nume de conectare la un sistem din departamentul de Computer Science de la M.I.T. este amc poate presupune ca adresa de email este amc@cs.mit.edu. Adresa aceasta nu este cea corecta, deoarece domeniul departamentului de Computer Science este eecs.mit.edu. Totusi, M.I.T. poate crea o intrare CNAME, pentru a dirija persoanele si programele catre directia corecta. Astfel, o intrare poate fi:
cs.mit.edu 86400 IN CNAME eecs.mit.edu
PTR se refera la un alt nume, ca si CNAME. Deosebirea dintre cele doua este data de faptul ca CNANE este doar un macro, pe cand PTR este un tip de date DNS a carui interpretare depinde de context. De obicei, se asociaza un nume cu o adresa IP, pentru a permite gasirea numelui masinii in functie de adresa IP.
Inregistrarea HINFO permite aflarea tipului de masina de si sistem de operare carora le corespunde domeniul.
Inregistrarea TXT permite domeniilor sa se autoidentifice intr-un mod arbitrar.
Valoare este un camp care poate fi un numar, un nume de domeniu sau un sir de caractere ASCII. Pentru fiecare din aceste cazuri se prezinta in Tabelul 3.1 o scurta descriere. In Fig. 3.2 se afla un exemplu de informatie care poate fi gasita in baza de date DNS a unui domeniu. Baza de date contine sapte tipuri de inregistrari.
Fig. 3.2 Exemplu de baza de date DNS
Servere de nume
Teoretic un server de nume poate deservi intreaga baza de date de nume; totusi, practic, el poate sa fie atat de ocupat, incat sa devina neutilizabil. Pentru a evita limitarile aduse de existenta unei singure surse de informatie, s-a hotarat partajarea spatiului de nume DNS in zone care nu se suprapun si nu se intretaie. O posibila impartire a acestui domeniului din Fig. 4.1 este prezentata in Fig. 1. Fiecare zona contine cate o parte a arborelui si numele serverelor care pastreaza informatia autorizata din acea zona. Orice zona va avea un server de nume primar, care preia informatia dintr-un fisier de pe discul propriu si unul sau mai multe servere secundare, care preiau informatiile de pe serverul primar. Unele servere pot fi chiar plasate intr-o alta zona, ceea ce imbunatateste fiabilitatea retelei.
Fig. 4.1 Fragment din spatiul de nume DNS partajat pe zone
Dimensiunea zonelor este la latitudinea administratorului, care decide cate servere de nume sunt dorite si cum trebuie plasate. De exemplu, in Fig. 4.1, Yale are un server pentru yale.edu care administreaza eng.yale.edu, dar nu si cs.yale.edu, care este o zona separata cu propriile servere de nume. O asemenea situatie poate avea loc in cazul in care departamentul de limba engleza nu doreste sa aiba propriul server de nume, spre deosebire de departamentul de calculatoare, care doreste un asemenea server. De aceea, cs.yale.edu este o zona separata, iar eng.yale.edu nu este separata.
Atunci cand un resolver are o cerere referitoare la un nume de domeniu, el va transfera cererea la unul din serverele locale de nume. Daca domeniul cautat se afla sub tutela serverelui de nume, cum ar fi ai.cs.yale.edu, care este sub cs.yale.edu, el va intoarce inregistrari de resurse autorizate. O inregistrare autorizata este o informatie care provine de la autoritatea care administreaza intregistrarea si este intotdeauna corecta. Se mai pot primi inregistrari din memoria ascunsa, care pot fi eronate pentru ca sunt expirate.
In cazul in care domeniul se afla la distanta si nu este disponibila nici o informatie despre domeniul cerut, atunci, serverul de nume este nevoit sa trimita o cerere la serverul de nume de pe primul nivel al domeniului in cauza. De exemplu, in Fig. 4.2, flits.cs.vu.nl este initiatorul cautarii, iar cs.vu.nl, edu-server.net, yale.edu, cs.yale.edu domenii cu serverele de nume VU CS, EDU, YALE, Yale CS. Resolverul flits.cs.vu.nl doreste sa stie adresa IP a sistemului gazda amc.cs.yale.edu. In pasul 1, trimite o cerere la serverul local cs.vu.nl, care contine numele de domeniu cautat, tipul (A) si clasa (IN). Presupunem ca serverul local nu a mai intalnit o asemenea cerere si nu are informatii despre domeniul cautat. Cu toate acestea, el poate trimite un pachet UDP (User Datagram Protocol) la serverul EDU, specificat in baza sa de date. Cum nici acest din urma server nu cunoaste adresa domeniului pentru amc.cs.yale.edu, va accesa informatii despre adresele fiilor din subarbore; de aceea, va transmite cererea catre serverul yale.edu, care, la randul sau, va avea inregistrari autorizate ale propriilor resurse. Inregistrarea cautata a fost gasita si informatia va fi transmisa inapoi la resolver prin aceleasi servere, in ordine inversa, adica prin yale.edu, apoi edu-server.net, cs.vu.nl.
Fig. 4. Cautarea in 8 pasi a unui nume aflat la distanta de catre un resolver
Atunci cand inregistrarea ajunge la serverul de nume cs.vu.nl, ele vor fi depuse in memoria ascunsa pentu o utilizare ulterioara. Totusi, informatia nu este autorizata si, in cazul in care are loc o modificare in cs.yale.edu, aceasta nu se va propaga pana la serverul cs.vu. De aceea, informatia salvata in memoria ascunsa nu trebuie pastrata indelung. Campul Timp_de_viata este inclus in fiecare inregistrare de resursa si are rolul de a informa fiecare server de nume cat timp sa mentina inregistrarile din memoria ascunsa. In functie de stabilitatea adreselor IP, acestea pot fi stocate timp de cateva secunde sau cateva zile.
Metoda de interogare descrisa mai sus se numeste metoda de interogare recursiva, deoarece fiecare server care nu detine informatia ceruta este nevoit sa intrebe alt dispozitiv din retea si sa furnizeze, in final, un raport. O alta posibilitate este aceea in care atunci cand o cerere nu este rezolvata, ea esueaza, insa este intors numele urmatorului server de pe calea care trebuie incercata.
Atunci cand un client DNS nu reuseste sa primeasca un raspuns intr-un timp de cautare prestabilit, este eliminat din lista serverelor posibile, deoarece se presupune sa servelui este defect sau ca cererea ori raspunsul s-au pierdut; in acest sens, la o data urmatoare, se incearca un alt server.
In concluzie, un server de nume este un proces care dispune de o baza de date ce cuprinde inregistrari DNS. In general, un server de nume raspunde de o zona de nume, detinand toate inregistrarile pentru numele din zona de responsabilitate, si, in plus, poseda inregistrari suplimentare, legate in general de zonele adiacente - zona parinte si zonele fii.
Protocolul DNS
DNS foloseste numarul portului 53 si poate sa foloseasca fie UDP, fie TCP ca protocoale pentru nivelul de transport. In general, UDP (limitat la 512 bytes) este folosit pentru a trimite intrebari si raspunsuri. TCP trebuie folosit pentru zonele de transfer, pentru ca datele transmise intre serverele autorizate trebuie sa fie cat mai sigur transmise.
Formatul unui pachet DNS are aspectul prezentat in Fig. 5.
Fig. 5 Formatul unui pachet DNS
ID - este un identificator creat de program pentru a reprezenta cererea. Raspunsul foloseste acest identificator pentru ca raspunsul sa poata fi atasat cererii respective.
QR - este un bit care are valoarea 0 pentru o cerere, respectiv valoarea 1 pentru raspuns.
OPcode - este un bit care are valoarea 0 pentru o cerere standard, valoarea 1 pentru o cerere inverse, valoarea 2 pentru cererea unui status.
AA - daca acest bit este setat, atunci raspunsul provine de la un server autorizat.
TC - (Truncated) inseamna ca mesajul a fost mai lung decat permitea banda de transmisie.
RD - (Recursive Desired) inseamna ca cererea este recursive
RA - raspunsul are acest bit setat daca serverul poate procesa o cerere rescursiva.
Z - este un bit nefolosit si este zero pentru toate cererile si raspunsurile.
Rcode - (Response Code) are urmatoarele valori:
- nu sunt erori
- eroare: serverul nu a inteles cererea
- serverul nu functioneaza correct: fie pentru ca s-a defectat, fie nu a reusit sa obtina un raspuns dup ace a trimis cererea.
- eroare de nume; aceasta eroare poate fi anuntata doar de catre serverele autorizate.
- nu este implementata;
- refuz
QDcount - numarul de cereri din intrebarea care face parte din pachet.
ANcount - numarul de inregistrari de resurse din partea de raspunsuri din pachet.
NScount - numarul de inregistrari de resurse din serverul de nume in partea pachetului care contine inregistrari de la servere autorizate
ARcount - numarul de inregistrari de resurse din partea de inregistrari aditionale ale pachetului DNS.
Cererea
Qname - Numele de domeniu tinta se prezinta ca o succesiune de etichete, fiecare eticheta continand un octet pentru lungime urmat de un alt numar de octeti. Serverul DNS cauta inregistrarile de resurse care se potrivesc campului Qtype si Qclass. Daca nici o potrivire nu este gasita, atunci se cauta un alt server DNS care poate avea o astfel de potrivire.
Qtype - specifica tipul cererii; de exemplu: A, PTR, AXFR, MAILB etc.
Qclass - specifica clasa cererii; de exemplu: IN pentru Internet, CH pentru Chaos.
Inregistrarile de resurse (Resource Record - RR)
Name - numele domeniului unde este localizata resursa.
Type - un tip de cod care indica tipul de date din Rdata, care este un camp de 16 biti care defineste tipul de inregsitrare de resursa:
A - adresa de statie-gazda (host); de exemplu: o inregistrare 'A' , sau 'Answer'.
CNAME - nume canonic al unui alias (Canonical name of the Alias). Acesta este folosit daca se doreste mai degraba realizarea unei asocieri gazda-la-gazda decat de la gazda la adresa IP. Acest mecanism este util atunci cand un numar mare de computere-gazda (hosts) sunt asociate cu o singura adresa IP. De exemplu, un computer are mai multe nume associate, cum ar fi www.amc.com si ftp.amc.com.
HINFO - tipul unitatii centrale de prelucrare (CPU) si al sistemului de operare folosit de calculatorul gazda.
MX - (Domain Mail Exchange) - domeniu pentru email.
NS - (Authoritative Name Server for the Domain) server de nume autorizat folosit
PTR - este un pointer spre alta zona a spatiului de domenii, localizat cu ajutorul numelui calculatorului-gazda.
SOA - (Start of a Zone of Authority), marcheaza inceputul unei zone autorizate.
Class - clasa de date in Rdata, care reprezinta un camp de 16 biti identificand o familie de protocoale, IN pentru Internet si CH pentru sistemul de haos
TTL - identifica in secunde cat de mult ar trebui pastrata inregistrarea de resursa in memoria cache a serverelor neautorizate. Cu cat aceasta valoare este mai mica, cu atat mai mare va fi banda utilizata pentru zona de informatie. De obicei, cateva ore este un timp suficient de scurt.
RDlength -lungimea campului Rdata in octeti
Rdata - este o variabila de descriere a resursei:
A - pentru IN, o adresa IP pe 32 biti ; pentru CH, o adresa pe 16 bit
CNAME - un alias pentru un nume de domeniu
MX - o valoare pe 16 biti si o adresa a calculatorului gazda pentru un Mail Exchange; cu cat acest numar este mai jos, cu atat mai preferat este schimbul de mail. Inregistrarea MX se ocupa cu cererile de mail din serverul Mail. Daca un server de mail trimite o cerere si nu exista nici o inregistrare MX, atunci resolver-ul incepe o cautare a unei inregistarri de tip A si se realizeaza o conexiune spre acea adresa IP pe portul 25 (SMTP).
NS - (Authoritative Name Server) reprezinta serverul de nume autorizat pentru domeniul respectiv.
PTR - un pointer spre o alta zona a domeniului.
SOA - (Start of a Zone of Authority) reprezinta informatie despre inceputul unei zone autorizate.
Pointer - din motive de comprimare, un poiner este folosit pentru a indica prezentele multiple ale numelui de domeniu in date. Pointerul se afla la sfarsitul listei de etichete. Etichetele sunt identificate drept 00, in timp de un pointer este identificat de 11 urmat de o valoare de offset. Atunci cand se foloseste protocolul UDP pentru transport mesajul nu poate avea mai mult de 512 bytes, de aceea, mesajele mai lungi sunt trunchiate. In acest caz, mesajul DNS incepe cu un camp de 2 octeti care da detalii despre lungimea mesajului pentru ca programul aplicatiei sa il poata procesa.
Cautarile DNS inverse (Reverse DNS Lookups)
Cautarile DNS inverse sunt cererile menite sa gaseasca calculatorul-gazda cu o anumita adresa IP. Acestea reprezinta elemente optionale ale unui server DNS; totusi, daca un server nu poate procesa acest tip de cereri, ar trebui sa poata sa raspunda printr-un mesaj de eroare. O cerere standard asociaza un nume de domeniu SOA RR, pe cand o cerere inversa asociaza o SOA RR cu un nume de domeniu. Pentru a realiza acest lucru, trebuie efectuata o cautare in intregul spatiu de nume. Domeniul este numit in-addr.arpa si se afla intr-o Zona Inversata. Aceasta Zona Inversata contine subdomenii cu adrese IP. Deoarece domeniile sunt scrise in arbore intr-o ordine de la frunza spre radacina, pentru a mentine consistenta in denumiri, numele adreselor IP sunt scrise, la randul lor, in ordine inversa. De exemplu, adresa IP 16230.95.4 ar avea numele intr-o zona inversata astfel: 4.95.230.16 Intr-o cautare inversata, resolver-ul realizeaza o cautare PTR (Pointer) pentru un calculator gazda specific in domeniul in-addr.arpa. Daca utilizatorul se afla in reteaua 19168.4.0/24, atunci resolver-ul cere numele adreselor IP din subreteaua 19168.4.0/24, dupa care, se vor examina inregistrarile PTR din domeniul 4.168.19in-addr.arpa, dintre care doar octetii din masca vor determina numele IP.
Zonele de transfer
Atunci cand se creeaza un server de nume autorizat, domeniul trebuie intregistrat cu un Registru. Apoi trebuie creat un Dosar cu Zone (Zone file) care contine toate inregistrarile DNS pentru zona respectiva. Dosarul cu Zone contine Startul Autorizarii (Start of Authority - SOA), sectiune care contine informatiile despre zone.
Serverele autorizate sunt responsabile pentru pastrarea informatiilor despre zone. Atunci cand au loc schimbari, noduri sunt atasate sau eliminate, aceste modificari trebuie propagate catre toate serverele de nume.
Intr-o anume zona, unul din serverele de nume este ales ca server Master sau Primar. Un alt server de nume poate fi ales secundar pentru a verifica periodic schimbarile in anumite zone, cu ajutorul campului SERIAL din SOA, car se incrementeaza atunci cand versiuni de zone noi sunt create. Se poate utiliza tehnica de polling periodic in SOA RR cu ajutorul unor parametri, printre care sunt inclusi si REFRESH, RETRY si EXPIRE. Atunci cand o noua zona este incarcata intr-un server secundar, acesta asteapta cateva secunde de REFRESH inainte de a compara informatiile cu cele din serverul primar. Daca aceasta verificare nu poate fi terminata complet, se vor face noi verificari la fiecare cate RETRY secunde. Acest din urma tip de verificare etse o simpla cerere de SOA RR al zonei, adresata serverului primar.
Dupa ce serverul de nume secundar a detectat o schimbare de zona, trimite un AXFR, care reprezinta o cerere pentru o Zona de Transfer. Serverul primar raspunde cu un sir de RR, care contin serverele de nume, serverele autorizate. Primul si ultimul RR contine date pentru nodul cu autoritatea cea mai mare a zonei. Zona de Transfer foloseste protocolul TCP pentru transportul acestor date extrem de importante pentru functionarea DNS. In loc sa trimita un sir de RR, serverul primar potae trimite de asemenea, un fisier text Master.
Startul de autoritate (Start of Authority - SOA)
- numele serverului de nume master.
ns - serverul de nume; acesta este numele serverului de nume care contine informatia despre zona si este completat automat.
hostmaster - adresa de e-mail a celui care controleaza zona (de exemplu: hostmaster@mit.edu).
- este un numar care indica statiilor - slave versiunea informatiilor despre zona. Formatul este yyyymmddxx, cu ultimii digiti reprezentand versiunea zilei. Daca acest numar este mai nou decat copia detinuta, atunci informatia despre noua zona va fi incarcata in locul celei vechi.
4H - 4 ore au fost alese pentru timpul de Refresh, care reprezinta timpul pentru care zona este stocata in serverele-slave inainte ca acestea sa verifice master-ul pentru o copie noua.
1H - 1 ora etse timpul pentru Retry. Atunci cand un server-slave devine activ, el incearca imediat sa obtina o copie cu informatiile despre zona de la serverul master. Daca nu reuseste, atunci va reincerca cu o perioada data de timpul de retry.
5D - 5 zile este timpul de expirare - Expire time. Daca serverul-master devine inaccesibil pentru o perioada de timp, serverele-slave vor mentine zona pentru o perioada de timp.
24H - 24 ore este timpul minim (Minimum time) pentru care zonele pot exista pe seama serverelor-slave.
Concluzie
In acest capitol am dat cateva informatii despre ce este domeniul de nume DNS si am detaliat functionarea serverelor de nume. Sistemul DNS este o parte fundamentala din cadrul retelei Internet. Structura ierarhica a spatiului de nume DNS, reteaua de servere de nume si alte tehnologii utilizate permit retelelor actuale sa aiba viteze mari si comunicatii de incredere.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 2287
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved