Глава 1. Установка и настройка DNS-сервера BIND

Глава 1. Установка и настройка DNS-сервера BIND Хостинг

Перевод статьи подготовлен для студентов курса «Безопасность Linux»
. Интересно развиваться в данном направлении? Смотрите запись трансляции мастер-класса Ивана Пискунова «Безопасность в Linux в сравнении с Windows и MacOS»

Глава 1. Установка и настройка DNS-сервера BIND

В этой статье я расскажу о шагах по настройке DNS-сервера на RHEL 7 или CentOS 7. Для демонстрации я использовал Red Hat Enterprise Linux 7.4. Наша цель — создать одну A-запись и одну PTR-запись для зоны прямого и обратного просмотра соответственно.

Сначала установите необходимые rpm-пакеты для DNS-сервера.

ПРИМЕЧАНИЕ: Для RHEL у вас должна быть активная подписка на RHN
, или вы можете настроить локальный автономный репозиторий
, с помощью которого менеджер пакетов «yum» сможет установить необходимые rpm-пакеты и зависимости.

 # yum install bind bind-chroot caching-nameserver 

 # hostname
golinuxhub-client.example
Мой IP-адрес 192.168.1.7
# ip address | egrep 'inet.*enp0s3' inet 192.168.1.7/24 brd 192.168.1.255 scope global dynamic enp0s3 

Поскольку мы будем использовать chroot, нужно отключить службу.

 # systemctl stop named
# systemctl disable named 

Затем скопируйте необходимые файлы в каталог chroot.

ПРИМЕЧАНИЕ. Используйте аргумент -p
в команде cp
для сохранения прав и владельцев.

 [root@golinuxhub-client ~]# cp -rpvf /usr/share/doc/bind-9.9.4/sample/etc/* /var/named/chroot/etc/
‘/usr/share/doc/bind-9.9.4/sample/etc/named.conf’ -> ‘/var/named/chroot/etc/named.conf’
‘/usr/share/doc/bind-9.9.4/sample/etc/named.rfc1912.zones’ -> ‘/var/named/chroot/etc/named.rfc1912.zones’ 

Затем скопируйте файлы, связанные с зоной, в новое место.

 [root@golinuxhub-client ~]# cp -rpvf /usr/share/doc/bind-9.9.4/sample/var/named/* /var/named/chroot/var/named/
‘/usr/share/doc/bind-9.9.4/sample/var/named/data’ -> ‘/var/named/chroot/var/named/data’
‘/usr/share/doc/bind-9.9.4/sample/var/named/my.external.zone.db’ -> ‘/var/named/chroot/var/named/my.external.zone.db’
‘/usr/share/doc/bind-9.9.4/sample/var/named/my.internal.zone.db’ -> ‘/var/named/chroot/var/named/my.internal.zone.db’
‘/usr/share/doc/bind-9.9.4/sample/var/named/named.ca’ -> ‘/var/named/chroot/var/named/named.ca’
‘/usr/share/doc/bind-9.9.4/sample/var/named/named.empty’ -> ‘/var/named/chroot/var/named/named.empty’
‘/usr/share/doc/bind-9.9.4/sample/var/named/named.localhost’ -> ‘/var/named/chroot/var/named/named.localhost’
‘/usr/share/doc/bind-9.9.4/sample/var/named/named.loopback’ -> ‘/var/named/chroot/var/named/named.loopback’
‘/usr/share/doc/bind-9.9.4/sample/var/named/slaves’ -> ‘/var/named/chroot/var/named/slaves’
‘/usr/share/doc/bind-9.9.4/sample/var/named/slaves/my.ddns.internal.zone.db’ -> ‘/var/named/chroot/var/named/slaves/my.ddns.internal.zone.db’
‘/usr/share/doc/bind-9.9.4/sample/var/named/slaves/my.slave.internal.zone.db’ -> ‘/var/named/chroot/var/named/slaves/my.slave.internal.zone.db’
```bash
Теперь давайте посмотрим на основной файл конфигурации.
```bash
# cd /var/named/chroot/etc/ 

