Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Установка и настройка второго (slave) DNS-сервера на CentOS/RedHat (BIND/named)

Практика



Итак, у нас есть мастер-сервер (первичный) DNS, в дополнение к которому нам необходимо "прикрутить" второго брата-собрата. Если нужна настройка мастер-сервера для Debian: то про это уже писалось


Сначала пара слов - для чего. Дело в том, что регистраторы требуют наличие минимум двух серверов DNS с различными IP-адресами и/или именами в интернете для регистрации зон DNS. Объяснение простое - один сервер должен быть основный, второй - на случай отказа первого. По этой причине с только одним сервером имен Вы можете работать с внутрисетью, но зарегистрировать зону в интернет не получится - с Вас спросят IP адрес еще одного такого "брата-собрата".


DNS так устроена, что в своей базисе подразумевает работу сразу нескольких серверов параллельно. С одной стороны, это может немного снизить нагрузку на них, распределяя запросы DNS между несколькими машинами, а с другой - помочь в отказоустойчивости.

Общий вид схемы выглядит так: имеется мастер-сервер (главный) и один или несколько второстепенных (slave) серверов. Мастер-сервер (Master) хранит у себя информацию и именно на этом сервере администратор изменяет зоны DNS при необходимости. Дополнительные (Slave) сервера получают обновления данных по зонам от мастер-сервера и имеют полную актуальную картину "мира" тех зон, которые обслуживают.

При этом Slave сервера так-же имеют полную информацию о зонах DNS, которые они обслуживают. Поэтому при отказе мастер-сервера любую обслуживаемую зону можно получить с второстепенного - он так-же ответит на запрос.

Данные администратор меняет на мастер-сервере. После того, как DNS-зона изменена - мастер извещает об этом второстепенные сервера и передает изменения. Передает не сразу - во время следующей синхронизации. Но при этом мы получаем картину, когда одинаковые данные находятся сразу на всех DNS-серверах, поэтому отказ одного из них не ведет к отказу службы DNS предприятия в целом.


Ну что-ж, хватит жевать теорию (тем более, что намного больше можно прочитать в специализированной литературе). У нас задача - показать, как установить и настроить второстепенный сервер DNS на машине под управлением Linux Debian.



Установка

$ sudo aptitude install bind9 dnsutils




Настройка

Свои настройки bind хранит по пути /etc/bind. Переходим в эту директорию - все действо отныне будет разворачиваться там.

$ cd /etc/bind



1) Создаем каталог, в котором будут хранится конфигурации наших DNS зон.

$ sudo mkdir slave


Заметка. Самостоятельно ничего в этот каталог записывать не надо! Служба DNS slave-сервера сама будет создавать здесь файлы зон во время синхронизации с мастер-сервером.


2) Открываем на редактирование файл named.conf.options и приводим его к такому виду (опции прокомментированы, Вам необходимо их значения указывать верными для себя, а не копировать примеры):

options {
directory "/var/cache/bind";

// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113

// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.

auth-nxdomain no; # conform to RFC1035

// Раскомментируйте для включения поддержки IPv6
// listen-on-v6 { any; };

// Серверы пересылки. При запросе у этого slave-сервера информации о
// зоне, которая не входит в состав его списка обслуживания - у каких
// серверов выше спросить про нее (например, если у сервера спрашивают
// про зону google.com - у какого сервера спросить про эту зону - ведь
// сам сервер ее не хостит).
forwarders {
11.22.33.33;
192.168.1.1;
99.88.77.66;
};

// Каким компьютерам или сетям позволять делать запросы к этому серверу
// (any - всем). Для серверов, используемых для хостинга интернет-зон -
// необходимо ставить "any", чтобы любой компьютер из интернета имел
// возможность спросить его.
allow-query { any; };

// Перечисление серверов DNS, с которыми разрешен обмен информацией о
// зонах (синхронизация). ОЧЕНЬ не рекомендуется использоваться any здесь.
allow-transfer {
11.22.33.33;
192.168.1.1;
};

// Принимать рекурсивные запросы от следующих компьютеров или сетей.
allow-recursion {
127.0.0.1;
10.0.0.0/8;
192.168.0.0/16;
};

// Извещать останльные сервера DNS из связки (мастер-вторые) при изменении
// зоны DNS на этом сервере (если он по-совместительству является мастером
// для каких-то зон).
notify yes;

// Извещать следующие сервера об изменениях в зонах DNS.
also-notify {
11.22.33.33;
192.168.1.1;
192.168.0.1;
};

// Принимать запросы только на интерфейсах с перечисленными IP-адресами.
listen-on {
127.0.0.1;
11.22.33.44;
192.168.1.2;
};
};


