DNS (Domain Name System)

Система доменных имён.

DNS HOWTO

RFC 1034 (DOMAIN NAMES - CONCEPTS AND FACILITIES)
RFC 1035 (DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION)
основные термины

Книги:
DNS и BIND (4-е издание, 2002 год, PDF)
DNS и BIND (5-е издание, 2008 год, PDF)

Пространство доменных имён

Распределенная база данных системы доменных имен индексируется по именам узлов. Каждое доменное имя является просто путем в огромном перевернутом дереве, которое носит название пространства доменных имен. Иерархическая структура дерева похожа на структуру файловой системы Unix. Единственный корень дерева расположен наверху. В файловых системах Unix эта точка называется корневым каталогом и представлена символом «слэш» (/). В DNS же это просто «корень» («root»). Как и файловая система, дерево DNS может иметь любое количество ответвлений в любой точке пересечения, или узле. Глубина дерева ограничена и может достигать 127 уровней (предел, до которого вы вряд ли когда-нибудь доберетесь).


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

sudo apt install bind9

Дополнительно будут установлены пакеты bind9-utils dns-root-data python3-ply

Создать файл зоны

touch /etc/bind/db.linux-doc.ru

Вписать в него данные

Файл /etc/bind/db.linux-doc.ru

; ; BIND data file for domain linux-doc.ru ; $TTL 4h linux-doc.ru. IN SOA ns1.linux-doc.ru. admin.linux-doc.ru. ( 2022090501 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; ; name servers - NS records @ IN NS ns1.linux-doc.ru. @ IN NS ns4-l2.nic.ru. @ IN NS ns8-l2.nic.ru. ; name servers - A records ns1.linux-doc.ru. IN A 148.251.178.180 ; hosts - A records @ IN A 148.251.178.180 www IN A 148.251.178.180

Указать файл зоны в основной конфигурации

Файл /etc/bind/named.conf

;... zone "linux-doc.ru" { type master; file "/etc/bind/db.linux-doc.ru"; }; ;...

Имя зоны будет являться значением подстановочного символа @

Запустить службу Bind9

sudo service named start

Доменные имена

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

Если метка корневого узла должна быть отображена в доменном имени, она записывается как символ точки, например, так: «www.oreilly.com.». (На самом деле имя заканчивается точкой-разделителем и пустой меткой корневого узла.) Сама по себе метка корневого узла записывается исключительно из соображений удобства, как самостоятельная точка (.)• Как следствие, некоторые программы интерпретируют имена доменов, заканчивающиеся точкой, как абсолютные. Абсолютное доменное имя записывается относительно корня и однозначно определяет расположение узла в иерархии. Абсолютное доменное имя известно также под названием полного доменного имени, обозначаемого аббревиатурой FQDN (fully qualified domain name). Имена без завершающей точки иногда интерпретируются относительно некоторого доменного имени (не обязательно корневого) точно так же, как имена каталогов, не начинающиеся с символа «/» (слэш), часто интерпретируются относительно текущего каталога.

В DNS «братские» узлы, то есть узлы, имеющие общего родителя, должны иметь разные метки. Такое ограничение гарантирует, что доменное имя единственно возможным образом идентифицирует отдельный узел дерева. Это ограничение на практике не является ограничением, поскольку метки должны быть уникальными только для братских узлов одного уровня, но не для всех узлов дерева. То же ограничение существует в файловых системах Unix: двум «единоутробным» каталогам или двум файлам в одном каталоге не могут быть присвоены одинаковые имена. Невозможно создать два узла hobbes.pa.ca.us в пространстве доменных имен, и невозможно создать два каталога /usr/bin. Тем не менее, можно создать пару узлов с именами hobbes.pa.ca.us и hobbes.lg.ca.us, точно так же, как можно создать пару каталогов с именами /bin и /usr/bin.


Записи ресурсов

Информация, связанная с доменными именами содержится в записях ресурсов (RRs, resource records). 1 Записи разделяются на классы, каждый из которых определяет тип сети или программного обеспечения. В настоящее время существуют классы для интернет-сетей (на основе семейства протоколов TCP/IP), сетей на основе проколов Chaosnet, a также сетей, которые построены на основе программного обеспечения Hesiod. (Chaosnet - старая сеть, имеющая преимущественно историческое значение).

Популярность класса интернет-сетей значительно превосходит популярность остальных классов. (Мы не уверены, что где-то до сих пор используется класс Chaosnet, а использование класса Hesiod в основном ограничивается пределами Массачусетского технологического института - MIT). В настоящей книге мы сосредоточимся на классе интернет-сетей.


Делегирование

Надеемся, читатели еще не забыли, что одной из основных целей разработки системы доменных имен была децентрализация администрирования? Эта цель достигается путем делегирования. Делегирование доменов во многом схоже с распределением рабочих задач. Начальник может разделить крупный проект на небольшие задачи и делегировать ответственность за каждую из них разным подчиненным.

Аналогичным образом организация, сопровождающая домен, может разделить его на несколько поддоменов, каждый из которых может быть делегирован какой-либо другой организации. Организация, получившая домен таким путем, несет ответственность за работу с данными этого поддомена. Она может свободно изменять эти данные, разделять поддомен на несколько более мелких поддоменов, а те, в свою очередь, снова делегировать. Родительский домен сохраняет только указатели на источники данных для поддоменов, в целях перенаправления запросов по соответствующим адресам. К примеру, домен stanford.edu, делегирован тем ребятам в Стэнфорде, которые управляют ниверситетскими сетями.



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


Разновидности DNS-серверов

Спецификация DNS определяет два типа DNS-серверов: первичный мастер-сервер (primary master) и дополнительный, или вторичный мастер-сервер (secondary master). Первичный мастер-сервер производит загрузку данных для зоны из файла на машине-сервере. Вторичный мастер-сервер получает данные зоны от другого DNS-сервера, который является авторитативным для этой зоны и называется его мастером (master server). Довольно часто мастер-сервер является первичным мастером для зоны, но не обязательно: вторичный мастер-сервер может получать зональные данные и от другого вторичного. Когда запускается вторичный сервер, он устанавливает связь с мастером и, в случае необходимости, получает зональные данные. Этот процесс называется передачей, или трансфером зоны (zone transfer). В наше время предпочтительным термином для вторичного мастер-сервера имен является slave (подчиненный, ведомый), хотя многие люди (и многие программы, в частности, Microsoft DNS Manager) все еще пользуются прежним термином.


Пример получения SOA-записи с конкретного сервера DNS

$ dig @ns4-l2.nic.ru linux-doc.ru SOA ; <<>> DiG 9.16.1-Ubuntu <<>> @ns4-l2.nic.ru linux-doc.ru SOA ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41466 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;linux-doc.ru. IN SOA ;; ANSWER SECTION: linux-doc.ru. 10800 IN SOA ns1.linux-doc.ru. hostmaster.linux-doc.ru. 2021011801 10800 3600 604800 3600 ;; Query time: 20 msec ;; SERVER: 91.217.20.20#53(91.217.20.20) ;; WHEN: Пн сен 05 21:35:25 MSK 2022 ;; MSG SIZE rcvd: 92

Далее

рекурсия
время жизни
syslog

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

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