Очистите содержимое named.conf и вставьте следующее.

 [root@golinuxhub-client etc]# vim named.conf
options { listen-on port 53 { 127.0.0.1; any; };
# 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; any; }; allow-query-cache { localhost; any; };
};
logging { channel default_debug { file "data/named.run"; severity dynamic; };
};
view my_resolver { match-clients { localhost; any; }; recursion yes; include "/etc/named.rfc1912.zones";
}; 

Информация, относящаяся к зоне, должна быть добавлена в /var/named/chroot/etc/named.rfc1912.zones
. Добавьте записи, приведенные ниже. Файл example.zone — это файл зоны прямого просмотра, а example.rzone
— файл обратной зоны.

 zone "example" IN { type master; file "example.zone"; allow-update { none; };
};
zone "1.168.192.in-addr.arpa" IN { type master; file "example.rzone"; allow-update { none; };
}; 

Файлы, связанные с зонами, находятся здесь:

 # cd /var/named/chroot/var/named/ 

Далее создадим файлы для прямой и обратной зоны. Имена файлов будут такими же, как выше в файле named.rfc1912.zones
. У нас уже есть несколько шаблонов по умолчанию, которые мы можем использовать.

 # cp -p named.localhost example.zone
# cp -p named.loopback example.rzone 

Как видите, текущие разрешения на все файлы и каталоги принадлежат root
.

 [root@golinuxhub-client named]# ll
total 32
drwxr-xr-x. 2 root root 6 May 22 2017 data
-rw-r--r--. 1 root root 168 May 22 2017 example.rzone
-rw-r--r--. 1 root root 152 May 22 2017 example.zone
-rw-r--r--. 1 root root 56 May 22 2017 my.external.zone.db
-rw-r--r--. 1 root root 56 May 22 2017 my.internal.zone.db
-rw-r--r--. 1 root root 2281 May 22 2017 named.ca
-rw-r--r--. 1 root root 152 May 22 2017 named.empty
-rw-r--r--. 1 root root 152 May 22 2017 named.localhost
-rw-r--r--. 1 root root 168 May 22 2017 named.loopback
drwxr-xr-x. 2 root root 71 Feb 12 21:02 slaves 

Измените права всех файлов, указав в качестве владельца пользователя root
и группу named
.

 # chown root:named * 

Но для data владелец должен быть named:named
.

 # chown -R named:named data
# ls -l
total 32
drwxr-xr-x. 2 named named 6 May 22 2017 data
-rw-r--r--. 1 root named 168 May 22 2017 example.rzone
-rw-r--r--. 1 root named 152 May 22 2017 example.zone
-rw-r--r--. 1 root named 56 May 22 2017 my.external.zone.db
-rw-r--r--. 1 root named 56 May 22 2017 my.internal.zone.db
-rw-r--r--. 1 root named 2281 May 22 2017 named.ca
-rw-r--r--. 1 root named 152 May 22 2017 named.empty
-rw-r--r--. 1 root named 152 May 22 2017 named.localhost
-rw-r--r--. 1 root named 168 May 22 2017 named.loopback
drwxr-xr-x. 2 root named 71 Feb 12 21:02 slaves 

Добавьте приведенное ниже содержимое в файл прямой зоны. Здесь мы создаем A-запись для localhost (golinuxhub-client) и еще одну для сервера (golinuxhub-server).

 # vim example.zone
$TTL 1D
@ IN SOA example. root ( 1 ; serial 3H ; refresh 15M ; retry 1W ; expire 1D ) ; minimum IN NS example. IN A 192.168.1.7
golinuxhub-server IN A 192.168.1.5
golinuxhub-client IN A 192.169.1.7 

Далее добавьте содержимое в файл обратной зоны. Здесь мы создаем PTR-запись для golinuxhub-client и для сервера golinuxhub-server.

 # vim example.rzone
