зміст
- Крок 1: Інсталяція необхідних пакетів
- Крок 2: Глобальна настройка DNS-сервера
- Крок 3: Створення прямого і зворотного зони
- Крок 4: Запуск DNS-сервера
- Крок 5: Зміна параметрів брандмауера
- Крок 6: Налаштування прав доступу
- Крок 7: Тестування на помилки і завершення налаштування
- Крок 8: Перевірка встановленого DNS-сервера
- Налаштування клієнтської частини DNS-сервера
- Тестування DNS-сервера
- Питання та відповіді
Крок 1: Інсталяція необхідних пакетів
Перед початком розгляду наступних інструкцій хочемо відзначити, що на нашому сайті вже є загальне керівництво по конфігурації стандартного DNS в Linux. Ми рекомендуємо задіяти саме той матеріал, якщо слід виставити настройки для звичайного відвідування інтернет-сайтів. Далі ж ми покажемо, як інсталюється основний локальний DNS-сервер з клієнтською частиною.
Читайте також: Налаштування DNS в Linux
Як засіб створення локального DNS-сервера рекомендуємо задіяти bind9. Налаштування наступних конфігураційних файлів теж буде базуватися на загальних принципах поведінки цього компонента. За замовчуванням bind9 відсутня в операційній системі, тому почнемо з її додавання.
- Запустіть консоль зручним для вас способом. Вона знаходиться в розділі «Додатки» — «Вибране» або ж відкривається через стандартну комбінацію клавіш Ctrl + Alt + T.
- Тут потрібно ввести команду
sudo yum install bind bind-utils -y
і натиснути на Enter для її активації. - Дана дія виконується від імені суперкористувача (sudo), Тому доведеться підтвердити обліковий запис, ввівши пароль в з'явилася рядок.
- Чекайте завершення скачування і установки пакетів.
Після закінчення даного процесу ви будете повідомлені про те, що всі пакети успішно додані в систему. Після цього переходьте до наступного кроку.
Крок 2: Глобальна настройка DNS-сервера
Зараз хочемо продемонструвати, яким саме чином редагується головний конфігураційний файл, а також які рядки туди додаються. Не будемо зупинятися на кожному рядку окремо, оскільки це займе дуже багато часу, до того ж всі потрібні відомості є в офіційній документації.
- Для редагування конфігураційних об'єктів можна використовувати будь-який текстовий редактор. Пропонуємо інсталювати зручний nano, Ввівши в консолі
sudo yum install nano
. - Всі необхідні пакети будуть завантажені, а якщо вони вже присутні в дистрибутиві, ви отримаєте повідомлення «Виконувати нічого».
- Приступимо до редагування самого файлу. Відкрийте його через
sudo nano /etc/named.conf
. При необхідності замініть бажаний текстовий редактор, тоді рядок вийде приблизно такий:sudo vi /etc/named.conf
. - Нижче ми наведемо вміст, який потрібно вставити в відкрився файл або звірити його з вже існуючим, додавши відсутні рядки.
- Після цього натисніть на Ctrl + O, Щоб записати зміни.
- Міняти назву файлу не потрібно, достатньо просто натиснути на Enter.
- Покиньте текстовий редактор через Ctrl + X.
Як вже було сказано раніше, в конфігураційний файл потрібно вставити певні рядки, що задають загальні правила поведінки 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 видає доменне ім'я. Коректна робота кожної зони повинна бути забезпечена спеціальними правилами, створенням яких ми і пропонуємо зайнятися далі.
- Для прямої зони створимо окремий файл через той же текстовий редактор.Тоді рядок буде виглядати так:
sudo nano /var/named/forward.unixmen
. - Ви будете повідомлені про те, що це порожній об'єкт. Вставте туди вказане нижче вміст:
$ 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 - Збережіть зміни і закрийте текстовий редактор.
- Тепер перейдемо до зворотного зоні. Для неї потрібно файл
/var/named/reverse.unixmen
. - Це теж буде новий порожній файл. Вставте туди:
$ 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. - При збереженні не зраджуйте назву об'єкта, а просто натисніть на кнопку Enter.
Тепер зазначені файли будуть використані для прямого і зворотного зони. При необхідності слід редагувати саме їх, щоб змінити якісь параметри. Про це ви теж можете прочитати в офіційній документації.
Крок 4: Запуск DNS-сервера
Після виконання всіх попередніх вказівок можна вже запустити DNS-сервер, щоб в майбутньому легко перевірити його працездатність і продовжити настройку важливих параметрів. Здійснюється поставлена задача в такий спосіб:
- В консолі введіть
sudo systemctl enable named
, Щоб додати DNS-сервер в автозавантаження для автоматичного запуску при старті операційної системи. - Підтвердіть це дія, ввівши пароль користувача root.
- Ви будете повідомлені про створення символічного посилання, а значить, дія виконана успішно.
- Запустіть утиліту через
systemctl start named
. Зупинити її можна так само, тільки замінивши опцію start наstop
. - При відображенні спливаючого вікна з підтвердженням справжності введіть пароль від root.
Як видно, управління зазначеної службою здійснюється за таким же принципом, як і всіма іншими стандартними утилітами, тому з цим не повинно виникнути ніяких проблем навіть у початківців користувачів.
Крок 5: Зміна параметрів брандмауера
Для коректного функціонування DNS-сервера потрібно відкрити порт 53, що здійснюється через стандартний міжмережевий екран FirewallD. В «Терміналі» буде потрібно ввести всього три простих команди:
- Перша має вигляд
firewall-cmd --permanent --add-port = 53 / tcp
і відповідає за відкриття порту TCP-протоколу. Вставте її в консоль і натисніть на Enter. - Ви повинні отримати повідомлення «Success», Що свідчить про успішне застосування правила. Після цього вставте рядок
firewall-cmd --permanent --add-port = 53 / udp
для відкриття порту протоколу UDP. - Всі зміни будуть застосовані тільки після перезавантаження брандмауера, що виробляється через команду
firewall-cmd --reload
.
Більше ніяких змін з брандмауером проводити не доведеться. Тримайте його постійно у включеному стані, щоб не виникло проблем з отриманням доступу.
Крок 6: Налаштування прав доступу
Зараз потрібно виставити основні дозволу і права доступу, щоб трохи убезпечити функціонування DNS-сервера і захистити звичайних користувачів від можливості змінювати параметри. Зробимо це стандартним способом і через SELinux.
- Всі наступні команди повинні бути активованими від імені суперкористувача. Щоб постійно не вводити пароль, радимо включити перманентний рут-доступ для поточної термінальній сесії. Для цього в консолі введіть
su
. - Вкажіть пароль доступу.
- Після цього по черзі впишіть такі команди, щоб створити оптимальну настройку доступу:
chgrp named -R / var / named
chown -v root: named /etc/named.conf
restorecon -rv / var / named
restorecon /etc/named.conf
На цьому загальна конфігурація головного DNS-сервера закінчена. Залишилося тільки відредагувати кілька конфігураційних файлів і зробити тестування на помилки. З усім цим ми і пропонуємо розібратися в наступному кроці.
Крок 7: Тестування на помилки і завершення налаштування
Рекомендуємо почати з перевірок на помилки, щоб в майбутньому не довелося міняти і залишилися конфігураційні файли. Саме тому ми і розглянемо все це в межах одного кроку, а також наведемо зразки правильного висновку команд для тестування.
- Введіть в «Терміналі»
named-checkconf /etc/named.conf
. Це дозволить перевірити глобальні параметри. Якщо в результаті ніякого висновку не було, значить, все налаштовано коректно. В іншому випадку вивчіть повідомлення і, відштовхуючись від нього, вирішите проблему. - Далі потрібно перевірити пряму зону, вставивши рядок
named-checkzone unixmen.local /var/named/forward.unixmen
. - Зразок виведення виглядає наступним чином:
zone unixmen.local / IN: loaded serial 2011071001 OK
. - Приблизно те ж саме здійснюємо і зі зворотним зоною через
named-checkzone unixmen.local /var/named/reverse.unixmen
. - Правильний висновок повинен бути таким:
zone unixmen.local / IN: loaded serial 2011071001 OK
. - Тепер перейдемо до налаштувань основного мережевого інтерфейсу. У нього буде потрібно додати дані поточного DNS-сервера. Для цього відкрийте файл
/ Etc / sysconfig / network-scripts / ifcfg-enp0s3
. - Перевірте, щоб вміст було таке, як показано нижче. При необхідності вставте параметри 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" - Після збереження змін переходите до файлу
/etc/resolv.conf
. - Тут потрібно додати всього один рядок:
nameserver 192.168.1.101
. - По завершенні залишається тільки перезавантажити мережу або комп'ютер, щоб оновити конфігурацію. Служба мережі перезапускается через команду
systemctl restart network
.
Крок 8: Перевірка встановленого DNS-сервера
На завершення конфігурації залишається тільки перевірити роботу наявного DNS-сервера після його додавання в глобальну службу мережі. Ця операція так само виконується за допомогою спеціальних команд. Перша з них має вигляд dig masterdns.unixmen.local
.
В результаті на екрані повинен з'явитися висновок, що має схоже уявлення з вказаними нижче вмістом.
; <> 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.
В результаті має відобразитися три різних уявлення адрес 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-сервера.
Налаштування клієнтської частини DNS-сервера
Ми не будемо розділяти цю процедуру на окремі кроки, оскільки вона виконується шляхом редагування всього одного конфігураційного файлу. У нього необхідно додати інформацію про всіх клієнтів, які будуть підключені до сервера, а приклад такого налаштування виглядає так:
- Відкрийте файл
/etc/resolv.conf
через будь-який зручний текстовий редактор. - Додайте туди рядки
search unixmen.local nameserver 192.168.1.101
іnameserver 192.168.1.102
, Замінивши необхідне на клієнтські адреси. - При збереженні не зраджуйте ім'я файлу, а просто натисніть на кнопку Enter.
- Після виходу з текстового редактора в обов'язковому порядку перезавантажте глобальну мережу через команду
systemctl restart network
.
Це були основні моменти настройки клієнтської складової DNS-сервера, про яку ми хотіли розповісти. Всі інші нюанси пропонуємо вивчити, прочитавши офіційну документацію, якщо це потрібно.
Тестування DNS-сервера
Останній етап нашого сьогоднішнього матеріалу - завершальне тестування DNS-сервера. Нижче ви бачите декілька команд, що дозволяє впоратися з поставленим завданням. Використовуйте одну з них, активувавши через «Термінал». Якщо у висновку не спостерігається ніяких помилок, отже, весь процес виконаний вірно.
dig masterdns.unixmen.local
dig secondarydns.unixmen.local
dig client.unixmen.local
nslookup unixmen.local
Сьогодні ви дізналися все про налаштування головного DNS-сервера в дистрибутиві CentOS. Як бачите, вся операція зосереджена на вводі термінальних команд і редагуванні конфігураційних файлів, що може викликати певні труднощі у початківців користувачів. Однак вам потрібно всього лише точно слідувати зазначених інструкцій і читати результати перевірок, щоб все пройшло без будь-яких помилок.