Домени, піддомени, псевдо-домени, зони прямі і зворотні
Рекурсивний і нерекурсивний запит
Stub-resolver. Тупиковий Резолвер з кешем підтримує тільки рекурсивний запит. (Win: DNS-client) TSIG протокол дозволяє аутентифицировать передачу даних між DNS-серверами. Можна перевіряти справжність даних при передачі зон, рекурсивних запитах, динамічних оновленнях. Самі дані не шифруються, але справжність перевіряється. TSIG використовує мітки часу для запобігання атаки повторення пакетів.
Приклад dns запиту на сервер 10.13.0.101 - рекурсія дозволена:
Приклад dns запиту на сервер 10.13.0.101 - рекурсія заборонена:
Приклад запиту за допомогою команди dig. рекурсія заборонена
управління
Перевіряє конфиг сервера імен
Перезавантажує конфиг і зони
Перезавантажує тільки змінилися зони
Конфігурація і файли зон за замовчуванням лежать в / etc / bind /
Обмеження на трансфер зон і запити
Налаштування зони і підключення файлу зони
Приклад файлу зони, для якої ми є майстром (SOA ns1.model.local.) Сервер ns.example.com. вказано як вторинної.
Параметри часу життя запису:
- TTL - час, на яке запис вважається дійсною, після видачі сервером. Записи в кеші зберігаються протягом TTL.
- Negative Cache TTL - час дії відповіді про відсутність запису (NXDOMAIN). Запис про те, що ви запросили ім'я не існує зберігається в кеші на цей час.
TTL можна задавати окремо для кожного запису. Negative Cache TTL - діє на зони в цілому.
Зони за замовчуванням
Зона типу hint для домену точки зі списком кореневих серверів. Файл зона необхідно періодично оновлювати з сервера ftp://ftp.internic.net/domain/named.cache
Зони замикання на себе прямі, зворотні і броадкастов.
Приклад прямого і зворотного зони замикання на себе, що входять в дистрибутив BIND9
Типи ресурсних записів (RR)
SOA запис у файлі зони повинна бути тільки одна. У файлі вона повинна стояти першою. Запис SOA визначає який сервер є власником зони і які на зону встановлені параметри. Після запису SOA треба обов'язково вказати IN NS запис з тим-же сервером, що і в заголовку.
Приклад: домен example.com обслуговується серверами ns.example.com і ns.examle.net. Після вказівки директиви $ ORIGIN сервер автоматично допише за нас все неповні dns імена (таким чином hostmaster читається як hostmaster.example.com). Ім'я сервера поза зоною пишеться повністю.
Приклад 2: домен example.com обслуговується двома серверами поза зоною. Для них вказані повні імена в записах IN NS. Оскільки домен обслуговується іншими серверами ніякі A записи не допускаються.
Інфраструктурна запис, що вказує ім'я сервера імен для даного домену. формат
Відповідно до стандарту, кожен публічний домен повинен мати мінімум 2 сервера імен. Приватний домен може обслуговуватися і одним сервером.
Якщо NS сервер для нашого домену знаходиться в нашому домені, то ми зобов'язані вказати A-запис для цього сервера (glue-record). Якщо NS сервер лежить поза домену - A-запис вказувати не потрібно.
Приклад: NS записи для основного домену та для делегованого поддомена із зазначенням glue-records.
Приклад: різні варіації записи
Поштових серверів для домену можна вказати кілька з різними пріоритетами.
Приклад: поштові сервера для домена і поддомена в одному файлі
Запис CNAME використовується для зазначення псевдоніма або посилання одного імені на інше. Якщо сервер повернув клієнту CNAME у відповідь на запит, то клієнтові доведеться повторно робити запит на дозвіл CNAME. Використовується для зручності адміністрування при наявності багатьох імен у одного сервера.
Приклади різних псевдонімів в домені example.com.
Приклад для IPv4:
Приклад для IPv6:
Директиви сервера bind
View - обмеження видимості зон
Це дозволяє використовувати різні дані по одній і тій-же зоні для різних клієнтів. Для внутрішніх клієнтів ми повинні дозволити рекурсивні запити, для зовнішніх - заборонити.
На версії 9.8.4 поведінку таке:
Тобто для нас актуальні перші два варіанти.
Вимкнути перевірку DNSSEC. Потрібно якщо ми в лабораторних умовах сквоттім TLD.
Конфігурація зон /etc/bind/named.conf
Якщо цього не зробити, у відповідь на запит до будь-якого імені в зоні сервер буде відповідати помилкою "ServerFail":