$TTL 1D
@ IN SOA example. root.example. ( 1997022700 ; serial 28800 ; refresh 14400 ; retry 3600000 ; expire 86400 ) ; minimum IN NS example.
5 IN PTR golinuxhub-server.example.
7 IN PTR golinuxhub-client.example. 

Прежде чем мы запустим сервис named-chroot
, проверим конфигурацию файла зоны.

 [root@golinuxhub-client named]# named-checkzone golinuxhub-client.example example.zone
zone golinuxhub-client.example/IN: loaded serial 1
OK
[root@golinuxhub-client named]# named-checkzone golinuxhub-client.example example.rzone
zone golinuxhub-client.example/IN: loaded serial 1997022700
OK 

Все выглядит хорошо. Теперь проверьте файл конфигурации, используя следующую команду.

 [root@golinuxhub-client named]# named-checkconf -t /var/named/chroot/ /etc/named.conf 

Итак, все выполнено успешно.

 [root@golinuxhub-client named]# echo $?
0 

ВАЖНОЕ ПРИМЕЧАНИЕ: у меня SELinux находится в режиме permissive

 # getenforce
Permissive 

Все выглядит хорошо, так что пора запускать наш сервис named-chroot
.

 [root@golinuxhub-client named]# systemctl restart named-chroot 

 [root@golinuxhub-client named]# systemctl status named-chroot
● named-chroot.service - Berkeley Internet Name Domain (DNS) Loaded: loaded (/usr/lib/systemd/system/named-chroot.service; disabled; vendor preset: disabled) Active: active (running) since Mon 2018-02-12 21:53:23 IST; 19s ago Process: 5236 ExecStop=/bin/sh -c /usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID (code=exited, status=0/SUCCESS) Process: 5327 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} -t /var/named/chroot $OPTIONS (code=exited, status=0/SUCCESS) Process: 5325 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -t /var/named/chroot -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS) Main PID: 5330 (named) CGroup: /system.slice/named-chroot.service └─5330 /usr/sbin/named -u named -c /etc/named.conf -t /var/named/chroot
Feb 12 21:53:23 golinuxhub-client.example named[5330]: managed-keys-zone/my_resolver: loaded serial 0
Feb 12 21:53:23 golinuxhub-client.example named[5330]: zone 0.in-addr.arpa/IN/my_resolver: loaded serial 0
Feb 12 21:53:23 golinuxhub-client.example named[5330]: zone 1.0.0.127.in-addr.arpa/IN/my_resolver: loaded serial 0
Feb 12 21:53:23 golinuxhub-client.example named[5330]: zone 1.168.192.in-addr.arpa/IN/my_resolver: loaded serial 1997022700
Feb 12 21:53:23 golinuxhub-client.example named[5330]: zone example/IN/my_resolver: loaded serial 1
Feb 12 21:53:23 golinuxhub-client.example named[5330]: zone localhost/IN/my_resolver: loaded serial 0
Feb 12 21:53:23 golinuxhub-client.example named[5330]: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN/my_resolver: loaded serial 0
Feb 12 21:53:23 golinuxhub-client.example named[5330]: zone localhost.localdomain/IN/my_resolver: loaded serial 0
Feb 12 21:53:23 golinuxhub-client.example named[5330]: all zones loaded
Feb 12 21:53:23 golinuxhub-client.example named[5330]: running
```bash
Убедитесь, что resolv.conf содержит ваш IP-адрес, чтобы он мог работать в качестве DNS-сервера.
```bash
# cat /etc/resolv.conf
search example
nameserver 192.168.1.7
```bash
Давайте проверим наш DNS-сервер для обратной зоны, используя dig.
```bash
[root@golinuxhub-client named]# dig -x 192.168.1.5
; <<>> DiG 9.9.4-RedHat-9.9.4-50.el7 <<>> -x 192.168.1.5
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40331
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;5.1.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION:
5.1.168.192.in-addr.arpa. 86400 IN PTR golinuxhub-server.example.
;; AUTHORITY SECTION:
1.168.192.in-addr.arpa. 86400 IN NS example.
;; ADDITIONAL SECTION:
example. 86400 IN A 192.168.1.7
;; Query time: 1 msec
;; SERVER: 192.168.1.7#53(192.168.1.7)
;; WHEN: Mon Feb 12 22:13:17 IST 2018
;; MSG SIZE rcvd: 122 

