Преводач

11/04/2015

DNS - система за именуване




Чрез IP адресите се осъществява дресирането на дейтаграмите, които носят в себе си данните.Неудобното е, че те са числа и трудно се запомнят. Затова се въвежда система за именуване– DNS.


Domain Name System

Domain Name System (DNS) е йерархична разпределена база от данни.

Тя съхранява информация за съотвтствието между Internet хост имена и IP адреси и обратно,

информация за маршрутизиране на ел. поща и др.данни, използвани от Internet приложения.

Клиентите търсят информация в DNS, извиквайки resolver library, която изпраща заявки до един от сървърите за имена (name servers) и интерпретира отговорите.BIND софтуерът съдържа сървър за имена named, и две библиотеки - resolver libraries: liblwres и libbind.

ISC BIND



BIND (Berkeley Internet Name Domain) е реализация на DNS протоколите и осигурява отворена система за редистрибуция на основните компоненти на Domain Name System:



- Domain Name System server (named);



- Domain Name System resolver library;



- средства за верифициране на



операциите на DNS server.







Домейни и имена на домейни



Данните, съхранени в DNS са domain names, организирани в дървовидна структура. Всеки възел в дървото се нарича domain и му се дава етикет. Името на домейна във възела е поредица от етикетите, показващи пътя от възела до корена (root). В писмена форма се представя като низ от етикети, от дясно наляво, разделени с точки.



Домейните представляват области от имена. Домейните са от първо, второ и трето ниво.
(Ако не се брои root.) Няма пречки да има домейни от четвърто ниво, но те почти не се използват. Основният домейн е така нареченият root домейн. Той няма име и е един единствен. Представя се с точка. Под него се нареждат домейните от първо ниво, top-level domain (TLD). Управлението на TLDs е делегирано на азлични организации от страна на ICANN, която менижира IANA, и е отговорна за DNS root зоната. Най-често използвани TLDs са: generic top-level domains (gTLD) – отворени за регистрация за всеки. В началото всички те са в САЩ, но после в тях влизат още много имена на обекти извън САЩ, те нарастват твърде много.




Затова се въвежда друга голяма група от домейни на първо ниво, свързани с географското разположение по държави – uk, de, bg и др. Това са country-code top-level domains (ccTLD),


показващи принадлежност към държава. Състоят се само от две букви. В повечето случаи съвпадат скода на страната по ISO 3166. infrastructure top-level domain: Има само една TLD - Address and Routing Parameter Area (ARPA). Управлява се от IANA и има отношение към обратния резолвинг. Цялостното име, което включва домейните и обекта се нарича


URL (uniform resource locator). В това URL bg е името на домейна от първо ниво, uni-sofia е името на поддомейна на bg от второ ниво, fmi е името на домейна от трето ниво www е web-сървъра от домейна fmi, http е мето на протокола по който клиента се свързва към съответния обект. Колкото са точките в едно URL, толковата са нивата на домейните без да се брои root.


В URL точката на root се пропуска (подразбира се).



Resolving



DNS е йерархична именна система с три компонента – именно пространство (как сеизграждат имената), resolver-и и именни сървъри (name servers). Resolver-те са абонатите в Internet, които знаят URL и искат да получат съответния IP адрес. Процесът на преобразуване се нарича


resolving. Той се извършва от DNS протокола.



DNS протокол



DNS основно използва User Datagram. Protocol (UDP) на порт 53 за обслужване на заявки. DNS заявките се състоят от една единствена UDP заявка от клиента, последвана от един единствен UDP отговор от сървъра.







DNS протокол



Transmission Control Protocol (TCP) се



използва, когато в отговора се съдържат



повече от 512 bytes или при трансфер на



зони.



Някои операционни системи като HP-UX



използват TCP за всички заявки.







Зони



За по-лесно администриране пространството с имената



е разделено на области, наречени зони (zones)



Всяка зона започва от възел и се простира надолу до



“листата” (leaf nodes) или до възли, където стартират



други зони.



Данните за всяка зона се съхраняват в сървър за имена



(name server), който отговаря на запитвания (queries)



в рамките на зоната, използвайки DNS протокол.



Данните, които са обвързани с всяко име на домейн, се



съхраняват под формата на ресурсни записи,



resource records (RRs).







Зони



От особена важност е да се разбере разликата между зона и



домейн, за да се вникне в същността на сървъра за имена.



Зона е точката на делегиране на DNS дървото.



Зоната се състои от тези последователни части от дървото на



домейните, за които сървърът за имена има пълна информация



