Системата за домейн имена (DNS) е йерархична, разпределена база данни между голям брой сървъри. В нея се съхранява информация за свързване на хост имена и IP адреси, информация за маршрутизиране на пощенски съобщения и други данни, използвани от интернет приложения.
Интернет приложенията (клиенти) комуникират с DNS, като ползват резолвер библиотека, която изпраща заявки към един или повече неймсървъри и връща получените отговори.
Най-популярният DNS сървърен софтуер BIND съдържа неймсървър named
и резолвер библиотека liblwres
.
Домейни и домейн имена
DNS информацията се идентифицира с домейни, които са организирани в дървовидна структура според организационни или административни граници. Всеки възел (разклонение) на дървото, наречен домейн, получава етикет. Домейн името на възела е конкатенацията (свързването) на всички етикети в пътя от конкретния възел до главния root домейн:
css.dev.example1.com.
Това е представено в писмена форма като низ от етикети, подредени от дясно на ляво и разделени с точки. Етикетът (хост името) трябва да е уникален само в неговия основен домейн.
Например, домейн име на хост може да бъде css.dev.example1.com
, където com
е домейн от най-високо ниво (top level domain, TLD), към който принадлежи css.dev.example1.com
; example1
е поддомейн на com
, dev
е хост име и поддомейн на example1.com
, а css
е хост име и поддомейн на dev.example1.com
.
За административни цели пространството за домейн имена е разделено на зони, всяка започваща от възел (разклонение) и простираща се до нейните собствени разклонения (хост имена) или към разклоненията, където започват други зони. Данните за всяка зона се съхраняват в неймсървър, който отговаря на запитвания за зоната, използвайки протокола DNS.
DNS зона
За правилното управление на неймсървъра е важно да се разбере разликата между зоната и домейна.
Зоната е точка на делегиране в DNS дървото. Зоната се състои от съседни части от дървото – домейни, за които неймсървърът има пълна информация и над които има авторитет.
Той съдържа всички домейн имена от определена точка надолу в дървото на домейните, с изключение на тези, които са делегирани на други зони.
Точката на делегиране се обозначава с един или повече NS записи в родителската (от по-високо ниво) зона, които трябва да бъдат съпоставени с еквивалентни NS записи в зоновия файл на делегираната зона.
Зоната може да се насочи към един домейн, но може да включва само част от домейна, останалата част може да бъде делегирана на други неймсървъри.
Всяко име в DNS е домейн, дори и да е терминал, т.е. да няма собствени поддомейни. Всеки поддомейн е домейн и всеки домейн, с изключение на root
, също е поддомейн.
Въпреки че BIND по същество е неймсървър, той се занимава главно с управление на DNS зони. Главните и подчинените декларации във файла named.conf
определят зони, а не домейни.
Авторитетни (authoritative) неймсървъри
Всяка зона се обслужва от поне един авторитетен неймсървър, който съдържа пълните данни за зоната. За да работи DNS стабилно и да е предпазена от мрежови повреди, повечето зони имат два или повече авторитетни неймсървъра в различни мрежи.
Отговорите от авторитетните неймсървъри се обозначават с етикета авторитетен отговор (AA) в пакетите с отговори.
Primary Master неймсървъри
Авторитетният неймсървър, на който се пази основното копие на данните за зоните (зоновия файл), се нарича Primary Master сървър или просто първичен.
Обикновено той зарежда съдържанието на зоната от локален файл, който се нарича зонов или master файл.
Slave неймсървъри
Другите авторитетни неймсървъри (известни като slave или вторични), зареждат съдържанието на зоните от друг сървър, като използват процес на репликация, известен като трансфер на DNS зона.
Обикновено данните се прехвърлят директно от първичния (primary), но също така е възможно да се прехвърлят и от вторичен (slave) неймсървър. С други думи, един вторичен неймсървър може да действа като първичен спрямо друг вторичен неймсървър.
Stealth (скрити) неймсървъри
Обикновено всички авторитетни неймсървъри в зоната са изброени чрез NS записи в родителската (parent) зона. Тези NS записи представляват делегиране на зоната от родителя. Авторитетните сървъри са изброени в самото начало на зоновия файл.
Stealth сървърът отговаря авторитетно за дадена зона, но не е включен в NS регистрите на тази зона. Stealth сървърите могат да се използват като начин за централизиране на разпространението на дадена зона, без да се налага да се редактира зоната на отдалечен неймсървър.
Когато основният зонов файл е на stealth сървър, той често се нарича скрита първична конфигурация. Stealth сървърите също могат да бъдат начин да запазите локално копие на зона за бърз достъп до записите на зоната, дори ако всички официални неймсървъри са недостъпни.
Кеширащи неймсървъри
Резолвер библиотеките на повечето операционни системи, са всъщност stub resolvers, което означава, че те не са в състояние сами да изпълнят процеса на пълно резолване на DNS, като говорят директно с авторитетните неймсървъри.
Вместо това, те разчитат на локален неймсървър, който да извърши резолването от тяхно име. Такъв сървър се нарича рекурсивен неймсървър, който извършва рекурсивни търсения за локални клиенти.
За да подобрят производителността, рекурсивните неймсървъри кешират резултатите от запитванията. Тъй като процесите на рекурсия и кеширане са тясно свързани, термините рекурсивен неймсървър и кеширащ неймсървър често се използват като синоними.
Пренасочващи неймсървъри
Често кеширащият неймсървър не изпълнява пълното рекурсивно търсене сам. Вместо това, той може да препраща някои или всички заявки, които не може да отговори от кеш паметта си, до друг кеширащ неймсървър, обикновено наричан пренасочващ неймсървър.
Възможно е да има един или повече пренасочващи неймсървъри, които да се запитват последователно, докато списъкът не бъде изчерпан или се намери отговор.
Пренасочващите неймсървъри обикновено се използват, когато не желаете всички сървъри на даден сайт да взаимодействат директно с останалите сървъри в интернет.
Типичният сценарий включва няколко вътрешни DNS сървъра и интернет защитна стена (firewall). Сървърите, които не могат да пренасят пакетите през защитната стена, ще препратят към сървъра, който може да го направи, и този сървър ще се свърже с интернет DNS сървърите от името на вътрешния сървър.
Неймсървъри с няколко роли
Неймсървърът BIND може едновременно да действа като първичен (primary) за някои зони, подчинен (slave) за други зони и като кеширащ (рекурсивен) сървър за набор от локални клиенти.
Тъй като функциите на авторитетен неймсървър и кеширащ (рекурсивен) неймсървър са логично отделени, често е изгодно да се стартират на отделни сървърни машини.
Неймсървър, който предоставя само авторитетна услуга за имена (authoritative-only) може да работи с деактивирана рекурсия, подобрявайки надеждността и сигурността.
Неймсървър, който не е авторитетен и предоставя само рекурсивно обслужване на локални клиенти (caching-only), не е необходимо да бъде достъпен от интернет и може да бъде поставен зад firewall.