Domain Name System

Для людини, яка попрацювала навіть невеликий час в мережі, стає цілком природним, що кожен комп'ютер, підключений до інтернет, має свою назву, ім'я, яке легко запам'ятати. Система, яка дозволяє нам використовувати ці звичні для людини імена, уникаючи інших незручних способів "маркування" комп'ютерів, називаєтьсяDNS(Domain Name System, доменна система імен).

Щоб полегшити впорядкування найменувань, вся структура комп'ютерних імен влаштована таким чином: є окремі рівні (домени), які можуть включати як інші піддомени, так і імена комп'ютерів. Усі назви повинні складатися лише з латинських літер, цифр і, можливо, знака "мінус". Окремі рівні доменів розділяються крапкою.

У межах домену кожного рівня є група людей, які відповідають за цей домен. Вони можуть додавати імена комп'ютерів, що знову з'явилися, змінювати їх або видаляти. І по суті, те, як буде називатися та машина, на якій працюєте ви у своїй фірмі, залежить від того, що їм підкаже фантазія написати в конфігураційному файлі DNS.

Доменів верхнього рівня дуже небагато - всього близько 250. Більшість з них - так звані, географічні домени. Наприклад, .de (Deutschland, Німеччина), .ru (Russia, Україна), .iq (Iraq, Ірак). Негеографічні домени верхнього рівня, що залишилися - .com (для комерційних компаній), .net (для мережевих ресурсів), .edu (освітні установи), .mil (військові організації), .org (некомерційні організації), .gov (урядові відомства), .int (міжнародні корпорації).

Якщо вам захотілося б зареєструвати ще один домен верхнього рівня, то знадобилося для цього надати такі серйозні обґрунтування, що набагато простіше було борганізувати свою маленьку державу і йому вже отримати географічний домен.

На початок 1998 року у всьому інтернеті зареєстровано близько 30 мільйонів хостів. Розподіл доменів верхнього рівня наведено в таблиці:

Україна у цьому списку знаходиться на 28-му місці. Під доменом .ru зареєстровано близько 100 тисяч комп'ютерів. А в Антарктиці (.aq), як виявляється, немає жодного комп'ютера, підключеного до інтернету.

DNS вашої компанії

При поточному рівні розвитку комунікацій в Україні все більше компаній постають перед необхідністю підключення своїх локальних мереж до інтернету. Якщо опустити всі організаційні та комерційні питання підключення, то технічному відношенні цей процес зведеться до наступної послідовності дій:

- Підключення до провайдера. Фізичне підключення може бути виконано багатьма різними способами: від звичайного модему до радіомереж та оптоволокна. Спосіб підключення та, відповідно, оплата обумовлюються безпосередньо з провайдером.

- процедура реєстрації доменного імені. Вона дуже різниться для різних доменів верхнього рівня, і може бути як безкоштовною, так і по оплаті.

- Подальше встановлення програмного забезпечення на комп'ютери, що потребує явної вказівки доменного імені (наприклад, web-сервера).

Взагалі кажучи, більшість інтернет-провайдерів надають послуги з реєстрації доменів їх силами, але вам може бути корисно уявляти, як ця процедура відбувається і що для цього потрібно. Ми будемо розглядати в конкретних прикладах системи, що працюють під управлінням FreeBSD UNIX, хоча ті ж викладки легко переносяться і на будь-яку іншу систему.

Вибір та реєстрація домену

Як настроїти DNS

Самапрограма named у більшості випадків входить до стандартного набору засобів операційних систем UNIX. Якщо у вашому випадку її не виявилося, спробуйте зробити пошук програми named для вашої системи у пошукових серверах інтернету (AltaVista, Lycos тощо). Зазвичай головний файл із налаштуваннями named називається named.boot і лежить у директорії /etc. Запускати демон named обов'язково з привілеями користувача root.

У разі розглядається FreeBSD версії 2.2.2 зі стандартної named. Сама програма лежить у /usr/sbin/named, а заготовки для конфігурації в директорії /etc/namedb.

Перш за все, перед будь-якою зміною конфігурації збережіть попередні налаштування, щоб завжди можна було повернутися до початкового стану.

Скопіюємо named.boot у потрібну директорію:

% cp /etc/namedb/named.boot /etc

Коментарі в named.boot починаються з ";" на першому місці у рядку.

Розглянемо різні директиви в named.boot:

Це та директорія, в якій зберігатимуться конфігураційні файли для кожного домену, який цей name-сервер буде тримати.

Наступна директива в конфігураційному файлі говорить про те, що наш name-сервер є primary name-сервером для якоїсь зони, тобто містить всю інформацію про неї. Синтаксис її такий:

primary [ім'я.домена] [ім'я_файлу]

Для того, щоб стати вторинним nameserver'ом для інших доменів, в named.boot потрібно написати рядок такого плану:

Загальний вид директиви такий:

Щоб правильно налаштувати primary name-сервер, нам залишилося розглянути конфігураційні файли db.* (ці також називаються файлами зони). Загальний вигляд запису у цьому файлі:

[domain] [opt_ttl] [opt_class] [type] [resource_record_data]

де domain є "." для опису доменуверхнього рівня, "@" для поточного домену або звичайне доменне ім'я (зокрема просто ім'я машини (hostname)).

opt_ttl - необов'язкове поле, ціле число, яке означає час життя (time-to-live) цього запису в секундах. Після закінчення терміну вміст запису повинен автоматично оновитися.

type - тип запису (розсмажуються нижче)

resource_record_data – дані цього типу

Розглянемо приклад primary nameserver'а та відповідного йому файлу зони для домену radio-msu.net. У випадку, якщо ви будете використовувати ці приклади як керівництво, не забудьте, будь ласка, змінити всі записи відповідно до структури вашої мережі.

У named.boot ми повинні прописати такий рядок:

І в директорії /etc/namedb створюємо файл з назвою db.radio-msu.net приблизно такого змісту:

Тепер розглянемо типи записів, які у нашій конфігурації:

Найперший запис у будь-якому такому файлі виглядає так:

Символ "@" означає, що подальші директиви належать до поточного домену (тобто до домену radio-msu.net ). Поле "IN" можна вважати несуттєвим, а після нього йде опис типу запису:

Точку наприкінці символьних імен не слід забувати ставити й інших полях зони. Це одна з найпоширеніших помилок. Написати "ns.radio-msu.net" - значить, мати на увазі сервер "ns.radio-msu.net.radio-msu.net", якого просто не існує.

П'ять параметрів запису SOA, що залишилися в круглих дужках після контактної особи, - цілі числа, що визначають часові інтервали обміну інформацією про цей домен між primary і secondary.

Після серіального номера йде поле Refresh , яке вказує час у секундах, після якого secondary name-сервер перевіряє, чи не змінилася дана зона наprimary-сервері, і якщо зміни були, відбувається передача файлу із зоною.

Якщо при цьому у нього не вийшло з будь-яких причин з'єднатися з сервером, то наступну спробу secondary зробить після закінчення Retry секунд (третій параметр).

У тому випадку, якщо і подальші спроби підключитися до primary і дізнатися інформацію про зону закінчуються невдачею, вторинний name-сервер після Expire секунд забуде всю інформацію по цій зоні.

Останнє поле ( 'Minimum TTL' ) вказує на мінімальний час життя (Time To Live) записів у файлі зони, якщо тільки якийсь запис не буде вказано інше значення в необов'язковому полі opt_ttl.

Рекомендовані значення цих величин такі:

Однак вам ніхто не має права перешкодити поставити свої значення. Тільки не ставте занадто маленькі величини (менше години) - інакше ви просто заб'єте мережу марною інформацією, яка безперервно пересилається від primary до secondary.

Тепер розглянь записи наступного типу:

NS - (Name Server) - перераховує name-сервера (і primary, і secondary), які тримають цю зону. Не забувайте про точку наприкінці імені!

Тут ми для зони .radio-msu.net вказали два name-сервери (перший з них - primary, другий - secondary), на яких міститься вся інформація про домен.

Далі йде один з найпоширеніших записів DNS:

Це дозволить звертатися з будь-якого комп'ютера в мережі до себе, використовуючи зарезервоване ім'я localhost. Для того, щоб якось назвати новий комп'ютер в мережі, вам потрібно просто додати такий рядок у файл зони (не забудьте тільки після цього підправити серіальний номер у записі SOA і після всіх змін перезапустити демон named (зробити йому kill -1 )).

У розглянутому прикладі ми бачимо такірядки:

Зауважимо ще один момент. Друге ім'я комп'ютера можна дати так:

Наступний важливий тип записів – записи типу MX.

MX - (Mail eXchange) – пересилання поштових повідомлень. Вони зазвичай слідують за записами типу 'A' або 'SOA'. Використовуються вони зазвичай так:

[domain] IN MX [pref_value] [mail_server]

де domain – необов'язкове поле. Якщо воно є, то запис знімається до цього домену, якщо ні - то до попереднього з типом 'A'. У тому випадку, якщо на місці [domain] стоїть символ '@' або це поле відсутнє, але сам запис знаходиться на самому початку файлу зони (відразу після SOA), то таке поле MX буде відноситися до домену, якому відповідає поточний db- файл.

Наступні типи записів використовуються рідше, проте наведемо їх тут:

RP - (Responsible Person) - відповідальна за цей домен особа:

HINFO - (Host Information) - інформація про комп'ютер (тип процесора, операційна система тощо). Використовується дуже рідко.

Нам залишилося розглянути останній особливий тип запису 'PTR' (domain name pointer), цей запис використовується в db.* файлах так званої "зворотної зони" (reverse-dns).

Налаштування "зворотної зони"

Secondary name-сервера зворотних зон встановлюються аналогічно прямим зонам - в named.boot пишеться рядок

Великі та малі літери тут не відрізняються. А в директорії /etc/namedb створимо файл db.local приблизно такого змісту (імена доменів вам, звичайно, доведеться змінити на свої):

Отже, ви встановили Reverse-DNS для 127.0.0.1. Розглянемо тепер приклад установки зворотної зони того самого домену (' radio-msu.net '). У named.boot primary name-сервера записується рядок:

У директорії / etc / namedb створюємо файл з ім'ям db.193.124.134 для зворотної зони.Тут, як і в попередніх ситуаціях, саме собою ім'я великої ролі не грає, тому можна вибирати його легким для запам'ятовування. Тепер подивимося на те, що може міститися в цьому файлі:

Як бачимо, у зворотній зоні переважно використовуються записи типу PTR. Структура запису така:

[ip_address #4] IN PTR [ім'я домену]

Зрештою, після всіх цих маніпуляцій ваш сервер готовий до роботи. Демон named повинен запускатись при старті машини. Усі зміни в конфігурації повинен робити лише користувач root. Після кожної зміни не забувайте змінювати серійні номери в db.* файлах, погоджувати прямі та зворотні зони, перезапускати (kill-1) named.