и върху която има власт.



Състои се от всички имена на домейни, от дадена точка надолу по



дървото с изключение на тези, които са делегирани на други



зони.



Точката на делегиране се маркира с един или повече записа:



NS records, в родителската зона, които трябва да съвпадат с



еквивалентни NS записи в корена на делегираната зона.







Зони



Напр., да вземем домейна example.com, който включва имена като



host.aaa.example.com и host.bbb.example.com.



example.com зоната включва делегирания за зоните



aaa.example.com и bbb.example.com.



Една зона може да съответства точно на един единствен домейн,



но може и да включва само част от домейна.



Като останалата част от него да бъде делегирана на други



сървъри за имена.



Всяко име в DNS дървото е domain, даже ако е terminal, т.е няма



subdomains (поддомейни). Всеки поддомейн е домейн и всеки



домейн с изключение на root (коренния) е също поддомейн.



Терминологията не е интуитивна, за по-по-добро разбиране



прочетете RFCs 1033, 1034 и 1035.







master и slave зони



Макар че BIND се нарича "domain name server",



той се занимава предимно със зони.



Декларациите master и slave във файла



named.conf определят зони а не домейни.



Ако питате някой друг сайт дали иска да бъде



slave сървър на вашия domain, вие всъщност искате.







Видове зони



Master Сървърът чете данните за зоната директно



от локалния диск (т.е от zone file) и е овластен да



дава отговори за тази зона.



Hint В тази зона се дефинират root-servers.



Slave Зона slave е реплика на master зона и



получава данни за тази зона чрез зонов



трансфер. slave ще даде овластен отговор за



зоната, само ако има валидни (не timed out) данни



за зоната.



Редът masters определя IP адрес/и на master



сървър/и, с които slave контактува, за да refresh



или update копие на зоната.







Authoritative Name Servers



Всяка зона се обслужва най-малко от един



овластен сървър за имена (authoritative name



server), който държи всички данни за зоната.



За по-висока надеждност се препоръчва зоната



да има два или повече такива сървъри.



В отговорите на authoritative servers, в пакета с



отговора, е вдигнат бит "authoritative answer"



(AA). Така по-лесно се диагностицират



(debugging) DNS конфигурациите с



инструменти като dig.







Primary Master



authoritative server, където се поддържа



главното (master) копие на данните за зоната.



Нарича се primary master сървър или просто



primary.



Той зарежда съдържанието на зоната от



локален файл, редактиран ръчно или



генериран от някакъв друг локален файл.



Този файл се нарича зонов - zone file или



master file.







Slave Servers



Другите authoritative servers, slave сървъри



(известни още като secondary) зареждат



съдържанието на зоната от друг сървър чрез



процес на репликация - zone transfer.



Обикновено данните се прехвърлят директно



от primary master, но е възможно и от друг



slave.



Т.е, slave server може да действа като master за



подчинен slave server.







Caching Name Servers



resolver библиотеките, които присъстват в



повечето операционни системи, са stub



resolvers, т.е те не са способни да изпълняват



пълния процес на DNS резолюция,



“говорейки” директно с authoritative servers.



Те разчитат на локален сървър за имена, който



да изпълнява резолюцията вместо тях.



Такъв сървър се нарича “recursive”



(рекурсивен) сървър за имена, защото



изпълнява рекурсивни търсения за сметка



на локалните клиенти.







Caching (recursive) Servers



За да се подобри производителността,



рекурсивните сървъри кешират резултатите



от търсенията, които са изпълнили.



Процесите на рекурсия и кеширане са взаимно



свързани, на термините recursive server и



caching server често се гледа като на



синоними.



Перодът от време, за който един запис се



държи в кеша, се контролира от Time To Live



(TTL) полето в него.







Caching Servers. Forwarding.



Кеширащият сървър за имена не е



необходимо да изпълнява сам пълното



рекурсивно търсене.



Вместо това той препраща (forward)



някои или всички заявки, които не може



да удовлетвори, от своя кеш към кеша



на друг сървър за имена, който се



определя като forwarder.







Многофункционални сървъри



Сървърът за имена BIND може едновременно



да бъде и master за някои зони, и slave за



други зони, и кеширащ (рекурсивен) сървър



за определен брой локални клиенти.



Все пак, функциите на овластени (authoritative)



услуги за имена и такива на caching/recursive



са логически разделени.



Затова е по-изгодно да работят на различни



машини. Така







Ресурсни записи



SOA определя кой е първичният сървър и как



се обработват данните към него.