Как вы видите, мы получили положительный ответ (ANSWER) на наш запрос (QUERY).

Читайте также:  От почты к Telegram: раскрытие утраченного искусства написания писем

 [root@golinuxhub-client named]# dig -x 192.168.1.7
; <<>> DiG 9.9.4-RedHat-9.9.4-50.el7 <<>> -x 192.168.1.7
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55804
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;7.1.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION:
7.1.168.192.in-addr.arpa. 86400 IN PTR golinuxhub-client.example.
;; AUTHORITY SECTION:
1.168.192.in-addr.arpa. 86400 IN NS example.
;; ADDITIONAL SECTION:
example. 86400 IN A 192.168.1.7
;; Query time: 1 msec
;; SERVER: 192.168.1.7#53(192.168.1.7)
;; WHEN: Mon Feb 12 22:12:54 IST 2018
;; MSG SIZE rcvd: 122 

Точно так же мы можем проверить прямую зону.

 [root@golinuxhub-client named]# nslookup golinuxhub-client.example
Server: 192.168.1.7
Address: 192.168.1.7#53
Name: golinuxhub-client.example
Address: 192.169.1.7
[root@golinuxhub-client named]# nslookup golinuxhub-server.example
Server: 192.168.1.7
Address: 192.168.1.7#53
Name: golinuxhub-server.example
Address: 192.168.1.5 

Эта статья немного устарела, так как в RHEL 7 теперь не нужно копировать файлы конфигурации bind в chroot. Step-by-Step Tutorial: Configure DNS Server using bind chroot (CentOS/RHEL 7)
.

Время на прочтение

image

Довольно часто возникает вопрос о внедрении своего ДНС сервера, который мог бы не только обслуживать запросы внешних пользователей к приобретенным ДНС именам, но и обслуживать запросы пользователей в локальной сети. Такая задача относительно просто решается средствами ОС FreeBSD.

Настроить DNS сервер Bind под управлением FreeBSD для обслуживания запросов клиентов внутренней сети и обслуживания прямой и обратной зон DNS с функцией их пересылки на вторичный DNS сервер. Тип всех зон на сервере — Master, то есть данный сервер предоставляет авторитетные ответы за все зоны.

1. Внутренний IP адрес DNS сервера — 192.168.0.1/24

2. Внешний IP адрес DNS сервера — 10.10.10.1/24

3. I P адрес вторичного сервера — 10.10.10.2/24

4. Прямая DNS зона — test.dom

5. Обратная DNS зона — 10.10.10.in-addr.arpa

1. В файле /etc/rc.conf
прописываем запуск DNS сервера при старте системы

2. Приводим конфигурационный файл /etc/namedb/named.conf
к следующему виду:

acl

— список доступа с именем ACCESS и описанием в нем сетей, которым разрешено использовать наш DNS сервер.

directory

– Рабочая директория Bind

pid-file

— Место размещения PID файла

dump-file

– Место размещения DUMP файла

statistics-file

– Место размещения файла статистики

listen-on

– Указываем IP адреса интерфейсов, на которых Bind будет «слушать» запросы

allow-recursion

– Указываем списки доступа, кому разрешены рекурсивные запросы к серверу

allow-transfer

– Указываем IP адрес вторичного DNS сервера, которому будем пересылать наши зоны

transfer-source

– Указываем IP интерфейса, через который будет разрешено проведение трансфера зон

version

– Указываем свою версию DNS сервера

logging

– Указываем ограничение журналирования

zone «.»

— Зона, описывающая корневые DNS сервера, необходима для работы. Хранится в файле /etc/namedb/named.root

zone «localhost»

