Содержание:
- Шаг 1: Инсталляция необходимых пакетов
- Шаг 2: Глобальная настройка DNS-сервера
- Шаг 3: Создание прямой и обратной зоны
- Шаг 4: Запуск DNS-сервера
- Шаг 5: Изменение параметров межсетевого экрана
- Шаг 6: Настройка прав доступа
- Шаг 7: Тестирование на ошибки и завершение настройки
- Шаг 8: Проверка установленного DNS-сервера
- Настройка клиентской части DNS-сервера
- Тестирование DNS-сервера
- Вопросы и ответы: 1
Шаг 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-сервер в автозагрузку для автоматического запуска при старте операционной системы. - Подтвердите это действие, введя пароль суперпользователя.
- Вы будете уведомлены о создании символической ссылки, а значит, действие выполнено успешно.
- Запустите утилиту через
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. Как видите, вся операция сосредоточена на вводе терминальных команд и редактировании конфигурационных файлов, что может вызвать определенные трудности у начинающих пользователей. Однако вам требуется всего лишь точно следовать указанным инструкциям и читать результаты проверок, чтобы все прошло без каких-либо ошибок.
Наш Telegram каналТолько полезная информация
Большое спасибо!!! Статья помогла