Крок 1: Інсталяція необхідних пакетів

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

Читайте також: Налаштування DNS в Linux

Як засіб створення локального DNS-сервера рекомендуємо задіяти bind9. Налаштування наступних конфігураційних файлів теж буде базуватися на загальних принципах поведінки цього компонента. За замовчуванням bind9 відсутня в операційній системі, тому почнемо з її додавання.

  1. Запустіть консоль зручним для вас способом. Вона знаходиться в розділі «Додатки»«Вибране» або ж відкривається через стандартну комбінацію клавіш Ctrl + Alt + T.
  2. Перехід до терміналу для установки основного DNS в CentOS

  3. Тут потрібно ввести команду sudo yum install bind bind-utils -y і натиснути на Enter для її активації.
  4. Команда для установки основного DNS в CentOS

  5. Дана дія виконується від імені суперкористувача (sudo), Тому доведеться підтвердити обліковий запис, ввівши пароль в з'явилася рядок.
  6. Підтвердження установки основного DNS в CentOS через термінал

  7. Чекайте завершення скачування і установки пакетів.
  8. Очікування завершення установки основного DNS в CentOS

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

Крок 2: Глобальна настройка DNS-сервера

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

  1. Для редагування конфігураційних об'єктів можна використовувати будь-який текстовий редактор. Пропонуємо інсталювати зручний nano, Ввівши в консолі sudo yum install nano.
  2. Команда для установки текстового редактора перед редагуванням файлів DNS в CentOS

  3. Всі необхідні пакети будуть завантажені, а якщо вони вже присутні в дистрибутиві, ви отримаєте повідомлення «Виконувати нічого».
  4. Успішна інсталяція текстового редактора перед редагуванням файлів DNS в CentOS

  5. Приступимо до редагування самого файлу. Відкрийте його через sudo nano /etc/named.conf. При необхідності замініть бажаний текстовий редактор, тоді рядок вийде приблизно такий: sudo vi /etc/named.conf.
  6. Запуск основного конфігураційного файлу DNS в CentOS для подальшої настройки

  7. Нижче ми наведемо вміст, який потрібно вставити в відкрився файл або звірити його з вже існуючим, додавши відсутні рядки.
  8. Налаштування основного конфігураційного файлу DNS в CentOS

  9. Після цього натисніть на Ctrl + O, Щоб записати зміни.
  10. Збереження змін після настройки основного конфігураційного файлу DNS в CentOS

  11. Міняти назву файлу не потрібно, достатньо просто натиснути на Enter.
  12. Скасування зміни назви конфігураційного файлу DNS в CentOS

  13. Покиньте текстовий редактор через Ctrl + X.
  14. Вихід з текстового редактора після зміни основного конфігураційного файлу DNS в CentOS

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

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named (8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See / usr / share / doc / bind * / sample / for example named configuration files.
//

options {
listen-on port 53 {127.0.0.1; 192.168.1.101;}; ### Master DNS IP ###
# 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; 192.168.1.0/24;}; ### IP Range ###
allow-transfer {localhost; 192.168.1.102; }; ### Slave DNS IP ###

/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
- If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
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";

pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};

logging {
channel default_debug {
file "data / named.run";
severity dynamic;
};
};

zone "." IN {
type hint;
file "named.ca";
};

zone "unixmen.local" IN {
type master;
file "forward.unixmen";
allow-update {none; };
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "reverse.unixmen";
allow-update {none; };
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

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

Крок 3: Створення прямого і зворотного зони

Для отримання інформації про джерело DNS-сервер використовує прямі і зворотні зони. Пряма дозволяє отримувати IP-адресу на ім'я хоста, а зворотна через IP видає доменне ім'я. Коректна робота кожної зони повинна бути забезпечена спеціальними правилами, створенням яких ми і пропонуємо зайнятися далі.

  1. Для прямої зони створимо окремий файл через той же текстовий редактор.Тоді рядок буде виглядати так: sudo nano /var/named/forward.unixmen.
  2. Перехід до створення файлу прямий зони при налаштуванні DNS в CentOS

  3. Ви будете повідомлені про те, що це порожній об'єкт. Вставте туди вказане нижче вміст:

    $ TTL 86400
    @ IN SOA masterdns.unixmen.local. root.unixmen.local. (
    2011071001; Serial
    3600; Refresh
    1800; Retry
    604800; Expire
    86400; Minimum TTL
    )
    @ IN NS masterdns.unixmen.local.
    @ IN NS secondarydns.unixmen.local.
    @ IN A 192.168.1.101
    @ IN A 192.168.1.102
    @ IN A 192.168.1.103
    masterdns IN A 192.168.1.101
    secondarydns IN A 192.168.1.102
    client IN A 192.168.1.103

  4. Додавання конфігурації для файлу прямий зони DNS в CentOS

  5. Збережіть зміни і закрийте текстовий редактор.
  6. Вихід з текстового редактора після створення файлу прямий зони DNS в CentOS

  7. Тепер перейдемо до зворотного зоні. Для неї потрібно файл /var/named/reverse.unixmen.
  8. Створення файлу зворотного зони для настройки DNS в CentOS

  9. Це теж буде новий порожній файл. Вставте туди:

    $ TTL 86400
    @ IN SOA masterdns.unixmen.local. root.unixmen.local. (
    2011071001; Serial
    3600; Refresh
    1800; Retry
    604800; Expire
    86400; Minimum TTL
    )
    @ IN NS masterdns.unixmen.local.
    @ IN NS secondarydns.unixmen.local.
    @ IN PTR unixmen.local.
    masterdns IN A 192.168.1.101
    secondarydns IN A 192.168.1.102
    client IN A 192.168.1.103
    101 IN PTR masterdns.unixmen.local.
    102 IN PTR secondarydns.unixmen.local.
    103 IN PTR client.unixmen.local.

  10. Додавання вмісту в файл зворотного зони при налаштуванні DNS в CentOS

  11. При збереженні не зраджуйте назву об'єкта, а просто натисніть на кнопку Enter.
  12. Скасування зміни назви файлу при збереженні зворотної зони DNS в CentOS

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

Крок 4: Запуск DNS-сервера

Після виконання всіх попередніх вказівок можна вже запустити DNS-сервер, щоб в майбутньому легко перевірити його працездатність і продовжити настройку важливих параметрів. Здійснюється поставлена ​​задача в такий спосіб:

  1. В консолі введіть sudo systemctl enable named, Щоб додати DNS-сервер в автозавантаження для автоматичного запуску при старті операційної системи.
  2. Додавання служби DNS в CentOS в автозавантаження операційної системи

  3. Підтвердіть це дія, ввівши пароль користувача root.
  4. Підтвердження дії додавання служби DNS в CentOS в автозавантаження

  5. Ви будете повідомлені про створення символічного посилання, а значить, дія виконана успішно.
  6. Успішне створення символічного посилання для автоматичного завантаження служби DNS в CentOS

  7. Запустіть утиліту через systemctl start named. Зупинити її можна так само, тільки замінивши опцію start на stop.
  8. Команда для включення служби DNS в CentOS

  9. При відображенні спливаючого вікна з підтвердженням справжності введіть пароль від root.
  10. Підтвердження передається команда ON служби DNS в CentOS шляхом введення пароля

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

Крок 5: Зміна параметрів брандмауера

Для коректного функціонування DNS-сервера потрібно відкрити порт 53, що здійснюється через стандартний міжмережевий екран FirewallD. В «Терміналі» буде потрібно ввести всього три простих команди:

  1. Перша має вигляд firewall-cmd --permanent --add-port = 53 / tcp і відповідає за відкриття порту TCP-протоколу. Вставте її в консоль і натисніть на Enter.
  2. Відкриття порту DNS в CentOS через стандартний міжмережевий екран

  3. Ви повинні отримати повідомлення «Success», Що свідчить про успішне застосування правила. Після цього вставте рядок firewall-cmd --permanent --add-port = 53 / udp для відкриття порту протоколу UDP.
  4. Відкриття другого порту DNS в CentOS через стандартний міжмережевий екран

  5. Всі зміни будуть застосовані тільки після перезавантаження брандмауера, що виробляється через команду firewall-cmd --reload.
  6. Перезавантаження брандмауера після внесення в нього змін для настройки DNS в CentOS

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

Крок 6: Налаштування прав доступу

Зараз потрібно виставити основні дозволу і права доступу, щоб трохи убезпечити функціонування DNS-сервера і захистити звичайних користувачів від можливості змінювати параметри. Зробимо це стандартним способом і через SELinux.

  1. Всі наступні команди повинні бути активованими від імені суперкористувача. Щоб постійно не вводити пароль, радимо включити перманентний рут-доступ для поточної термінальній сесії. Для цього в консолі введіть su.
  2. Активація прав суперкористувача для подальшої настройки доступу DNS в CentOS

  3. Вкажіть пароль доступу.
  4. Введення пароля для активації перманентного рута при налаштуванні DNS в CentOS

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

    chgrp named -R / var / named
    chown -v root: named /etc/named.conf
    restorecon -rv / var / named
    restorecon /etc/named.conf

  6. Введення команд для налаштування доступу до DNS в CentOS

На цьому загальна конфігурація головного DNS-сервера закінчена. Залишилося тільки відредагувати кілька конфігураційних файлів і зробити тестування на помилки. З усім цим ми і пропонуємо розібратися в наступному кроці.

Крок 7: Тестування на помилки і завершення налаштування

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

  1. Введіть в «Терміналі» named-checkconf /etc/named.conf. Це дозволить перевірити глобальні параметри. Якщо в результаті ніякого висновку не було, значить, все налаштовано коректно. В іншому випадку вивчіть повідомлення і, відштовхуючись від нього, вирішите проблему.
  2. Команда для перевірки основного файлу конфігурації DNS в CentOS

  3. Далі потрібно перевірити пряму зону, вставивши рядок named-checkzone unixmen.local /var/named/forward.unixmen.
  4. Команда для перевірки основного файлу конфігурації DNS в CentOS

  5. Зразок виведення виглядає наступним чином: zone unixmen.local / IN: loaded serial 2011071001 OK.
  6. Висновок результатів тестування прямий зони DNS в CentOS

  7. Приблизно те ж саме здійснюємо і зі зворотним зоною через named-checkzone unixmen.local /var/named/reverse.unixmen.
  8. Команда для перевірки зворотного зони при тестуванні DNS в CentOS

  9. Правильний висновок повинен бути таким: zone unixmen.local / IN: loaded serial 2011071001 OK.
  10. Висновок результатів тестування зворотного зони DNS в CentOS

  11. Тепер перейдемо до налаштувань основного мережевого інтерфейсу. У нього буде потрібно додати дані поточного DNS-сервера. Для цього відкрийте файл / Etc / sysconfig / network-scripts / ifcfg-enp0s3.
  12. Перехід до редагування файлу глобальної мережі при налаштуванні DNS в CentOS

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

    TYPE = "Ethernet"
    BOOTPROTO = "none"
    DEFROUTE = "yes"
    IPV4_FAILURE_FATAL = "no"
    IPV6INIT = "yes"
    IPV6_AUTOCONF = "yes"
    IPV6_DEFROUTE = "yes"
    IPV6_FAILURE_FATAL = "no"
    NAME = "enp0s3"
    UUID = "5d0428b3-6af2-4f6b-9fe3-4250cd839efa"
    ONBOOT = "yes"
    HWADDR = "08: 00: 27: 19: 68: 73"
    IPADDR0 = "192.168.1.101"
    PREFIX0 = "24"
    GATEWAY0 = "192.168.1.1"
    DNS = "192.168.1.101"
    IPV6_PEERDNS = "yes"
    IPV6_PEERROUTES = "yes"

  14. Редагування файлу глобальної мережі при налаштуванні DNS в CentOS

  15. Після збереження змін переходите до файлу /etc/resolv.conf.
  16. Перехід до редагування інтерфейсів при налаштуванні DNS в CentOS

  17. Тут потрібно додати всього один рядок: nameserver 192.168.1.101.
  18. Редагування інтерфейсів глобальної мережі при налаштуванні DNS в CentOS

  19. По завершенні залишається тільки перезавантажити мережу або комп'ютер, щоб оновити конфігурацію. Служба мережі перезапускается через команду systemctl restart network.
  20. Перезапуск глобальної мережі після успішного налаштування DNS в CentOS

Крок 8: Перевірка встановленого DNS-сервера

На завершення конфігурації залишається тільки перевірити роботу наявного DNS-сервера після його додавання в глобальну службу мережі. Ця операція так само виконується за допомогою спеціальних команд. Перша з них має вигляд dig masterdns.unixmen.local.

Команда для перевірки працездатності DNS в CentOS

В результаті на екрані повинен з'явитися висновок, що має схоже уявлення з вказаними нижче вмістом.

Висновок команди перевірки працездатності DNS в CentOS

; <> DiG 9.9.4-RedHat-9.9.4-14.el7 <> masterdns.unixmen.local
;; global options: + cmd
;; Got answer:
;; - >> HEADER << - opcode: QUERY, status: NOERROR, id: 25179
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags :; udp: 4096
;; QUESTION SECTION:
; Masterdns.unixmen.local. IN A

;; ANSWER SECTION:
masterdns.unixmen.local. 86400 IN A 192.168.1.101

;; AUTHORITY SECTION:
unixmen.local. 86400 IN NS secondarydns.unixmen.local.
unixmen.local. 86400 IN NS masterdns.unixmen.local.

;; ADDITIONAL SECTION:
secondarydns.unixmen.local. 86400 IN A 192.168.1.102

;; Query time: 0 msec
;; SERVER: 192.168.1.101 # 53 (192.168.1.101)
;; WHEN: Wed Aug 20 16:20:46 IST 2014
;; MSG SIZE rcvd: 125

Додаткова команда дозволить дізнатися про стан локальної роботи DNS-сервера. Для цього в консоль вставте nslookup unixmen.local і натисніть на Enter.

Команда для перевірки коректності роботи зон DNS в CentOS

В результаті має відобразитися три різних уявлення адрес IP і доменних імен.

Server: 192.168.1.101
Address: 192.168.1.101 # 53

Name: unixmen.local
Address: 192.168.1.103
Name: unixmen.local
Address: 192.168.1.101
Name: unixmen.local
Address: 192.168.1.102

Висновок команди перевірки коректності роботи зон DNS в CentOS

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

Налаштування клієнтської частини DNS-сервера

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

  1. Відкрийте файл /etc/resolv.conf через будь-який зручний текстовий редактор.
  2. Перехід до конфігурації клієнтської частини DNS в CentOS

  3. Додайте туди рядки search unixmen.local nameserver 192.168.1.101 і nameserver 192.168.1.102, Замінивши необхідне на клієнтські адреси.
  4. Конфігурація клієнтської частини DNS в CentOS при його налаштуванні

  5. При збереженні не зраджуйте ім'я файлу, а просто натисніть на кнопку Enter.
  6. Збереження змін після настройки клієнтської частини DNS в CentOS

  7. Після виходу з текстового редактора в обов'язковому порядку перезавантажте глобальну мережу через команду systemctl restart network.
  8. Перезапуск мережі після налаштування клієнтської частини DNS в CentOS

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

Тестування DNS-сервера

Останній етап нашого сьогоднішнього матеріалу - завершальне тестування DNS-сервера. Нижче ви бачите декілька команд, що дозволяє впоратися з поставленим завданням. Використовуйте одну з них, активувавши через «Термінал». Якщо у висновку не спостерігається ніяких помилок, отже, весь процес виконаний вірно.

dig masterdns.unixmen.local
dig secondarydns.unixmen.local
dig client.unixmen.local
nslookup unixmen.local

Глобальна перевірка працездатності DNS в CentOS

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