— Прямая зона, описывающая локальный сервер, необходима для работы. Хранится в файле /etc/namedb/master/localhost

zone «0.0.127.in-addr.arpa»

— Обратная зона, описывающая локальный сервер, необходима для работы. Хранится в файле /etc/namedb/master/0.0.127.in-addr.arpa

zone «test.dom»

— Наша прямая зона. Хранится в файле /etc/namedb/master/test.dom Так как на нашем сервере хранится мастер копия зоны, при помощи allow-query, разрешаем всем ее опрос.

Читайте также:  Самые популярные видеохостинги — ROMI center

zone «10.10.10.in-addr.arpa»

— наша обратная зона. Хранится в файле /etc/namedb/master/10.10.10.in-addr.arpa. Так как на нашем сервере хранится мастер копия зоны, при помощи allow-query, разрешаем всем ее опрос.

3. Настраиваем файлы зон

3.1. Зона «.»
— оставляем по умолчанию

3.2. Зона «localhost»
. Конфигурационный файл /etc/namedb/master/localhost
приводим к следующему виду:

IN NS localhost.

IN A 127.0.0.1

3.3. Зона «0.0.127.in-addr.arpa»
. Конфигурационный файл /etc/namedb/master/0.0.127.in-addr.arpa
приводим к следующему виду:

IN NS localhost.

1 IN PTR localhost.

3.4. Зона «test.dom»
. Конфигурационный файл /etc/namedb/master/test.dom
приводим к следующему виду:

IN NS ns1.test.dom.
IN NS ns2.test.dom.

ns1 IN A 10.10.10.1

ns2 IN A 10.10.10.2

3.5. Зона «10.10.10.in-addr.arpa»
. Конфигурационный файл /etc/namedb/master/10.10.10.in-addr.arpa
приводим к следующему виду:

IN NS ns1.test.dom.

IN NS ns2.test.dom.

1 IN PTR ns1.test.dom.

2 IN PTR ns2.test.dom.

Где, например, для зоны test.dom сверху вниз:

4. Управляем DNS сервером при помощи следующих команд:

Наиболее часто используемые типы записей в DNS:

A

– запись на IP адрес узла в сети

NS

— запись на DNS сервер

CNAME

– запись на каноническое имя для узла

PTR

– запись указатель на доменное имя, используется в обратных зонах

MX

— запись для определения маршрутизации почты

Для проверки работоспособности можно использовать такие средства как dig
или nslookup

Пример использования dig:

Команда означает — вывести записи типа ANY в зоне test.dom, используя сервер localhost

;; QUESTION SECTION:

;test.dom. В ЛЮБОМ

;; РАЗДЕЛ ОТВЕТОВ:

тест.дом. 3600 В А 10.10.10.1

тест.дом. 3600 В SOA ns1.test.dom. хостмастер.тест.дом. 2009082801 3600 600 2419200 86400

тест.дом. 3600 IN NS ns1.test.dom.

тест.дом. 3600 IN NS ns2.test.dom.

;; ДОПОЛНИТЕЛЬНЫЙ РАЗДЕЛ:

ns1.test.дом. 3600 В А 10.10.10.1

ns2.test.дом. 54886 В 10.10.10.2

;; Время запроса: 1 мс

;; СЕРВЕР: 127.0.0.1#53(127.0.0.1)

;; КОГДА: воскресенье, 30 августа, 23:04:41 2009

;; РАЗМЕР MSG rcvd: 330

Пример использования nslookup:

freebsd# nslookup

> test.dom

Сервер: 127.0.0.1

Адрес: 127.0.0.1#53

Имя: test.dom

Адрес: 10.10.10.1

>

На мой взгляд, использование dig для диагностики более гибко, хотя и не знает полностью, как использовать nslookup. Также рекомендуется замечательное пособие по настройке DNS
.

Время на прочтение

За все время работы не требовалось устанавливать DNS на сервер, а тут возникла зависимость Slave DNS на новом клиенте. Думаю, что порядок действий будет полезен, как администраторам, так и веб-разработчикам.

