Зміст
- Крок 1: встановлення необхідних пакетів
- Крок 2: Глобальне налаштування DNS-сервера
- Крок 3: створення прямої та зворотної зони
- Крок 4: Запуск DNS-сервера
- Крок 5: Зміна параметрів брандмауера
- Крок 6: налаштування прав доступу
- Крок 7: тестування на помилки та завершення налаштування
- Крок 8: Перевірка встановленого DNS-сервера
- Налаштування клієнтської частини DNS-сервера
- Тестування DNS-сервера
- Питання та відповіді
Крок 1: встановлення необхідних пакетів
Перед початком розгляду наступних інструкцій хочемо відзначити, що на нашому сайті вже є загальне керівництво по конфігурації стандартного DNS в Linux. Ми рекомендуємо задіяти саме той матеріал, якщо слід виставити налаштування для звичайного відвідування інтернет-сайтів. Далі ж ми покажемо, як інсталюється основний локальний DNS-сервер з клієнтською частиною.
Читайте також: налаштування DNS в Linux
В якості засобу створення локального DNS-сервера рекомендуємо задіяти bind9 . Налаштування наступних конфігураційних файлів теж буде базуватися на загальних принципах поведінки цього компонента. За замовчуванням bind9 відсутня в операційній системі, тому почнемо з її додавання.
- Запустіть консоль зручним для вас способом. Вона знаходиться в розділі & 171; Додатки&187; &8212; & 171; Вибране & 187; або відкривається за допомогою стандартної комбінації клавіш Ctrl + Alt + T .
- Тут потрібно ввести команду
sudo yum install bind bind-utils -y
і натиснути на Enter для її активації. - Дана дія виконується від імені суперкористувача ( sudo ), тому доведеться підтвердити обліковий запис, ввівши пароль в що з'явилася рядок.
- Очікуйте завершення завантаження та встановлення пакетів.
Після закінчення даного процесу ви будете повідомлені про те, що всі пакети успішно додані в систему. Після цього перейдіть до наступного кроку.
Крок 2: Глобальне налаштування DNS-сервера
Зараз хочемо продемонструвати, яким саме чином редагується головний конфігураційний файл, а також які рядки туди додаються. Не будемо зупинятися на кожному рядку окремо, оскільки це займе дуже багато часу, до того ж всі потрібні відомості є в офіційній документації.
- Для редагування конфігураційних об'єктів можна використовувати будь-який текстовий редактор. Пропонуємо інсталювати зручний nano
, ввівши в консолі
sudo yum install nano
. - Усі необхідні пакети будуть завантажені, і якщо вони вже є в дистрибутиві, Ви отримаєте сповіщення &171;нічого не робити&187; .
- Приступимо до редагування самого файлу. Відкрийте його через
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 AUTHORITAT;IVE 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-сервер в автозавантаження для автоматичного запуску при старті операційної системи. - Підтвердьте цю дію, ввівши пароль суперкористувача.
- Ви будете повідомлені про створення символічного посилання, а значить, дія виконана успішно.
- Запустіть утиліту через
systemctl start named
. Зупинити її можна так само, тільки замінивши опцію start наstop
. - При відображенні спливаючого вікна з підтвердженням автентичності введіть пароль від root.
Як видно, управління зазначеною службою здійснюється за таким же принципом, як і всіма іншими стандартними утилітами, тому з цим не повинно виникнути ніяких проблем навіть у початківців користувачів.
Крок 5: Зміна параметрів брандмауера
Для коректного функціонування DNS-сервера потрібно відкрити порт 53, що здійснюється через стандартний міжмережевий екран FirewallD. В &171;терміналі&187; буде потрібно ввести всього три простих команди:
- Перша має вигляд
firewall-cmd --permanent --add-port=53/tcp
і відповідає за відкриття порту протоколу TCP. Вставте її в консоль і натисніть на Enter . - Ви повинні отримати повідомлення &171;Success&187;
, що свідчить про успішне застосування правила. Після цього вставте рядок
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: тестування на помилки та завершення налаштування
Рекомендуємо почати з перевірок на помилки, щоб в майбутньому не довелося міняти і залишилися конфігураційні файли. Саме тому ми і розглянемо все це в межах одного кроку, а також наведемо зразки правильного виведення команд для тестування.
- Введіть в &171;терміналі&187;
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 PSEUDOSECTIO;N:
; 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.10153(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.10153
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-сервера
Останній етап нашого сьогоднішнього матеріалу &8212; завершальне тестування DNS-сервера. Нижче ви бачите кілька команд, що дозволяє впоратися з поставленим завданням. Використовуйте одну з них, активувавши через &171;Термінал&187; . Якщо у виведенні не спостерігається ніяких помилок, отже, весь процес виконаний вірно.
Dig masterdns.unixmen.local
dig secondarydns.unixmen.local
dig client.unixmen.local
nslookup unixmen.local
Сьогодні ви дізналися все про налаштування головного DNS-сервера в дистрибутиві CentOS. Як бачите, вся операція зосереджена на введенні термінальних команд і редагуванні конфігураційних файлів, що може викликати певні труднощі у початківців користувачів. Однак вам потрібно всього лише точно слідувати зазначеним інструкціям і читати результати перевірок, щоб все пройшло без будь-яких помилок.