
Bind на Ubuntu — установка и настройка
Подготовка системы
Если в системе настроен брандмауэр, добавляем правило на разрешение входящих пакетов на 53 UDP-порт:
iptables -I INPUT 1 -p udp —dport 53 -j ACCEPT
* данной командой мы вставляем первое правило на разрешение 53 порта по протоколу UDP.
Проверка работы системы доменных имён
Теперь проверьте работу системы доменных имён:
nslookup ns.dom
в результате вы должны получить нечто вроде:
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: ns.dom
Address: 192.168.0.1
Как вы можете убедиться, зона прямого просмотра работает. Теперь удостоверьтесь, что также работает и обратная:
nslookup 192.168.0.1
В результате вы должны увидеть:
Server: 127.0.0.1
Address: 127.0.0.1#53
1.0.168.192.in-addr.arpa name = ns.dom.
В итоге вы должны получить имя сервера, введя его IP. Если у вас всё отображается подобным образом, значит, настройка была произведена верно. Если же нет, значит, ранее была допущена ошибка.
Задаём статический IP
Контроллер домена обязательно должен быть со статическим IP адресом, банально потому что если он сменит свой адрес, домен перестанет функционировать.
Настраиваем DNS сервер Bind9
Открываем файл конфигурации
sudo nano /etc/bind/named.conf.options
Добавим следующий код:
forwarders {
8.8.8.8;
8.8.4.4;
};
listen-on {
127.0.0.1;
192.168.0.1;
};
- forwaders – вышестоящий dns сервер (сервер гугла), используется если url запроса не найден в нашей базе.
- listen-on – адреса через которые будет обслуживаться наш DNS сервер.
Сохраняем (Ctrl+O) и закрываем (Ctrl+X) файл.
Перезапустим bind9
sudo service bind9 restart
Настройка локального DNS-сервера BIND9 на Ubuntu 20.04 LTS
Для настройки пакеты BIND9 перейдем в его каталог:
cd /etc/bind
В нем нас будут интересовать следующие файлы:
- named.conf.options
- named.conf.local
Подсказка: Пакет bind9 на Ubuntu 20.04 теперь не поставляется с db.root файлом корневых серверов, теперь он использует файл /usr/share/dns/root.hints.
Давайте сперва откроем файл named.conf.options:
sudo nano named.conf.options
И внесем в него следующие изменения:
// ACL список с сетями
acl «lan» {
// 10.5.5.0/24; # Локалка 1
// 10.1.1.0/24; # Локалка 2
localhost;
};
options {
directory «/var/cache/bind»;
// Слушать только сети перечисленные в списках ACL
listen-on { «lan»; };
// Запрашивать у DNS если не найдено в собственной базе
forwarders {
1.1.1.1;
8.8.8.8;
};
// Разрешить рекурсивные запросы
recursion yes;
// Рекурсия только для ACL списка
allow-recursion { «lan»; };
// Обрабатывать запросы только из сетей указанных в acl списках
allow-query { «lan»; };
dnssec-validation auto;
auth-nxdomain no;
// Выключаем IPv6
listen-on-v6 { none; };
// При запросе версии DNS выдать следующий ответ
version «NOT CURRENTLY AVAILABLE»;
// Логирование
querylog yes;
};
Сохраните и закройте файл. Затем проверьте синтаксис файла конфигурации.
sudo named-checkconf
Если ничего не выдал, то все в порядке. Можно перезапустить службу:
sudo systemctl restart bind9
Также если у вас закрыты порты то их необходимо открыть.
Для UFW
sudo ufw allow in from 10.5.5.0/24 to any port 53
Для iptables
sudo iptables -A INPUT -s 10.5.5.0/24 -p udp —dport 53 -j ACCEPT
sudo iptables -A INPUT -s 10.5.5.0/24 -p tcp —dport 53 -j ACCEPT
Это откроет TCP и UDP порт 53 для локальной сети 10.5.5.0 / 24. Затем с другого компьютера в той же локальной сети мы можем выполнить следующую команду для запроса записи A google.com.
dig A google.com @10.5.5.1
где, 10.5.5.1 — IP адрес нашего сервера в локальной сети
Теперь проверьте журнал запросов с помощью следующей командой:
sudo journalctl -eu named
или
sudo journalctl -xe | grep named
Из вывода видно что запросы поступают на наш DNS сервер, а он в свою очередь на них успешно отвечает.
В файле named.conf.local настраиваются зона прямого и обратного просмотра. В данном материале уже описано как это сделать
Настройка BIND9 для Linux AD-DC – Часть 1
Примечательно, что начинаетсяустановкадоменасустановкиDNSсервера, пакета, распространяемого отдельно от samba4. Можноипотом, нотакивэтомслучаепридётсяделатьдополнительныетелодвижения. Дабыэтогоизбежатьсперванадоустановитьbindипровестиегочастичнуюнастройку. Установим, создадимзоны, проведёмпервичнуюконфигурацию
Ставим BIND9_DLZ
sudo apt install bind9
Прежде всего проверяем версию bind
named -v
На момент написания, в репозитории Ubuntu 18.04 была версия 9.11.3
Смотрим где bind держит named.conf
named -V | grep sysco
В результате увидим что-то типа этого:
Узнаём директорию bind9
–sysconfdir=/etc/bind – это папка где лежит файл named.conf
Смотрим где днс сервер держит кеш
sudo cat /etc/passwd | grep bind
В результате видим что-то типа этого:
Директория /var/cache/bind понадобится нам при дальнейшей настройке
Проверяем named.conf
nano /etc/bind/named.conf
В результате видим:
Содержимое named.conf
Нам понадобятся файлы выделенные красным
Правим named.conf.options
В первую очередь делаем бэкап и правим файл
sudo cp /etc/bind/named.conf.options /etc/bind/named.conf.options_bak
sudo nano /etc/bind/named.conf.options
Удаляем его содержимое и заменяем следующим:
# Глобальные настройки
options {
auth-nxdomain yes;
directory «/var/cache/bind»; #Папка с кешем bind
notify no;
empty-zones-enable no;
tkey-gssapi-keytab «/var/lib/samba/private/dns.keytab»;
minimal-responses yes;
# IP адреса и подсети от которых будут обрабатываться запросы
allow-query {
127.0.0.1;
192.168.1.0/24; #Текущая локальная сеть ag-dc-1.adminguide.lan
};
# IP адреса и подсети от которых будут обрабатываться рекурсивные запросы
# (Зон не обслуживаемых этим DNS сервером)
allow-recursion {
127.0.0.1;
192.168.1.0/24; #Текущая локальная сеть ag-dc-1.adminguide.lan
};
# Перенаправлять запросы, на которые нет информации в локальной зоне
# на следующие сервера:
forwarders {
192.168.1.1; #IP адрес DNS форвардера
8.8.8.8; #IP адрес DNS форвардера
8.8.4.4; #IP адрес DNS форвардера
};
# Запрет на трансфер зоны
allow-transfer {
none;
};
};
Правим named.conf.default-zones
sudo cp /etc/bind/named.conf.default-zones /etc/bind/named.conf.default-zones_bak
sudo nano /etc/bind/named.conf.default-zones
Удаляем его содержимое и заменяем следующим:
# Корневые сервера
# (Необходимы для рекурсивных запросов)
zone «.» {
type hint;
file «named.root»;
};
# localhost zone
zone «localhost» {
type master;
file «master/localhost.zone»;
};
# 127.0.0. zone.
zone «0.0.127.in-addr.arpa» {
type master;
file «master/0.0.127.zone»;
};
Настройка файла конфигурации bind
На данный момент у нас должно быть два файла:
/etc/bind/zones/master/db.itproffi.ru
/etc/bind/zones/master/db.172.31.1
Теперь требуется вставить имена обоих файлов зоны в файл конфигурации bind /etc/bind/named.conf.local. Для этого добавьте в файл следующие строки:
zone «itproffi.ru» {
type master;
file «/etc/bind/zones/master/db.itproffi.ru»;
};
zone «1.31.172.in-addr.arpa» {
type master;
file «/etc/bind/zones/master/db.172.31.1»;
};
Последний момент перед проверкой конфигурации – внести в файл named.conf.options IP-адрес стабильного DNS-сервера. Он будет использоваться, если локальный DNS-сервер не будет знать ответ на запрос разрешения имени. Часто этот адрес предоставляется интернет-провайдером, но если вы поклонник Google, можно указать адрес 8.8.8.8 или 8.8.4.4.
Замените следующий блок текста в файле named.conf.options:
// forwarders {
// 0.0.0.0;
// };
на блок текста с адресом стабильного DNS-сервера
forwarders {
8.8.4.4;
};
Если вы планируйте что к вашему серверу будут подключаться другие компьютеры, то нужно разрешить в опциях внешние подключения. Для этого в основном файле конфигурации, в секции options добавьте или замените следующие правила
listen-on port 53 { any; };
allow-query { any; };
А лучше, для безопасности вместо any пропишите ваши сети с которых разрешено подключение
listen-on port 53 { 192.168.0.0/24; };
allow-query { 192.168.0.0/24; };
Если этого не сделать, то при попытке обращения к серверу с другого компьютера вы получите ошибку
Query refused
Цель статьи – Настройка BIND9 для Linux AD-DC
Цель данной статьи – не только актуализировать информацию предыдущей. Эта статья будет с блекджеком и блудницами. Если ранее при настройке домен инициализировался с помощью samba_internal DNS сервера и был способен лишь контролировать авторизацию и обслуживать dns имена присоединённых к нему клиентов, в этой статье будут использоваться BIND9 + dhcpd и все вытекающие прелести, такие как автоматическое создание DNS A-записей в локальной зоне, для устройств получивших адрес по DHCP. То есть любых устройств, а не только членов домена. Изначально я планировал оформить информацию в виде одной статьи. Но наученный горьким опытом сложности поддержания таких статей, я опубликую этот мануал в виде 5 отдельных статей, создав тем самым 5 тематических постов со своими ветками обсуждений каждый. Нуждающийся же да превозможет :). Не стесняйтесь задавать вопросы в комментариях в том месте где вы увидели этот мануал. Если это одна из площадок где я размещаю контент, то я обязательно отвечу.
Создание файла зоны DNS
Дальнейшие примеры будут для Ubuntu/Debian, но также подходят и для Centos/RedHat, только директория с настройками зон в CentOS будет находиться в /etc/named/ , а основной файл конфигурации /etc/named.conf. Для начала нам потребуется создать новый файл зоны для домена itproffi.ru. Перейдите в директорию /etc/bind/. создайте в ней поддиректорию zones/master/ и перейдите в нее, выполнив следующую последовательность команд:
cd /etc/bind
mkdir -p zones/master
cd zones/master/
Директория /etc/bind/zones/master будет содержать файл зоны для домена itproffi.ru. При желании можно использовать другую директорию. Файл зоны db.itproffi.ru будет содержать запись DNS, которая поможет серверу имен установить соответствие полного доменного имени IP-адресу. Создайте этот файл со следующим содержимым:
Рассмотрим ключевые строки этого файла:- Запись SOA: авторитативный сервер имен для itproffi.ru – это ns1.itproffi.ru, адрес ответственного за зону DNS администратора – admin@itproffi.ru
- Записи NS: два сервера имен для зоны itproffi.ru – ns[1,2].itproffi.ru
- Запись MX: почтовый сервер для itproffi.ru. Число 10 означает уровень приоритета
- Записи A: A означает «адрес» (address). Другими словами, ns1 в зоне itproffi.ru будет иметь адрес 172.31.1.10
- Запись CNAME (Canonical Name – каноническое имя): привязывает одно доменное имя к другому (каноническому), например, устанавливает соответствие mail.itproffi.ru и itproffi.ru.
Настройка основного DNS сервера
Исходные данные:
- Доменное имя – lab.loc
- IP сервера – 192.168.0.1
- Имя сервера – srv-01.lab.loc
Нам нужно будет указать две зоны (прямого и обратного просмотра) и прописать их в конфигурации сервера.
Я начну с конца и укажу настройки зон в файле конфигурации. Открываем его
sudo nano /etc/bind/named.conf.local
и вставляем следующее:
key DHCP_UPDATER {
algorithm HMAC-MD5.SIG-ALG.REG.INT;
secret «4GD8OIb8pZk4vAueACAfUQ==»;
};
zone «lab.loc» {
type master;
file «/var/lib/bind/db.lab.loc»;
allow-update { key DHCP_UPDATER; };
};
//reverse zone
zone «0.168.192.in-addr.arpa» {
type master;
file «/var/lib/bind/db.192»;
allow-update { key DHCP_UPDATER; };
};
- key DHCP_UPDATER — информация о ключе, который мы с вами записывали (в кавычки вам нужно вписать свой ключ)
- zone «lab.loc» — информация о зоне использования DNS, указан тип — master, путь к файлу хранения данных зоны, обновления файла разрешено с использованием ключа.
- zone «0.168.192.in-addr.arpa» — создание зоны обратного просмотра
Теперь создадим сами файлы в которых будут храниться данные зоны lab.loc. Для этого скопируем образец файла прямого просмотра:
sudo cp /etc/bind/db.local /var/lib/bind/db.lab.loc
откроем его
sudo nano /var/lib/bind/db.lab.loc
и внесем правки как у меня:
Теперь скопируем файл зоны обратного просмотра:sudo cp /etc/bind/db.127 /var/lib/bind/db.192
откроем его
sudo nano /var/lib/bind/db.192
Вносим в него следующее:
Сохраняем, закрываем, перезапускаем Bind9sudo /etc/init.d/bind9 restart
Сохраняем, закрываем, проверяем работу DNS сервера:
nslookup srv-01.lab.loc
в ответ вы должны увидеть следующее:
Как видите зона прямого просмотра работает, нам показался адрес проверяемого имени. Теперь проверим работу зоны обратного просмотра
nslookup 192.168.0.1
В ответ должны получить следующее:
Как видите в ответ мы получили имя сервера по его адресу. Если у вас в ответ на nslookup так же все корректно отображается, значит вы все сделали правильно! Если нет, проверяйте что сделали не так.
Установка и запуск
Устанавливаем DNS-сервер следующей командой:
apt-get install bind9 dnsutils
Добавляем сервис в автозапуск:
systemctl enable bind9
* или для старых систем, где нет systemd update-rc.d bind9 defaults.
Запускаем:
systemctl start bind9
* или service bind9 start.
Проверяем, что сервис работает:
nslookup dmosk.ru 127.0.0.1
Получаем, что-то на подобие:
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: dmosk.ru
Address: 90.156.242.197
Быстрая установка, или еще раз об одном и том же
Итак, как установить BIND 9 в Debian/Ubuntu, в Сети очень и очень много материала. Так что быстро пройдемся по этому пункту, не вдаваясь в подробности. Для начала необходимо установить BIND 9 в систему. Для пользователей MS Windows есть версия BIND 9 под их платформу.
$ sudo apt install bind9
apt-cache search bind9
Текущее состояние Ubuntu 20.04
Дак вот, в статье говорится про настройку Linux AD-DC для Ubuntu 18.04 потому что совсем недавно, в июне-июле 2020 года, Samba выпустили новую версию, которая пожалуй является переломной в плане технологий используемых для обновления DNS записей в локальной зоне контроллера домена. Если раньше и в данной статье для этих целей использовалась утилита nsupdate. Начиная с недавнего времени Samba начала использовать для этого утилиту samba-tool. Поэтому инструкции разработанные для Ubuntu 18.04, основывающиеся на установке самых последних версий пакетов из репозиториев Ubuntu 18.04, не подходят для Ubuntu 20.04 ввиду разных подходов в работе с DNS зоной.
Так же в репозиториях Ubuntu 20.04 находится bind9 версии 9.16.x. В свою очередь на момент написания статьи, самый последний dlz модуль доступный при установке Samba4 совместим с bind 9.12.x. И если с версией bind9 9.14.x этот модуль DLZ ещё работал без ошибок, то с версией 9.16.x и утилитой samba-tool, syslog сервера начинает пестрить ошибками, ссылающимися именно на код DLZ модуля. Взвесив все за и против я решил отложить адаптацию инструкций по настройке Linux AD-DC для Ubuntu 20 и сосредоточиться на обновлении и актуализации этих же инструкций для Ubuntu 18.04. Я слабо верю что обновления пакетов доставляемые в эти дни в Ubuntu 20.04 могут добраться и до репозиториев Ubuntu 18.04. А спустя пол года-год, когда все обновления по большей части устаканятся, можно будет адаптировать данную инструкцию и для Ubuntu 20.
Теперь можно протестировать работу нашего DNS сервера
Добавим в фал /etc/resolv.conf строчку с нашим DNS сервером (так как файл /etc/resolv.conf при перезагрузке меняет значения на дефолтные, добавить запись нужно в тот файл из которого будут браться дефолтные значения)
sudo nano /etc/resolvconf/resolv.conf.d/tail
в этот файл пишем следующее:
domain lab.loc
search lab.loc
nameserver 127.0.0.1
Сохраняем файл, закрываем его и перезагружаем сервер. После перезагрузки протестируем работу сервера, выполните следующую команду:
dig ubuntu.ru
в ответ вы получите ответ с временем выполнения запроса (выделено цветом)
Как видите запрос был выполнен за 284 мсек. Теперь еще раз выполним этот же запрос и проверим время запроса
Повторный запрос был выполнен за 7 мсек! Отлично! Кэширование запросов работает. Двигаемся дальше.
Базовая настройка
Основной конфигурационный файл находится по пути /etc/bind/named.conf. В последних версиях bind в нем ничего не настраивается, а используются подключаемые файлы.
По умолчанию, сервер разрешает только локальные запросы. Чтобы разрешить обращаться к серверу, открываем конфигурационный файл:
vi /etc/bind/named.conf.options
И добавляем строку:
allow-query { any; };
* в данном примере будут разрешены запросы для всех клиентов (внутренних и внешних). Вместо any можно прописать конкретные сети или IP-адреса.
Если необходимо настроить сервер только для локальной сети, настройка будет следующей:
allow-query { 192.168.0.0/24; };
* где 192.168.0.0/24 — используемая локальная сеть.
Если необходимо перенаправлять запросы на определенный сервер DNS, добавляем строку:
forwarders { 77.88.8.8; 8.8.8.8; };
* в данном примере запросы будут перенаправляться на сервер 77.88.8.8 и если они не будут обработаны — на 8.8.8.8.
Перезагружаем сервис:
systemctl restart bind9
* или service bind9 restart.
На этом базовая настройка закончена. Наш сервер готов принимать и отдавать запросы и работать, как кэширующий dns.
Проверить его работу можно с удаленного компьютера Windows или Linux командой:
nslookup ubuntu.com 192.168.0.15
* где 192.168.0.15 — адрес сервера в локальной сети.
Итог
Как видно, совсем не сложно разбить клиенты DNS на группы сетей или отдельные узлы и обрабатывать их запросы или перенаправлять вышестоящему DNS-серверу в зависимости от адреса, с которого пришел запрос. Чтобы наши клиенты НЕ СМОГЛИ использовать внешние DNS-серверы на выходном шлюзе, добавляем правило «Разрешить DNS-запросы в интернет от ваших DNS-серверов и запретить для всех остальных». Делается это из-за того, что есть знающие пользователи, которые меняют настройки на своих устройствах. Или просто заворачиваем все запросы на наш DNS. Следует отметить, что если используется прокси, то для его клиентов запросы будет обрабатывать прокси-сервер, это нужно учитывать.
Служба DNS не менее важна, чем DHCP и другие. При правильном подходе она помогает решить довольно большой круг задач. Игнорируя этот сервис, перекладывая все заботы на публичные DNS-серверы, администраторы лишают себя очень гибкого инструмента для работы с сетью. Так, например, можно снизить нагрузку на канал, если описать зоны с сервисами, находящимися в локальной сети и имеющими доступ из сети Интернет, чтобы внутренние клиенты ходили только по локальной сети, а клиенты внешние — через внешний канал соответственно. Когда число клиентов переваливает за сотню, это особенно ощутимо.
P. S. Всем удачи! Легкой настройки, бесперебойной работы и свободного канала связи
Версии ключевых пакетов использованных в статье
С недавних пор версии пакетов стали фатально важными при воспроизведении инструкции потому вот:
- Samba4: Version 4.7.6-Ubuntu
- bind9 (named): BIND 9.11.3-1ubuntu1.13-Ubuntu (Extended Support Version)
Проверка обратной зоны
named-checkzone 1.31.172.in-addr.arpa /etc/bind/zones/master/db.172.31.1
zone 1.31.172.in-addr.arpa/IN: loaded serial 1
OK
Немного теории
Основная цель DNS — это отображение доменных имен в IP-адреса и наоборот — IP в DNS. Решено было рассмотреть BIND (Berkeley Internet Name Domain, ранее Berkeley Internet Name Daemon), как самый распространенный софт для решения задачи DNS. BIND входит в состав любого дистрибутива UNIX. Основу BIND составляет демон named, который для своей работы использует порт UDP/53 и для части запросов TCP/53. Очень подробно о нем рассказано в статье на Хабре.
Если хочешь познакомиться с «новым» BIND, то рекомендую к чтению вот эту статью. В двух словах: версия 9 была последней, с 10-й версии права передают сообществу, и это ПО ныне известно как Bundy.
Установка Ubuntu Server 18.04 Полезные команды после установки
# Обновить систему
sudo apt update && sudo apt dist-upgrade -y
# Установить набор сетевых утилит включающий привычный многим ifconfig
sudo apt install net-tools
# Узнать текущий ip адрес
ip addr show
ifconfig
# Узнать текущий шлюз по умолчанию
ip route show
Задаём имя сервера
Имя сервера нужно задавать ДО инициализации контроллера домена.
Resolver DNS в Ubuntu 20.04 LTS
Какой у вас в системе установлен резолвер можно посмотреть вот такой командой:
sudo systemd-resolve —status
Чтобы установить ваш DNS в качестве резолвера по умолчанию, откройте файл конфигурации systemd-resolved.
sudo nano /etc/systemd/resolved.conf
И пропишите в файле в секции [Resolver] ваш DNS-сервер
Закрываем файл и перезагружаем systemd-resolver
sudo systemctl restart systemd-resolved
Если теперь посмотреть статус то DNS должен измениться на IP вашего сервера.
sudo systemd-resolve —status
Также теперь проверьте содержание /etc/resolv.conf.
cat /etc/resolv.confnameserver 10.5.5.1
search lan
options ends0
Если привязки не произошло, то можно установить утилиту resolvconf
sudo apt install resolvconf
Запускаем сервис named-resolvconf
sudo systemctl enable named-resolvconf.service
sudo systemctl start named-resolvconf.service
На этом Настройка локального DNS-сервера BIND9 на Ubuntu 20.04 LTS окончена.
Если есть вопросы, то пишем в комментариях.
Также можете помочь проекту, заранее всем СПАСИБО!!!
.Пожертвовать
INFO
Подробно о версии для Windows 2008 можно почитать тут: «Установка BIND 9 в Windows Server 2008».
Для других дистрибутивов руководств по сборке из исходных кодов на просторах Сети предостаточно, забирай быстрее, переписывай в блокноты, пока новый «суперполезный» закон не накрыл весь интернет или пока тебя не отругали за то, что ты ходишь или ходил на сайт с запрещенной литературой.
После установки переходим в каталог /etc/bind9/ и видим там основной файл конфигурации named.conf, внутри подключены остальные файлы named.conf.*. Как настраивать мастер-зону, опустим, поскольку в Сети информация изложена очень подробно. Добавим в файл named.conf строку
include «/etc/bind/named.conf.acl»;
чем подключим новый файл в конфиг для правил подсетей. Далее создаем файл /etc/bind/named.conf.acl и добавляем правила:
acl «lan» { 192.168.181.0/24; };
acl «do» { 10.0.0.0/24; 192.168.253.0/24; };
acl «srv» { 192.168.254.0/24; };
acl «alls» { 10.10.0.0/16; };
acl «dou» { 192.168.201.0/24; 192.168.202.0/24; 192.168.203.0/24; 192.168.204.0/24; 192.168.205.0/24; };
acl «school» { 172.16.0.0/24; };
Здесь мы разделили сети на группы для дальнейшей обработки. Прежде чем продолжим, уточню один момент. Для корректной обработки зон необходимо в каждую группу правил добавлять все зоны. Можно это делать в одном файле или вынести настройки зоны в отдельный файл и потом просто подключать в нужных местах. Итак, в файл /etc/bind/named.conf.local вносим изменения:
view «edu» {
match-clients { school; };
recursion yes;
allow-query { school; };
forwarders { 77.88.8.7; };
zone «xaker.ru» {
type master;
file «/etc/bind/xaker.ru_loc»;
};
zone «254.168.192.in-addr.arpa.» {
type master;
file «/etc/bind/xaker.rev»;
};
zone «zone2.ru» {
type slave;
file «/etc/bind/db.zone2.ru»;
masters { 192.168.254.5; };
};
};
Здесь мы обозначаем группу, с которой будет работать BIND. Добавляем сюда клиенты из правил, которые мы определили выше. Назначаем вышестоящий сервер, на который будут пересылаться запросы, пришедшие из сетей, согласно описанным правилам. Здесь это единственная группа адресов School. В качестве вышестоящего DNS задал DNS-сервер Яндекс, который фильтрует «плохой» контент. Можно аналогично использовать другие DNS-сервисы, такие как SkyDNS.
Далее в этот же файл ниже добавляем вторую или остальные группы клиентов. Зона zone2.ru подключена как slave-зона, указан DNS-мастер-сервер и файл — путь к базе.
view «any» {
match-clients { any; };
notify yes;
recursion yes;
allow-query { do; lan; srv; dou; };
forwarders { 8.8.8.8; };
zone «xaker.ru» {
type master;
file «/etc/bind/xaker.ru_loc»;
};
zone «254.168.192.in-addr.arpa.» {
type master;
file «/etc/bind/xaker.rev»;
};
zone «zone2.ru» {
type slave;
file «/etc/bind/db.zone2.ru»;
masters { 192.168.254.5; };
};
zone «server.local» {
type master;
file «/etc/bind/server.local_loc»;
};
};
Здесь мы снова перечисляем, какие группы входят в эту секцию правил или, говоря иначе, каким сетям отвечать. Настройки зон могут быть различными. Если необходимо обеспечить доступ в зону xaker.ru, то эту секцию нужно описывать в обеих секциях. Зона server.local описана только во второй части. Это говорит о том, что доступ к ней есть только у группы адресов, описанных в этой секции конфига. Это полезно использовать для обеспечения доступа, например, к зоне серверов или закрытых внутренних сервисов, порталов и прочего только необходимых клиентов. Как видно из конфига, вышестоящий DNS-сервер здесь другой. Таким образом, можно подключать внешние DNS-фильтры для избранных.
В общем файле настроек /etc/bind/named.conf.options описываем только недостающие параметры.
options {
directory «/var/cache/bind»;
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
version «Xaker DNS Master Server»;
listen-on-v6 { none; };
notify yes;
forward first;
listen-on port 53 { 127.0.0.1; 192.168.254.2; };
};
Эти правила можно отключить и прописать для каждой группы. Учти, что в таком случае параметры нужно прописывать в каждой секции, у нас их две. Файлы зон описываются при этом стандартно.
$TTL 86400
@ IN SOA xaker.ru. root.xaker.ru. (
2015021902 ; Serial
1d ; Refresh
12h ; Retry
1w ; Expire
3h ; Minimum
);
IN A 192.168.0.6
* IN A 192.168.0.6
@ IN NS xaker.ru.
@ MX 5 192.168.0.3
mail MX 10 192.168.0.3
mail IN A 192.168.0.3
pop IN A 192.168.0.3
smtp IN A 192.168.0.3
imap IN A 192.168.0.3
ns1 IN A 192.168.0.3
www IN CNAME @
jabber IN A 192.168.0.3
_xmpp-server._tcp.proxy.jabber.xaker.ru 86400 IN SRV 0 5 5222 jabber.xaker.ru
Здесь все стандартно. Описываем зону. Если нужно, MX-записями задаем узлы для работы с почтой. Последней строчкой мы описываем XMPP-сервер для передачи файлов с поддержкой Jabber-прокси. Без этого файлы между сетями, находящимися за шлюзом, передавались нестабильно.
Для того чтобы не описывать одинаковые зоны по несколько раз, можно вынести их в файл, например, zone-share.conf. Внутри описать общие зоны, которые будут использоваться во всех группах:
zone «xaker.ru» {
type master;
file «/etc/bind/xaker.ru_loc»;
};
zone «254.168.192.in-addr.arpa.» {
type master;
file «/etc/bind/xaker.rev»;
};
zone «zone2.ru» {
type slave;
file «/etc/bind/db.zone2.ru»;
masters { 192.168.254.5; };
};
zone «server.local» {
type master;
file «/etc/bind/server.local_loc»;
};
А в файле /etc/bind/named.conf.local после описания параметров и перед подключением настроек зон подключить файл с настройками:
include «/etc/bind/zone-share.conf»;
А уже потом описывать зоны, которые будут обрабатываться только для этих клиентов, описанных в данной секции конфига.
Интро
Когда я устроился на работу, количество сервисов в нашей сети можно было пересчитать по пальцам одной руки. Время шло, число сервисов росло. Обслуживающий DNS-сервер был один и выступал мастером для одной зоны (назовем ее xak.ru). Все остальные запросы он просто пересылал на DNS-сервер Google (8.8.8.8). А, чуть не забыл добавить: сервер этот был виртуальным. Потом в один прекрасный день сервер рухнул физически. После замены систему подняли, виртуализацию прикрутили. Поставили свежеустановленный Debian и к нему BIND 9. Присвоили тот же IP, что был у DNS-сервера до падения. Настройки восстановили из бэкапа. После успешного старта стали думать, как «закручивать болты».
Параллельно с этой работой был установлен хостинг, который держал на себе зону (например) xaker.ru. Само собой, центральный DNS должен о ней знать, а еще лучше быть slave DNS-сервером для этой зоны. Далее возникла необходимость перенаправлять DNS-запросы от центрального сервера к редиректору в зависимости от того, из какой сети пришел запрос. Делалось это ради подключения внешних DNS-фильтров, но не для всех. А только для тех, кому надо, а именно образовательных городских сетей — территории образовательных учреждений! Обо всем этом и пойдет речь ниже.
- https://www.dmosk.ru/miniinstruktions.php?mini=bind-ubuntu
- https://nastroyvse.ru/opersys/lix/kak-ustanovit-dns-server-ubuntu.html
- https://adminguide.ru/2020/09/01/nastrojka-bind9-dlya-linux-ad-dc-na-ubuntu-18-04-chast-1/
- https://faqpc.ru/nastrojka-dns-servera-ubuntu/
- https://obu4alka.ru/settings-dns-bind9-ubuntu-20-04.html
- https://ITProffi.ru/ustanovka-i-nastrojka-dns-servera-bind-v-linux/
- https://xakep.ru/2016/09/05/bind-9/