NS съдържа информация кои DNS сървъри са



отговорни за този домейн.



MX указва име на хост, готов да приема



електронна поща в рамките на домейн.



Адресните записи съдържат съответствие



между име и IP-адрес. Имат следния формат:



<hostname> A <IP address>







Ресурсни записи



В DNS е възможно създаването на



прякори, т.е. няколко имена да



отговарят на един и същ IP адрес. Това



става с помощта на CNAME-записите,



които имат следния формат:



mail CNAME tiger



proxy CNAME tiger



tiger A 62.44.118.1







Root сървъри за имена



Кореновият сървър за имена (root nameserver) е DNS



сървър, който отговаря на запитвания относно



имената в коренния домейн и отправя заявките към



конкретни top-level domain (TLD), т.е към техните



сървъри за имена.



Всички имена в Internet завършват с точка . - напр.,



"www.wikipedia.org.” Но съвременният DNS софтуер



не се нуждае от нея, когато се опитва да транслира



домейн име в IP адрес.



Празният низ след крайната точка се нарича коренов



домейн (root domain), а всички останали (т.е. .com,



.org, .net, и т.н.) се съдържат вътре в коренния (root).







Root сървъри за имена



Когато компютър в Internet иска да открие съответствие



(resolve) за домейн име, започва от дясно на ляво,



запитвайки всеки name server поред относно



елемента от ляво.



root nameservers (отговарящи за домейна . ) знаят кои



сървъри са отговорни за top-level домейните.



Всеки такъв домейн (напр. .bg) има свой набор от



сървъри, които от своя страна делегират към



nameserver-те, отговарящи за отделните имена на



домейни (като uni-sofia.bg), които пък отговарят на



запитванията за IP адреси







Root сървъри за имена



Информацията не се променя често, затова се



кешира, така че DNS търсенията към root



nameservers са относително редки.



Но в Internet има доста некоректно



конфигурирани системи, които генерират



трафик към root servers.



Напр., заявки с източник адрес 0.0.0.0 (т.е



където и да е, навсякъде) отиват натам.



В момента има 13 root name servers, като



имената им са с формат.







Регистриране на име



Регистрирането на име не е автоматично,



а става чрез специална заявка към



регистратор за съответния домейн или



фирма, на която са делегирани



съответни права за регистрация.



За домейна .bg регистратор е register.bg.







Резолвинг на имена



За да се използва системата на URL-имената в



клиента (resolver) трябва да има агент, който



да може да работи с URL - началото на



resolving процеса.



Освен това в клиента трябва да има и малък



кеш, в който да се съхранява информация за



вече заявени и resolve-нати адреси за този



клиент.



Също така, клиентът трябва да разполага с



адрес на DNS сървър, който отговаря за



съответната област.







Резолвинг на имена



Когато към агента се подаде URL за



resolve-ане той първо проверява дали



отговора не стои в кеша.



Ако не, той изпраща заявка до DNS



сървър.



DNS сървърът може да формира три



типа заявки – рекурсивна, итеративна



или инверсна.







Рекурсивна заявка



При рекурсивна заявка DNS сървърът има прилежащ



към него друг сървър за имена.



Този сървър също може да има кеш, който евентуално



да съдържа отговора.



Сървърът може да съдържа отговора в своите зонални



файлове.



Ако и двата случая не са налице, но има конфигуриран



друг сървър за имена, той ще изпрати заявката към



него и т.н.



В един момент някой сървър по описаната верига може



да направи рекурсивната заявка в итеративна.







Итеративна заявка



При итеративната заявка сървър е в



свободното Internet пространство.



Той започва да раздробява съответното URL и



постъпково, съгласно структурата на URL



започва resolve-то.



Първо се изпраща заявка към root-сървъра,



като се иска адреса на сървъра, който



отговаря за TLD.



След това се праща заявка към сървъра от



първо ниво за адреса на сървъра, който



отговаря за домейна от второ ниво, участващ



в URL-то и т.н.







Инверсни заявки



Инверсните заявки служат за обратен resolve –



по IP адрес да се получи URL.



В сървърите за имена има специални записи,



предназначени за инверсни заявки: домейна



in-addr.arpa и (Pointer) PTR записите.



Йерархията на имената тук е спазена с



помощта на специалния домейн “INADDR.



ARPA”, разположен в резервирания



.ARPA TLD (Address and Routing Parameter Area)



“IN-ADDR” означава “INternet ADDRess”.



За IPv6 reverse lookup домейнът е ip6.arpa











Няма коментари:

Публикуване на коментар