Настройка DNS в CentOS

Настройка DNS в CentOS

Шаг 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. Подтвердите это действие, введя пароль суперпользователя.
  4. Подтверждение действия добавления службы DNS в CentOS в автозагрузку

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

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

  9. При отображении всплывающего окна с подтверждением подлинности введите пароль от root.
  10. Подтверждение команды включения службы 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. Как видите, вся операция сосредоточена на вводе терминальных команд и редактировании конфигурационных файлов, что может вызвать определенные трудности у начинающих пользователей. Однако вам требуется всего лишь точно следовать указанным инструкциям и читать результаты проверок, чтобы все прошло без каких-либо ошибок.

Мы рады, что смогли помочь Вам в решении проблемы.
Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.

Помогла ли вам эта статья?

ДА НЕТ


Еще статьи по данной теме:


Поделиться статьей в социальных сетях:

Задайте вопрос или оставьте свое мнение

Примечание: если отправленный комментарий не появился на странице, значит он ушел на проверку и скоро будет опубликован. Пожалуйста, не дублируйте вопрос. Мы ответим Вам в ближайшее время.