DNS сервер
Материал из База знаний проекта Russian Fedora
Содержание |
Введение
Данная статья освещает вопросы
- Что такое DNS и как работает система доменных имен?
- настройка DNS сервера на примере сервера BIND в Fedora
- Покупка домена и процесс делегирования домена
Если вы разбираетесь в DNS - можно сразу переходить ко второй части
Типы dns запросов
Типы DNS серверов
Конфигурация DNS-клиента
Файлы баз зон
Файлы обратных зон DNS
Файл зоны для Localhost
Файл зоны со списком корневых серверов
Настройки iptables Для DNS
Описание работы DNS
Тема очень большая и не у всех сразу получается разобраться зачем это нужно и как работает, а между тем это основа работы любой сети. Как известно все в интернете работает по IP адресам. "Но," скажете вы- "я же пишу в браузере адрес "yandex.ru", а не какойто непонятный набор цифр?" И будете совершенно правы, потому что для удобства пользователей была создана и работает система DNS, которая позволяет преобразовать буквенный адрес(доменное имя) в IP адрес и обратно. Именно она и поможет вашему компьютеру узнать IP адрес нужного сервера. Для этого на каждом компьютере указан DNS сервер, к которому нужно обращаться если нужно преобразовать Имя в Адрес. Давайте рассмотрим как происходит дальше процесс резолвинга адресов:
- Клиент(DNS-клиент-это программа на вашем компьютере) посылает запрос к своему DNS-серверу который сохранен на вашем компьютере(назовем его сервер A) с описанием: какой ip у адреса wiki.russianfedora.ru? (DNS сервер A клиент получает либо по DHCP, либо адрес(a) DNS-серверов настраиваются человеком вручную)
- DNS-Сервер А, к которому пришел запрос клиента не знает IP-адреса сервера wiki.russianfedora.ru. А так же DNS-сервер не знает какой DNS отвечает за данный домен. Поэтому DNS-сервер A идет к корневому DNS-серверу и спрашивает у него-"знаешь ли ты, какой адрес у wiki.russianfedora.ru?
- Корневой DNS отвечает:?Нет, я не знаю IP нужного сервера, но я знаю DNS сервер, который отвечает за зону RU-можете спросить у него.
- DNS сервер А продолжает обработку запроса и идет к серверу, который отвечает за доменную зону RU. Как вы догадались-этот сервер тоже не знает какой адрес у wiki.russianfedora.ru.
- DNS зоны RU отвечает-"Нет, я не знаю нужного адреса, но я знаю сервер, который отвечает за домен Russianfedora - можешь спросить у него"
- Только после этого DNS клиента обращается к DNS-серверу, отвечающему за зону Russianfedora. Этот DNS russianfedora отвечает не только за домен russianfedora, но и за wiki.russianfedora.ru, forum.russianfedora.ru и т.д. Поэтому он отвечает серверу A сообщением "Доменному имени wiki.russianfedora.ru соответствует ip адрес 89.108.109.5"
- И DNS -сервер A пересылает этот ответ клиенту. На этом процесс резолвинга заканчивается.
В данном случае при разрешении имени, то есть в процессе поиска IP по имени:
- браузер отправил известному ему DNS-серверу запрос — в ответ на такой тип запроса сервер обязан вернуть «готовый результат», то есть IP-адрес, либо сообщить об ошибке;
- DNS-сервер, получивший запрос от браузера, последовательно отправлял нерекурсивные запросы, на которые получал от других DNS-серверов ответы, пока не получил ответ от сервера, ответственного за запрошенную зону;
- остальные упоминавшиеся DNS-серверы обрабатывали запросы нерекурсивно (и, скорее всего, не стали бы обрабатывать запросы рекурсивно, даже если бы такое требование стояло в запросе).
Таким образом если вы поднимаете свой собственный 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. Каждая ресурсная запись состоит из следующих полей:
- имя (NAME) — доменное имя, к которому привязана или которому «принадлежит» данная ресурсная запись,
- TTL (Time To Live) — допустимое время хранения данной ресурсной записи в кэше неответственного DNS-сервера,
- тип (TYPE) ресурсной записи — определяет формат и назначение данной ресурсной записи,
- класс (CLASS) ресурсной записи; теоретически считается, что DNS может использоваться не только с TCP/IP, но и с другими типами сетей, код в поле класс определяет тип сети,
- длина поля данных (RDLEN),
- поле данных (RDATA), формат и содержание которого зависит от типа записи.
Наиболее важные типы DNS-записей:
- Запись A (address record) или запись адреса связывает имя хоста с адресом IP. Например, запрос A-записи на имя referrals.icann.org вернет его IP адрес — 192.0.34.164
- Запись AAAA (IPv6 address record) связывает имя хоста с адресом протокола IPv6. Например, запрос AAAA-записи на имя K.ROOT-SERVERS.NET вернет его IPv6 адрес — 2001:7fd::1
- Запись CNAME (canonical name record) или каноническая запись имени (псевдоним) используется для перенаправления на другое имя
- Запись MX (mail exchange) или почтовый обменник указывает сервер(ы) обмена почтой для данного домена.
- Запись NS (name server) указывает на DNS-сервер для данного домена.
- Запись PTR (pointer) или запись указателя связывает IP хоста с его каноническим именем. Запрос в домене in-addr.arpa на IP хоста в reverse форме вернёт имя (FQDN) данного хоста (см. Обратный DNS-запрос). Например, (на момент написания), для IP адреса 192.0.34.164: запрос записи PTR 164.34.0.192.in-addr.arpa вернет его каноническое имя referrals.icann.org. В целях уменьшения объёма нежелательной корреспонденции (спама) многие серверы-получатели электронной почты могут проверять наличие PTR записи для хоста, с которого происходит отправка. В этом случае PTR запись для IP адреса должна соответствовать имени отправляющего почтового сервера, которым он представляется в процессе SMTP сессии.
- Запись SOA (Start of Authority) или начальная запись зоны указывает, на каком сервере хранится эталонная информация о данном домене, содержит контактную информацию лица, ответственного за данную зону, тайминги (параметры времени) кеширования зонной информации и взаимодействия DNS-серверов.
- Запись SRV (server selection) указывает на серверы для сервисов, используется, в частности, для Jabber и Active Directory.
Нужно было настроить передачу зоны с первичного на вторичный сервер там права на директорию в которой создавалась зона не были выставлены настроить автоматическую репликацию всех доступных мастер-зон на вторичный сервер.
Настройка сервера 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
- Создаем файл зоны /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