Установка Master DNS

Заходим на сервер (для примера Master DNS будет ставиться на сервер с IP 10.10.10.10, Slave DNS — IP 20.20.20.20)

В начале убеждаемся, что система имеет все последние обновления.

 yum update -y 

Если не указать ключ «-y», то можно разрешить все вопросы установщика, а с ним все ответы предполагаются автоматически по умолчанию.

Установите bind и bind-utils.

 yum install bind bind-utils -y 

На основании моего домена «sibway.pro», для своего поменяйте все вхождения в примерах. Будем считать, что у master есть IP 10.10.10.10, у slave 20.20.20.20. Мастер и ведомый почему-то понимаю, что ведомый берет все данные с мастера.

Теперь отредактируем конфигурационный файл распространенным текстовым редактором, который я использую так, как он всегда есть в любой системе.

 vi /etc/named.conf 

При установке bind файл создается автоматически и нам нужно только его отредактировать.

 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; 20.20.20.20; }; 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 port 53 { 127.0.0.1; }; 

Комментируем строку, чтобы сервер мог слушать эфир со всех адресов и портов (наверное можно просто указать IP 10.10.10.10, но руки не дошли поэкспериментировать. Извне все равно все закрывает брандмауэр).

 allow-query { any; }; 

Позволяем запросить сервер с любым адресом.

 allow-transfer { localhost; 20.20.20.20; }; 

Позволяем собрать информацию о доменах подчиненных серверов.

Добавляем доменную зону в тот же конфигурационный файл, который прописываем.

  zone "sibway.pro" IN { type master; file "sibway.pro.zone"; allow-update { none; }; }; 

Конфигурирование доменных зон

В файле заданы нами файл sibway.pro.zone как файл конфигурации дома sibway.pro.

Проще всего взять какой-либо Существующий и отредактировать до нужной сборки. Файлы можно ссылаться в поддиректории.

 vi /var/named/sibway.pro.zone 

Вот простой пример того, что необходимо прописать в доменной зоне.

 $TTL 86400
@ IN SOA ns1.sibway.pro. root.sibway.pro. ( 2014120801 ;Serial ВАЖНО !!! серийный номер должен меняться в большую строну при каждом изменении, иначе slave сервера не обновят данные 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL
)
; Указываем два name сервера	IN	NS	ns1.sibway.pro.	IN	NS	ns2.sibway.pro.
; Определяем IP адреса name серверов
ns1	IN	A	10.10.10.10
ns2	IN	A	20.20.20.20
; Define hostname -> IP нашего сервера для этого домена
@	IN	A	213.133.100.77
www	IN	A	213.133.100.77 

Делаем рестар название сервера

 service named restart 

Определяем, чтобы имя сервера стартовало при загрузке системы.

 chkconfig named on 

Теперь проверим, как работает наш name server.

 dig @10.10.10.10 sibway.pro 

В ответ должен быть указан правильный IP-адрес запрошенного домена. Теперь сконфигурируем подчиненный сервер.

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

Конфигурация ведомого имени сервера проходит так же, как и ведущее за исключением двух моментов:

  1. При редактировании файла набора named.conf необходимо указать какие доменные зоны подчиненные
  2. Не нужно включать доменные зоны, так как они автоматически обновляются с мастер-сервером

В конфигурационном файле необходимо указать тип ведомого и указать IP мастер сервера.

 zone "sibway.pro" IN {	type slave;	masters { 10.10.10.10; };	file "sibway.pro.zone";
}; 

Не забываем запускать сервер и включать его в автоматический запуск при включении системы.

 service named start
chkconfig named on 

Теперь у нас есть два сконфигурированных сервера имен.

Осталось открыть порт в брандмауэре

Отредактируем файл /etc/sysconfig/iptables:

 # vi /etc/sysconfig/iptables 

Добавим возможные правила для 53 порта.

 -A INPUT -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT 
 # /etc/init.d/iptables restart 

Не забудьте обновить этот файл на обоих серверах.

Теперь у нас есть два работающих name сервера.

Используемые термины:  DNS
BIND
, Linux
CentOS
, Rocky Linux
.

Мы рассмотрим небольшой обзор по установке DNS-сервера bind на системы типа RPM (Rocky Linux, CentOS, Oracle Linux и так далее).

Подготовка сервера

Установка и запуск

Базовая настройка

Описание глобальных опций

Зоны bind

Решение проблем с помощью log-файлов

Подготовка сервера

Устанавливаем все обновления:

Устанавливаем утилиту для синхронизации времени:

yum install chrony

Настраиваем временную зону:

timedatectl set-timezone Europe/Moscow

* в данном примере выбрано московское время. 

Разрешаем и запускаем сервис для синхронизации времени:

systemctl enable chronyd —now

Открываем порт в firewall:

firewall-cmd —permanent —add-port=53/udp

И перечитываем настройки сетевого экрана:

Установка и запуск BIND

Устанавливаем DNS-сервер следующей командой:

yum install bind

systemctl enable named

Запускаем сервис имен:

systemctl start named

И проверяем, что он работает корректно:

systemctl status named

Базовая настройка DNS-сервера

Открываем на редактирование конфигурационный файл bind:

и редактируем следующее:

Для применения настроек выполните команду:

systemctl restart named

Для начала проверим работу сервиса с локального компьютера. Для этого установим nslookup и выполним команду:

nslookup dmosk.ru 127.0.0.1

Если вы предпочитаете использовать dig, то:

Для проверки работоспособности сервера с другого компьютера сети (например, на Windows) выполняем команду:

nslookup dmosk.ru 192.168.166.155

Должно получиться, примерно, следующее:

Результат проверки bind сервера командой nslookup

Описание глобальных опций

Пример глобальных настроек

Зоны bind

Для возможности искать соответствия в собственной базе доменов, необходимо создать и настроить зоны. Существуют следующие типы зон:

  1. Первичная, она же master, она же локальная. База, которая пополняется и редактируется на текущем сервере. Подробнее как настроить первичную зону bind
    .
  2. Вторичная или slave. База копирует настройки с первичной зоны на другом сервере. Подробнее как настроить вторичную зону bind
    .
  3. Заглушка или stub. Хранит у себя только записи NS, по которым все запросы переводятся на соответствующие NS-серверы.
  4. Кэширующая или hint. Не хранит на сетбе никаких записей — только результаты уже обработанных запросов для ускорения ответов на повторные обращения.

Решение проблем с помощью log-файлов

По умолчанию, сервер Bind под CentOS хранит логи в файле  /var/named/data/named.run
.

Для его непрерывного просмотра вводим следующую команду:

tail -f /var/named/data/named.run

Степень детализации логов можно настроить в конфигурационном файле:

* где  file
— путь к log-файлу;  severity
— уровень чувствительности к возникающим событиям. Возможны следующие варианты для severity:

  • critical
    — критические ошибки.
  • error
    — ошибки и выше (critical).
  • warning
    — предупреждения и выше. Предупреждения не говорят о наличии проблем в работе сервиса, однако это такие событтия, которые могут привести с ошибкам, поэтому не стоит их игнорировать.
  • notice
    — уведомления и выше.
  • info
    — информация.
  • debug
    — отладка (подробный лог).
  • dynamic
    — тот же debug.

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

После изменения конфигурационного файла перезапускаем сервис:

systemctl restart named

Лог запросов

Если мы хотим также видеть в логе все запросы, которые приходят на bind, в командной строке вводим:

Для отключения еще раз повторяем команду:

Читайте также

Дополнительная информация по bind:

1. Создание и настройка первичной зоны в BIND
.

2.  Как создать и настроить вторичную (slave) зону в BIND сервере
.

3.  Настройка Stub зоны на сервере Bind
.

4.  Настройка DNSSEC на BIND
.

5.  Настройка Split DNS на одном сервере Bind
.

Оцените статью
Хостинги