DNS сервер

Материал из База знаний проекта Russian Fedora

Перейти к: навигация, поиск
Страница находится в работе
Ответственный: не указан

Содержание

Введение

Данная статья освещает вопросы

Если вы разбираетесь в DNS - можно сразу переходить ко второй части

Типы dns запросов

Типы DNS серверов

Конфигурация DNS-клиента

Файлы баз зон

Файлы обратных зон DNS

Файл зоны для Localhost

Файл зоны со списком корневых серверов

Настройки iptables Для DNS

Описание работы DNS

Тема очень большая и не у всех сразу получается разобраться зачем это нужно и как работает, а между тем это основа работы любой сети. Как известно все в интернете работает по IP адресам. "Но," скажете вы- "я же пишу в браузере адрес "yandex.ru", а не какой-то непонятный набор цифр?" И будете совершенно правы, потому что для удобства пользователей была создана и работает система DNS, которая позволяет преобразовать буквенный адрес(доменное имя) в IP адрес и обратно. Именно она и поможет вашему компьютеру узнать IP адрес нужного сервера. Для этого на каждом компьютере указан DNS сервер, к которому нужно обращаться если нужно преобразовать Имя в Адрес. Давайте рассмотрим как происходит дальше процесс резолвинга адресов:

  1. Клиент(DNS-клиент-это программа на вашем компьютере) посылает запрос к своему DNS-серверу который сохранен на вашем компьютере(назовем его сервер A) с описанием: какой ip у адреса wiki.russianfedora.ru? (DNS сервер A клиент получает либо по DHCP, либо адрес(a) DNS-серверов настраиваются человеком вручную)
  2. DNS-Сервер А, к которому пришел запрос клиента не знает IP-адреса сервера wiki.russianfedora.ru. А так же DNS-сервер не знает какой DNS отвечает за данный домен. Поэтому DNS-сервер A идет к корневому DNS-серверу и спрашивает у него-"знаешь ли ты, какой адрес у wiki.russianfedora.ru?
  3. Корневой DNS отвечает:?Нет, я не знаю IP нужного сервера, но я знаю DNS сервер, который отвечает за зону RU-можете спросить у него.
  4. DNS сервер А продолжает обработку запроса и идет к серверу, который отвечает за доменную зону RU. Как вы догадались-этот сервер тоже не знает какой адрес у wiki.russianfedora.ru.
  5. DNS зоны RU отвечает-"Нет, я не знаю нужного адреса, но я знаю сервер, который отвечает за домен Russianfedora - можешь спросить у него"
  6. Только после этого DNS клиента обращается к DNS-серверу, отвечающему за зону Russianfedora. Этот DNS russianfedora отвечает не только за домен russianfedora, но и за wiki.russianfedora.ru, forum.russianfedora.ru и т.д. Поэтому он отвечает серверу A сообщением "Доменному имени wiki.russianfedora.ru соответствует ip адрес 89.108.109.5"
  7. И DNS -сервер A пересылает этот ответ клиенту. На этом процесс резолвинга заканчивается.


В данном случае при разрешении имени, то есть в процессе поиска IP по имени:

Таким образом если вы поднимаете свой собственный DNS сервер и берете домен domen.ru- вы берете на себя ответственность не только за сам домен, но и за всю доменную зону(т.е за все остальные домены, которые заканчиваются на domen.ru: например, wiki.domen.ru, www.domen.ru, abrakadabra.domen.ru).

Для каждой зоны DNS сервер может поддерживать разные типы записей, например А-обычная запись типа :"домен-ip_адрес", или MX-чтобы узнать какой почтовый сервер работает в домене.

Система DNS содержит иерархию DNS-серверов, соответствующую иерархии зон. И за каждую зону ответственен какойто свой сервер. Каждая зона поддерживается как минимум одним авторитетным сервером DNS (от Шаблон:Lang-en — авторитетный), на котором расположена информация о домене.

Имя и IP-адрес не тождественны — один IP-адрес может иметь множество имён, что позволяет поддерживать на одном компьютере множество веб-сайтов (это называется виртуальный хостинг). Обратное тоже справедливо — одному имени может быть сопоставлено множество IP-адресов: это позволяет создавать балансировку нагрузки.

Для повышения устойчивости системы используется множество серверов, содержащих идентичную информацию, а в протоколе есть средства, позволяющие поддерживать синхронность информации, расположенной на разных серверах. Существует 13 корневых серверов, их адреса практически не изменяются.<ref>Текущая версия корневой зоны всегда находится по адресу: ftp://ftp.internic.net/domain/named.root</ref>

Протокол DNS использует для работы TCP- или UDP-порт 53 для ответов на запросы. Традиционно запросы и ответы отправляются в виде одной UDP датаграммы. TCP используется для AXFR-запросов. AXFR-запросы-очень важны, они используются для рекурсивного


