Используемые термины: DNS, Bind, CentOS, Ubuntu.
В двух словах, Split DNS (или split-horizon, или split-brain) — это конфигурация, позволяющая отдавать разные записи зон DNS в зависимости от подсети источника запроса. Ее можно реализовать с применением нескольких разных серверов DNS, однако, Bind позволяет сделать нужную нам настройку на одном единственном сервере с помощью view. В данной инструкции мы рассмотрим пример настройки зоны admins24.com в 3-х направлениях. Команды будут применимы для Linux CentOS (Red Hat) и Ubuntu (Debian).
Первым делом настроим view. Открываем конфигурационный файл. В зависимости от типа операционной системы, его местоположение будет разным.
а) в CentOS / Red Hat:
vi /etc/named.conf
б) в Ubuntu / Debian:
vi /etc/bind/named.conf.default-zones
* в вашей инфраструктуре для описания зон могут использоваться другие файлы. Стоит это учитывать при настройке view.
Пример конфигурации для зон в 3-х представлениях — 2 внутренние сети и все остальные:
* для удобства восприятия, разные блоки конфигурации отмечены разными цветами. Рассмотрим их подробнее:
Мы создали конфигурацию для нашего сервера DNS. Давайте попробуем разобраться, какие три нюанса нужно учитывать.
1. Any должен быть внизу.
Наши блоки view читаются системой сверху вниз. Если сервер DNS при поиске нужной зоны натыкается на подходящий вариант, он использует его. Таким образом, если view с match-clients { «any»; }; поместить в самый верх, будет использоваться только этот блок, а другие так и не задействуются.
2. Настройка зон внутри view.
Внутри view мы можем описывать зоны по-разному. Это могут быть различные настройки или разное количество зон, например, для одного из представлений мы можем создать только одну зону, когда в остальных их может быть больше. Другими словами, view не обязаны зеркалировать друг друга.
3. Вне view не должно быть зон.
Как только мы начали применять view, вне этих блоков не должно быть ни одной зоны. Мы не можем сделать общие настройки для одних зон, а другие поместить внутрь представлений. В противном случае, bind при попытке перезапуска выдаст ошибку.
В нашей конфигурации мы описали зону admins24.com в трех view. Соответственно, нам нужно создать 3 файла. В зависимости от типа операционной системы, их местоположение будет различаться.
а) CentOS / Red Hat:
mkdir /var/named/master
б) Ubuntu / Debian:
mkdir /var/cache/bind/master
* если мы еще не создавали зоны, то создаем данные каталоги.
Теперь можно создавать сами файлы для зон.
vi /var/named/master/admins24.com.in01
vi /var/cache/bind/master/admins24.com.in01
Пример файла с минимально необходимым набором записей:
$TTL 14400
admins24.com. IN SOA ns1.admins24.com. admin.admins24.com. ( 2020120401 ; Serial 10800 ; Refresh 3600 ; Retry 604800 ; Expire 604800 ; Negative Cache TTL)
IN NS ns1.admins24.com.
@ IN A 192.168.0.20ns1 IN A 192.168.0.2
* это файл для зоны admins24.com во view «internal-01». Он будет возвращать IP для записи 192.168.0.20. Предполагается, что адрес DNS-сервера в данном сетевом сегменте 192.168.0.2.
Создаем описание для зоны в следующем view.
vi /var/named/master/admins24.com.in02
vi /var/cache/bind/master/admins24.com.in02
Содержимое:
@ IN A 192.168.1.20ns1 IN A 192.168.1.2
* файл для зоны во view «internal-02». Он будет возвращать IP для записи 192.168.1.20. Предполагается, что адрес DNS-сервера в данном сетевом сегменте 192.168.1.2.
Наконец, создаем последний файл.
vi /var/named/master/admins24.com.any
vi /var/cache/bind/master/admins24.com.any
Его содержимое:
@ IN A 92.53.123.166ns1 IN A 92.53.123.165
* файл для зоны во view «external». Он будет возвращать IP для записи 92.53.123.166. Предполагается, что адрес DNS-сервера в данном сетевом сегменте 92.53.123.165.
Настройки завершены. Чтобы убедиться в их корректности, первым делом, проверяем конфигурационный файл командой:
named-checkconf
* команда должна вернуть пустую строку.
После проверяем корректность настройки зон:
named-checkconf -z
Команда должна вернуть что-то на подобие:
zone admins24.com/IN: loaded serial 2020120401zone admins24.com/IN: loaded serial 2020120401zone admins24.com/IN: loaded serial 2020120401
* в данном примере для зоны admins24.com проверены все файлы. Они корректны.
Теперь можно перезапустить сервер DNS.
systemctl restart named
systemctl restart bind9
Переходим на клиентский компьютер в первом сетевом сегменте (192.168.0.0/24). Для проверки работы нашего сервера вводим команду (на Linux или Windows клиенте):
nslookup admins24.com 192.168.0.2
Мы должны увидеть IP из нашей зоны во view internal-01:
Server: 192.168.0.2Address: 192.168.0.2#53
Name: admins24.comAddress: 192.168.0.20
Переходим на другой компьютер в сетевом сегменте 192.168.1.0/24. Вводим:
nslookup admins24.com 192.168.1.2
В моем случае был получен уже другой ответ:
Server: 192.168.1.2Address: 192.168.1.2#53
Name: admins24.comAddress: 192.168.1.20
Выполняем команду с компьютера вне диапазонов 192.168.0.0/24 или 192.168.1.0/24:
nslookup admins24.com 92.53.123.165
Пример ответа:
Server: 92.53.123.165Address: 92.53.123.165#53
Name: admins24.comAddress: 92.53.123.166
Мы настроили Split DNS на Linux сервере с Bind.
Немного слов о других реализациях, которые позволят развернуть Split DNS на едином устройстве/сервере.
Наверняка, есть и другие реализации, которые позволят настроить сервер DNS с разделяемыми ответами для одних и тех же зон.
Вам могут быть полезны следующие инструкции про DNS:
1. Как установить и настроить DNS-сервер BIND на Linux CentOS
2. Установка и настройка bind на Ubuntu
3. Создание и настройка первичной зоны в BIND
4. Как создать и настроить вторичную (slave) зону в BIND сервере
5. Настройка Stub и Forward зон на сервере Bind для перенаправления запросов
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies