Як налаштувати первинний DNS сервер на CentOS

  1. мета
  2. Налаштовуємо імена хостів
  3. установка пакетів
  4. Підготовка конфігураційних файлів
  5. Підготовка файлів зон
  6. 1. Пряма зона
  7. 2. Зворотній зона
  8. завершення
  9. тестування DNS
  10. 1. Тестування прямий зони з використанням dig
  11. 2. Перевірка PTR за допомогою dig
  12. 3. Перевірка MX за допомогою dig
  13. Підказки при вирішенні проблем

Домени мають як мінімум два DNS сервера, один називається первинним сервером імен (ns1), а інший - вторинним сервером імен (ns2). Вторинні сервера зазвичай задіюються при проблемах з первинним сервером DNS: якщо один сервер недоступний, то другий стає активним. Можливі й більш складні схеми з використанням балансування навантаження, файерволов і кластерів.

Всі DNS записи певного домену додаються в первинний сервер імен. Вторинний сервер просто синхронізує всю інформацію, отримуючи її від первинного, на підставі параметрів, заданих на первинному сервері.

Ця інструкція опише, як створити первинний DNS сервер, що працює на CentOS. Будь ласка, зверніть увагу, що DNS сервер, представлений в цій інструкції, буде публічним DNS, це означає, що сервер буде відповідати на запити від будь-якого IP адреси. Як обмежити доступ до сервера, описане в цьому документі.

Перед тим, як ми почнемо, хотілося б згадати, що DNS може бути встановлений з або без chroot jail оточенням. Оточення chroot jail обмежує DNS сервер певної Директорією в системі, на відміну від повного системного доступу на сервері. Таким чином, будь-яка вразливість DNS серверу не скомпромітірует всю систему. Обмеження DNS сервера в певній директорії (процес називається chrooting) також корисно в тестових умовах.

мета

Ми налаштуємо DNS сервер в тестових умовах для домену example.tst, який є гіпотетичним (якого взагалі немає) доменом. Таким чином, ми не втрутимося випадковим чином в роботу будь-яких реальних доменів.

У цьому домені є три наступних сервера.

Сервер IP адреса Хостящіеся служби FQDN Сервер A 172.16.1.1 Mail mail.example.tst Сервер B 172.16.1.2 Web, FTP www.example.tst
ftp.example.tst Сервер C 172.16.1.3 Primary DNS server ns1.example.tst

Ми настроєм первинний DNS сервер і додамо необхідний домен і DNS записи як свідчення в таблиці.

Налаштовуємо імена хостів

Всі хости повинні бути коректно визначені з точки зору FQDN . Це може бути зроблено з використанням наступного методу.

Ті, хто любить графічний інтерфейс, можуть скористатися інструментами NetworkManaget. Для цього наберіть команду nmtui. Відкриється такий псевдографічний інтерфейс:

Відкриється такий псевдографічний інтерфейс:

Вибираєте «Змінити ім'я вузла» і вводите ns1.example.tst

Коли готове, натискаєте [Tab] і ОК.

Ще один спосіб, за все в одну команду:

hostnamectl set-hostname ns1.example.tst

Після установки, ім'я хоста може бути перевірено за допомогою такої команди.

# Hostname ns1.example.tst

Або так

hostnamectl status

hostnamectl status

Перед тим, як перейти до наступного кроку, переконайтеся, що ім'я хоста для всіх серверів задано належним чином.

установка пакетів

Ми будемо використовувати bind для DNS, який з легкістю може бути встановлений командою yum.

Установка DNS без chroot:

# Yum install bind

Установка DNS з chroot:

# Yum install bind bind-chroot

Підготовка конфігураційних файлів

Як було згадано раніше, bind може бути налаштований з або без chroot. Шляхи трохи розрізняються, залежно від того, чи був встановлений chroot.

Шлях до конфігураційного файлу Шлях до файлів зони Без chroot / etc / / var / named / С chroot / var / named / chroot / etc / / var / named / chroot / var / named /

Можна використовувати конфігураційний файл named.conf, який поставляється за замовчуванням. Тим не менш, ми будемо використовувати інший приблизний конфігураційний файл для простоти використання.

Робимо резервну копію файлу /etc/named.conf

cp /etc/named.conf /etc/named.conf.bak

Без chroot:

# Cp /usr/share/doc/bind-9.9.4/sample/etc/named.rfc1912.zones /etc/named.conf

З chroot:

# Cp /usr/share/doc/bind-9.9.4/sample/etc/named.rfc1912.zones /var/named/chroot/etc/named.conf

Тепер, коли є резервна копія конфігураційного файлу, а сам орігінальнвй файл змінений, рухаємося далі.

Без chroot:

# Vim /etc/named.conf

З chroot:

# Vim /var/named/chroot/etc/named.conf

Наступні рядки були додані / змінені.

options {## шлях до файлів зон ## directory "/ var / named"; ## пенераправляем запити на публічну DNS сервер Google для нелокальних доменів ## forwarders {8.8.8.8; }; }; ## оголошення прямий зони для example.tst ## zone "example.tst" IN {type master; file "example-fz"; ## файл для прямої зони розміщений в / var / named ## allow-update {none; }; }; ## оголошення зворотної зони для мережі 172.16.1.0 ## zone "1.16.172.in-addr.arpa" IN {type master; file "rz-172-16-1"; ## файл для зворотного зони розміщений в / var / named ## allow-update {none; }; };

Підготовка файлів зон

Дефолтні файли зон автоматично створені в / var / named або / var / named / chroot / var / named (для chroot).

Маючи на увазі, що дефолтні файли зон не представлені, ми можемо скопіювати файли зразків з / usr.

Без chroot:

# Cp /usr/share/doc/bind-9.9.4/sample/var/named/named.* / var / named /

З chroot:

# Cp /usr/share/doc/bind-9.9.4/sample/var/named/named.* / var / named / chroot / var / named

Відмінно. Тепер дефолтні файли зони готові, ми створюємо наші власні файли зони для example.tst і мережі 172.16.1.0. Поки ми створюємо файли зони, потрібно пам'ятати наступне.

  • Символ '@' означає NULL в файлах зони.
  • Кожен запис повного доменного імені (FQDN) закінчується крапкою '.' наприклад. mail.example.tst. Без точки, будуть проблеми.

1. Пряма зона

Пряма зона містить карту перетворень з імен в IP адреси. Для публічних доменів, DNS доменів, розміщених на хостингах, міститися у файлі прямий зони.

Без chroot:

# Vim / var / named / example-fz

З chroot:

# Vim / var / named / chroot / var / named / example-fz $ TTL 1D @ IN SOA ns1.example.tst. mial.example.tst. (0; serial 1D; refresh 1H; retry 1W; expire 3H); minimum IN NS ns1.example.tst. IN A 172.16.1.3 mail IN A 172.16.1.1 IN MX 10 mail.example.tst. www IN A 172.16.1.2 ns1 IN A 172.16.1.3 ftp IN CNAME www.example.tst.

Пояснення: Всередині файлу зони, SOA означає початок авторизації. Це повне доменне ім'я авторитетного сервера імен. Після повного доменного імені, йде контактний email адресу. Оскільки ми не можемо використовувати '@' в [email protected], ми Перезаписуємо email адреса як mial.example.tst.

  • NS: Ім'я сервера
  • A: A запис або запис адреси - це IP адреса
  • MX: Mail Exchanger запис. Тут ми використовуємо тільки один MX з пріоритетом 10. У разі безлічі MX, ми можемо використовувати різні цифрові пріоритети. Нижній номер виграє. Наприклад, MX 0 краще ніж MX 1.
  • CNAME: ім'я в канонічному вигляді. Якщо на сервері розміщено безліч служб, досить імовірно, що безліч імен будуть перетворюватися до одного сервера. CNAME сигналізує, що інші імена сервер може мати і відсилає до імені, яке міститься в A записи.

2. Зворотній зона

Зворотній зона містить карту перетворень з IP адрес в імена. Тут ми створюємо зворотну зону для мережі 172.16.1.0. У реальному домені, DNS сервер власника публічного IP блоку міститься в файлі зворотного зони.

Без chroot:

# Vim / var / named / rz-172-16-1

З chroot

# Vim / var / named / chroot / var / named / rz-172-16-1 $ TTL 1D @ IN SOA ns1.example.tst. sarmed.example.tst. (0; serial 1D; refresh 1H; retry 1W; expire 3H); minimum IN NS ns1.example.tst. 1 IN PTR mail.example.tst. 2 IN PTR www.example.tst. 3 IN PTR ns1.example.tst.

Пояснення: Більшість використовуваних параметрів в зворотній зоні ідентичний прямий зоні, крім одного.

  • PTR: PTR або запис покажчика, вона вказує на повне доменне ім'я

завершення

Тепер, коли файли зон готові, ми настроєм дозвіл файлів зони.

Без chroot:

# Chgrp named / var / named / *

З chroot:

# Chgrp named / var / named / chroot / var / named / *

Зараз ми поставимо IP адреса DNS сервера.

# Vim /etc/resolv.conf nameserver 172.16.1.3

Нарешті, ми можемо запустити службу DNS і переконатися, що вона додана в автозапуск.

# Service named restart # chkconfig named on

Коли DNS запрацює, рекомендується поглядати в файл журналу / var / log / messages, оскільки він містить корисну інформацію про те, що відбувається «за сценою». Якщо там немає помилок, ми можемо почати тестувати DNS сервер.

тестування DNS

Ми можемо використовувати dig або nslookup для тестування DNS. Спочатку, ми встановимо необхідні пакети.

# Yum install bind-utils

1. Тестування прямий зони з використанням dig

Коли ви використовуєте для тестування dig, вам завжди слід шукати статус "NOERROR". Будь-яке інше стан означає, що щось не так.

# Dig example.tst ;; - >> HEADER << - opcode: QUERY, status: NOERROR, id: 31184 ;; QUESTION SECTION:; example.com. IN A ;; ANSWER SECTION: example.com. 86400 IN A 172.16.1.3 ;; AUTHORITY SECTION: example.com. 86400 IN NS ns1.example.com. ;; ADDITIONAL SECTION: ns1.example.com. 86400 IN A 172.16.1.3

2. Перевірка PTR за допомогою dig

Коли ви використовуєте для тестування dig, вам завжди слід шукати статус "NOERROR". Будь-яке інше стан означає, що щось не так.

# Dig -x 172.16.1.1 ;; - >> HEADER << - opcode: QUERY, status: NOERROR, id: 27415 ;; QUESTION SECTION:; 1.1.17.172.in-addr.arpa. IN PTR ;; ANSWER SECTION: 1.1.16.172.in-addr.arpa. 86400 IN PTR mail.example.tst. ;; AUTHORITY SECTION: 1.16.172.in-addr.arpa. 86400 IN NS ns1.example.tst. ;; ADDITIONAL SECTION: ns1.example.tst. 86400 IN A 172.16.1.3

3. Перевірка MX за допомогою dig

# Dig example.tst mx ;; - >> HEADER << - opcode: QUERY, status: NOERROR, id: 35405 ;; QUESTION SECTION:; example.tst. IN MX ;; ANSWER SECTION: example.tst. 14366 IN MX 10 mail.example.tst.

Підказки при вирішенні проблем

  1. У мене відключений SELinux.
  2. Переконайтеся, що ваш фаєрвол не блокує UDP порт 53
  3. / Var / log / messages повинен містити корисну інформацію в разі, якщо щось не так
  4. Переконайтеся, що власників файлів зон є користувач 'named'
  5. Переконайтеся, що IP адреса DNS сервера стоїть на першому місці в /etc/resolv.conf
  6. Якщо ви використовуєте example.tst в лабораторних умовах, переконайтеся, що від'єднали сервер від Інтернету, оскільки example.tst - це неіснуючий домен.

Підсумуємо, цей урок фокусується на хостингу домену example.tst в лабораторних умовах для демонстраційних цілей. Будь ласка, пам'ятайте, що це не інструкція по створенню суспільного DNS сервера, наприклад DNS сервера, який відповідає на запити від будь-яких IP адрес. Якщо ви налаштовуєте робочий DNS сервер, переконайтеся, що перевірили, які політика відносяться до публічних DNS. Інший урок висвітлює створення вторинного DNS, обмеження доступу до DNS сервера, і реалізацію DNSSEC.