Здесь:

  • 11.22.33.44 : Белый (внешний) IP адрес этого сервера.
  • 11.22.33.33 : Белый (внешний) IP адрес мастер-сервера.
  • 192.168.1.2 : Серый (внутренний) IP адрес этого сервера.
  • 192.168.1.1 : Серый (внутренний) IP адрес мастер-сервера.
  • 99.88.77.66 : Адрес DNS-сервера провайдера.


Как видно - все адреса - только для примера. В Вашем конкретном случае они будут своими.

Сохраняем файл.


3) Теперь открываем файл named.conf и видим, что в нем указаны 3 ссылки на наши конфигурации:

...
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";


Мы добавим еще одну ссылку - на файл с описаниями наших DNS-зон:

...
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
# Тут будут описания наших slave-зон:
include "/etc/bind/named.conf.zones";


И сохраним данный конфиг-файл.


4) Теперь создадим файл /etc/bind/named.conf.zones и запишем в него тестовую зону. Выглядеть этот файл будет как-то так:

zone "test.int" {
type slave;
file "/etc/bind/slave/test.int";
masters { 11.22.33.33; };
};


Мы видим здесь, что я указал заведомо несуществующую в интернете зону "test.int". Ее тип на данном сервере - ведомая (slave), поэтому мы добавили опцию "masters", внутри которой указали - с какого сервера получать и запрашивать обновления.

Таким образом, на slave-сервере тоже нужно объявлять зоны DNS, которыми он будет владеть и указывать - с какого именно сервера получать информацию по этим зонам. Отличие заключается в том, что сами зоны прописывать не надо (т.е. НЕ нужно создавать файлы с конфигурациями зон) - BIND самостоятельно свяжется с мастер-сервером и получит все необходимые данные.


Заметка. Для того, чтобы тест прошел успешно - зона test.int должна быть объявлена на мастер-сервере. В данном случае - на сервере 11.22.33.44 (кстати, не забудте изменить этот фиктивный IP-адрес на адрес Вашего мастер-сервера!)
При уже запущенном и работающем мастер-сервере можно вместо test.int использовать существующую "боевую" зону.



Проверка

Попросим наш второстепенный сервер перечитать информацию:

$ sudo rndc reload


Если на стороне мастер-сервера все настроено правильно - то slave-сервер скопирует к себе DNS-зону test.int и начнет отвечать на запросы касательно нее.

Проверяем. В каталоге /etc/bind/slave должен появиться файл test.int с содержимым, идентичным зоне на стороне master-сервера. Именно так - нам не нужно было самим забивать зону на стороне ведомого сервера - он сам ее прочитал с мастер-сервера.

Теперь проверим, что slave-сервер отвечает на запросы по зоне test.int:

$ nslookup test.int 127.0.0.1


В случае успеха - ответ должен Вам предоставить информацию о IP адресе зоны.

На этом настройка сервера заканчивается.



Еще немного

Первое. Чтобы slave-сервера копировали измененные зоны с мастер-серверов - параметр "Serial " (т.е. серийный номер) редактируемой зоны администратор должен увеличивать. Причем именно увеличивать - а не просто менять.

Логика тут такая: slave-сервер при синхронизации не получает каждый раз весь набор данных по каждой зоне. Он смотрит только на серийный номер зон - и только в случае, если серийный номер увеличился (не остался таким-же и не уменьшился) - только в таком случае ведомый запрашивает всю информацию с мастер-сервера по данной зоне.


Второе. Чтобы вручную, не дожидаясь ничего и не учитывая серийный номер зоны синхронизировать ее с мастер-сервером - введите на slave-машине следующую команду:

$ sudo rndc retransfer test.int


Где вместо test.int - указывайте имя зоны, которую необходимо передать на slave-сервер в принудительном порядке.


Нередко нам приходится искать знакомые файлы конфигурации в новых для нас операционных системах. На привычном месте этих файлов почему-то не оказывается.

В этой заметке - расположение файла конфигурации PHP (php.conf или php.ini) в ОС FreeBSD, Linux Debian/ubuntu и Linux CentOS/RedHat.


Итак,

FreeBSD:
/usr/local/etc/php.ini

Причем в случае FreeBSD его изначально может не быть, но будут рядом лежать файлы php.ini-... с различными конфигурациями, один из которых можно просто скопировать в php.ini

Debian/ubuntu:
/etc/php7/apache2/php.ini

CentOS/RedHat:
/etc/httpd/conf.d/php.conf
или
/etc/php.ini

Актуально для: PHP 7.x; FreeBSD или Debian/ubuntu или CentOS/RedHat
создано: 2017-05-09
обновлено: 2021-03-13
1638



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии

ubuntouid
28-07-2021
все понятно

Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)

Термины: Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)