Рекурсия в DNS

Термином Рекурсия в DNS обозначают алгоритм поведения DNS-сервера, при котором сервер выполняет от имени клиента полный поиск нужной информации во всей системе DNS, при необходимости обращаясь к другим DNS-серверам.


DNS-запрос может быть рекурсивным — требующим полного поиска, — и нерекурсивным — не требующим полного поиска.

Аналогично, DNS-сервер может быть рекурсивным (умеющим выполнять полный поиск) и нерекурсивным (не умеющим выполнять полный поиск). Некоторые программы DNS-серверов, например, BIND, можно сконфигурировать так, чтобы запросы одних клиентов выполнялись рекурсивно, а запросы других — нерекурсивно.

При ответе на нерекурсивный запрос, а также — при неумении или запрете выполнять рекурсивные запросы, — DNS-сервер либо возвращает данные о зоне, за которую он ответствен, либо возвращает адреса серверов, которые обладают большим объёмом информации о запрошенной зоне, чем отвечающий сервер, чаще всего — адреса корневых серверов.

В случае рекурсивного запроса DNS-сервер опрашивает серверы (в порядке убывания уровня зон в имени), пока не найдёт ответ или не обнаружит, что домен не существует. (На практике поиск начинается с наиболее близких к искомому DNS-серверов, если информация о них есть в кеше и не устарела, сервер может не запрашивать другие DNS-серверы.)

Большинство людей которые только начинают знакомиться с системой доменных имен обычно удивляются почему в ответ на запрос "настроить домен" обычно появляется нечто вроде "делегирование доменной зоны".


Иногда допускается, чтобы запрошенный сервер передавал рекурсивный запрос «вышестоящему» DNS-серверу и дожидался готового ответа.

При рекурсивной обработке запросов все ответы проходят через DNS-сервер, и он получает возможность кэшировать их. Повторный запрос на те же имена обычно не идет дальше кэша сервера, обращения к другим серверам не происходит вообще. Допустимое время хранения ответов в кэше приходит вместе с ответами (поле TTL ресурсной записи).

Рекурсивные запросы требуют больше ресурсов от сервера (и создают больше трафика), так что обычно принимаются от «известных» владельцу сервера узлов (например, провайдер предоставляет возможность делать рекурсивные запросы только своим клиентам, в корпоративной сети рекурсивные запросы принимаются только из локального сегмента). Нерекурсивные запросы обычно принимаются ото всех узлов сети (и содержательный ответ даётся только на запросы о зоне, которая размещена на узле, на DNS-запрос о других зонах обычно возвращаются адреса других серверов).


Типы записей DNS

Записи DNS, или Ресурсные записи (англ. Resource Records, RR) — единицы хранения и передачи информации в DNS. Каждая ресурсная запись состоит из следующих полей:

Наиболее важные типы DNS-записей:


Нужно было настроить передачу зоны с первичного на вторичный сервер там права на директорию в которой создавалась зона не были выставлены настроить автоматическую репликацию всех доступных мастер-зон на вторичный сервер.


Настройка сервера DNS под Fedora

Установка пакетов

yum install bind
Так же необходимо открыть 53ий порт в iptables

Настройка конфигурационного файла

Все конфигурационные файлы расположены в /var/named/

В named.ca находятся адреса всех корневых DNS-серверов

В named.empty - просто шаблон для конфига

В named.localhost - зона для имени localhost

В named.loopback - файл обратной зоны для 127.0.0.1

Пример простой конфигурации

named.conf:

options {
       listen-on port 53 { any;};
       directory       "/var/named";
       dump-file       "/var/named/data/cache_dump.db";
       statistics-file "/var/named/data/named_stats.txt";
       memstatistics-file "/var/named/data/named_mem_stats.txt";
       forwarders {83.217.192.2; 83.217.193.2; };
};
zone "." IN {
       type hint;
       file "named.ca";
};
zone "domain.ru" { type master; file "1.txt";notify yes;};
zone "0.0.127.in-addr.arpa" in {
type master;
file "named.localhost";
notify no;
};


Файл 1.txt

$TTL 43200
@ IN   SOA @ freedom13.ru (
       2000092940; Serial
       3600      ; Refresh
       900       ; Retry
       1209600   ; Expire
       86400     ; Minimum TTL
       )
@ IN NS 8.8.8.8
@ IN NS ns.secondary.net.ua.
ns1.freedom13.ru. IN A 8.8.8.8
@ IN A 8.8.8.8

Описание конфигурации по умолчанию

