Поиск по сайту:

Как установить DNS-сервер BIND на CentOS 6


Статус: устарело

В этой статье рассматривается версия CentOS, которая больше не поддерживается. Если вы в настоящее время используете сервер под управлением CentOS 6, мы настоятельно рекомендуем обновить или перейти на поддерживаемую версию CentOS.

Причина:

См. вместо этого:

Преамбула

Эта статья покажет вам, как установить и настроить DNS-сервер BIND. Если вы ищете руководство по использованию интегрированной службы DNS DigitalOceans, вы можете вместо этого просмотреть статью «Как настроить имя хоста с помощью DigitalOcean».

Прежде чем мы начнем, рекомендуется иметь как минимум два облачных сервера для запуска ваших серверов имен. Предлагаются два сервера имен, чтобы обеспечить резервирование основного и дополнительного серверов в случае сбоя. Вы также можете рассмотреть возможность использования двух разных POP. Например, мы использовали Сан-Франциско 1 и Нью-Йорк 1. Для целей этого руководства предполагается, что вы настраиваете как первичный, так и вторичный сервер имен.

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

Как и в случае с любым новым сервером, всегда важно убедиться, что ваша система обновлена. Вы можете убедиться в этом, проверив наличие обновлений с помощью yum следующим образом:

yum update -y

(Примечание: в DigitalOcean мы называем наши облачные серверы «дроплетами». В этом руководстве мы будем использовать оба термина)

Первоначальная установка BIND

Для начала нам потребуется установить пакеты BIND и BIND Utilities с помощью yum.

yum install bind bind-utils -y

Затем откройте файл конфигурации BIND (named) и внесите несколько изменений.

nano -w /etc/named.conf

Ваш раздел «Параметры» должен выглядеть следующим образом, заменив 2.2.2.2 на IP-адрес вашего второго дроплета.

options {
	    #listen-on port 53 { 127.0.0.1; };
        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 { any; };
        allow-transfer     { localhost; 2.2.2.2; };
        recursion no;

        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";
};

Выше необходимо прокомментировать listen-on для прослушивания на всех доступных интерфейсах. Рекурсия должна быть отключена, чтобы предотвратить злоупотребление вашим сервером в DDoS-атаках «отражение». Директива allow-transfer заносит в белый список передачу на ваш вторичный IP-адрес дроплетов. Кроме того, мы изменили директиву allow-query на \любой\, чтобы разрешить пользователям правильный доступ к размещенным зонам.

Далее, если вы хотите добавить новую зону для нашего первого домена, вы должны добавить следующее в ваш named.conf под существующими зонами.

        zone "mydomain.com" IN {
                type master;
                file "mydomain.com.zone";
                allow-update { none; };
        };

После сохранения named.conf с указанными выше изменениями мы были готовы создать наш первый файл зоны.

Настройка зон BIND

Во-первых, необходимо открыть файл зоны, используя имя, указанное вами в конфигурации выше. (Пример: mydomain.com.zone)

nano -w /var/named/mydomain.com.zone

Что ж, добавьте следующее содержимое в наш только что созданный файл. Вы должны заменить применимую информацию своей собственной, где 1.1.1.1 — это IP-адрес вашего первого дроплета, 2.2.2.2 — это IP-адрес вашего второго дроплета, а 3.3.3.3 — это IP-адрес, на который вы хотите указать сам домен, например капля, на которой работает веб-сервер. Вы можете добавлять дополнительные записи в том же формате.

$TTL 86400
@   IN  SOA     ns1.mydomain.com. root.mydomain.com. (
        2013042201  ;Serial
        3600        ;Refresh
        1800        ;Retry
        604800      ;Expire
        86400       ;Minimum TTL
)
; Specify our two nameservers
		IN	NS		ns1.mydomain.com.
		IN	NS		ns2.mydomain.com.
; Resolve nameserver hostnames to IP, replace with your two droplet IP addresses.
ns1		IN	A		1.1.1.1
ns2		IN	A		2.2.2.2

; Define hostname -> IP pairs which you wish to resolve
@		IN	A		3.3.3.3
www		IN	A		3.3.3.3

Теперь мы можем начать с имени в первый раз. Это может занять несколько минут, пока named создает файл rndc.key, что происходит только при первом выполнении.

service named restart

После успешного запуска named необходимо убедиться, что он включен в качестве службы запуска, выполнив следующее:

chkconfig named on

К настоящему времени у нас должен быть полностью рабочий первичный сервер имен. Вы можете убедиться, что BIND работает правильно, выполнив следующую команду, заменив 1.1.1.1 IP-адресом вашей первой капли.

dig @1.1.1.1 mydomain.com

Если вы получили ответ, который включает в себя ответ и раздел полномочий, ваш сервер имен настроен правильно.

Конфигурация подчиненного сервера имен

Настроив наш основной сервер имен, теперь настройте подчиненный сервер имен на нашем втором облачном сервере.

Как всегда, убедитесь, что ваша система обновлена, проверив наличие обновлений с помощью yum следующим образом:

yum update -y

Мы можем начать с установки BIND (и сопутствующих утилит) на второй дроплет так же, как и на первый:

yum install bind bind-utils -y

Что ж, продолжайте, открыв named.conf и внеся те же изменения, которые мы сделали ранее, опустив строку \разрешить передачу\. В этой директиве нет необходимости, так как мы будем передавать записи только с нашего основного сервера имен.

nano -w /etc/named.conf
options {
		#listen-on port 53 { 127.0.0.1; };
        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 { any; };
        recursion no;

        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";
};

Мы добавим зону, которую мы настроили в первой капле, на этот раз изменив директиву type на slave вместо master. Вы должны заменить «1.1.1.1» на IP-адрес вашей первой капли.

zone "mydomain.com" IN {
	type slave;
	masters { 1.1.1.1; };
	file "mydomain.com.zone";
};

После настройки нашей подчиненной зоны начнем с named. Опять же, это может занять несколько минут, пока наш файл rndc.key изначально сгенерирован.

service named start

Как и в случае с первым облачным сервером, мы хотим убедиться, что named настроен на запуск при запуске со следующим:

chkconfig named on

Теперь ваш подчиненный сервер имен должен быть запущен и работать. Вы можете убедиться, что он полностью работоспособен, снова используя dig, заменив 2.2.2.2 IP-адресом вашего второго дроплета.

dig @2.2.2.2 mydomain.com

После любых изменений, внесенных вами в файлы мастер-зоны, вам нужно будет указать BIND перезагрузить. Помните, вы также должны увеличить директиву serial, чтобы обеспечить синхронность между ведущим и ведомым.

Чтобы перезагрузить файлы зоны, нам нужно запустить следующую команду на главном сервере имен, а затем на подчиненном:

rndc reload

BIND в среде chroot

Обычно рекомендуется установить дополнительный пакет \bind-chroot\, который сбросит привилегии BIND в среду chroot.

К счастью, пакет CentOS делает это чрезвычайно простым. Единственный аспект, на который стоит обратить внимание, это то, что активные пути для BIND изменятся на их chroot-эквиваленты, например, /var/named станет /var/named/chroot/var/named. CentOS 6 вам не нужно будет перемещать какие-либо файлы, поскольку пакет автоматически создает жесткие символические ссылки на каталоги без chroot.

Если вы хотите включить эту функцию для дополнительной безопасности, которую она обеспечивает, вы можете сделать следующее:

yum install bind-chroot -y
service named restart