options {
       listen-on port 53 { 127.0.0.1; };
       listen-on-v6 port 53 { ::1; };
       directory       "/var/named";
       dump-file       "/var/named/data/cache_dump.db";
       statistics-file "/var/named/data/named_stats.txt";
       memstatistics-file "/var/named/data/named_mem_stats.txt";
       allow-query     { localhost; };
       recursion yes;
       dnssec-enable yes;
       dnssec-validation yes;
       dnssec-lookaside auto;
       /* Path to ISC DLV key */
       bindkeys-file "/etc/named.iscdlv.key";
       managed-keys-directory "/var/named/dynamic";
};
logging {
       channel default_debug {
               file "data/named.run";
               severity dynamic;
       };
};
zone "." IN {
       type hint;
       file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";




В конец файла /etc/named.conf добавляем строки

     zone "mysite.ru" IN {
             type master;
             file "named.mysite";
     };     

Соответственно зона домена mysite.ru будет прописана в файле /var/named/chroot/var/named/named.mysite

  1. Создаем файл зоны /var/named/named.mysite со следующим текстом:
     $TTL    86400
     @       IN      SOA     ns1.mysite.ru. ваш.почтовый.ящик. (
                             1194087297      ; Serial
                             10800   ; Refresh
                             3600    ; Retry
                             604800  ; Expire
                             10800 ) ; Minimum
     mysite.ru.           IN NS    ns1.mysite.ru.
     mysite.ru.           IN NS    ns2.mysite.ru.
     ns1.mysite.ru.       IN A     первый_IP
     ns2.mysite.ru.       IN A     второй_IP
     mysite.ru.           IN A     mysite.ru.           IN A     первый_IP 
     www                  IN CNAME mysite.ru.
     mysite.ru.           IN MX 10 mail.mysite.ru.
     mail                 IN A     второй_IP    

Реальный почтовый ящик имеет вид "ваш@почтовый.ящик" , но вместо @ в файле зоны пишут точку. Все точки в файле зоны существенны. Записи вида

     mysite.ru.           IN A     первый_IP
     mysite.ru           IN A     первый_IP 

различны. Первая задает адрес домена mysite.ru, вторая - адрес поддомена mysite.ru.mysite.ru

Файл содержит DNS-записи различных типов.

   * SOA-запись обязательна. Она содержит технические параметры зоны. Подробно на них останавливаться не будем, обратим лишь внимание на параметр Serial. Его начальное значение не важно, однако при изменении DNS-зоны (добавлении/удалении записей, изменении их значений) его необходимо увеличивать. Например, можно в качестве Serial использовать текущую дату: час, день, месяц, год дадут 1406032008.
   * NS-записи для основного домена также обязательны


                mysite.ru.           IN NS    ns1.mysite.ru.
                mysite.ru.           IN NS    ns2.mysite.ru.
     Их можно писать в виде
                @           IN NS    ns1.mysite.ru.
     '@' в файле зоны всегда заменяет имя основного домена.
   * Следующие две записи необходимы в нашем случае, они задают IP-адреса для самих DNS-серверов.
                ns1.mysite.ru.       IN A     первый_IP
                ns2.mysite.ru.       IN A     второй_IP 
   * Остальные записи не требуются для работы DNS-серверов. Они задают адрес сайта, почтового сервера, поддоменов. В предложенном шаблоне определяются
     адрес основного домена:
                mysite.ru.           IN A     первый_IP 
     адрес поддомена mail.mysite.ru
                mail                 IN A     второй_IP    
     Домен www.mysite.ru делается синонимом основного домена
                www                  IN CNAME mysite.ru.
     Почта домена направляется на поддомен mail.mysite.ru
                mysite.ru.           IN MX 10 mail.mysite.ru. 
     Таким образом предполагается, что по адресу mail.mysite.ru будет расположен SMTP-сервер, принимающий почту, направленную на адреса вида smth@mysite.ru
   * Для добавления произвольного поддомена subdomain.mysite.ru следует использовать шаблон
                 subdomain           IN     A               IP-адрес
                 www.subdomain   IN     CNAME  subdomain

Запуск сервера DNS

named-checkzone named.mysite
service named start
  

Проверка работы DNS

host mysite.ru первый_IP
host mysite.ru второй_IP

В результате двух последних команд должен быть выведен IP из строки

     mysite.ru.           IN             A     первый_IP

/etc/resolv.conf

nameserver 127.0.0.1

Покупка и настройка своего домена

Если вы купили домен-нужно сообщить компании у которой вы его купили(регистратору) адреса своих DNS-серверов.

Делегировать домен = сообщить регистратору адрес(или адреса) сервера, на котором хранится информация о его DNS-зоне. После делегирования регистратор своими силами распространяет эту информацию по глобальным DNS-зонам.

http://opennet.ru/base/net/simple_dns.txt.html

http://opennet.ru/base/net/dns_setup.txt.html

http://unixlib.ru/node/116

http://unixlib.ru/node/115

http://unixlib.ru/node/114