Настройка DNS-сервера Bind для перенаправления запросов к нескольким DNS-серверам с разделением по доменным именам

Оцените статью

Если у вас возникла необходимсть разделять запросы к нескольким DNS-серверам (например сервера обслуживающие DNS-зоны ваших клиентов) и при этом еще и разрешать имена в интернете, то это довольно легко можно реализовать при помощи DNS-сервера Bind.

Все работы будут производиться в RedOS 8, но в принципе все описано справедливо и для других дистрибутивов Linux.

Произведем установку DNS-сервера Bind

Установка.

# dnf install bind

Настраиваем автозапуск.

# systemctl enable named
# systemctl start named

Отключаем SystemD Resolved на localhost

Отключаем systemd-resolved на localhost для чего исправляем файл /etc/systemd/resolved.conf и меняем параметр DNSStubListener на no.
[Resolve]
#DNS=
#FallbackDNS=
#Domains=
#DNSSEC=no
#DNSOverTLS=no
#MulticastDNS=no
#LLMNR=resolve
#Cache=yes
#CacheFromLocalhost=no
DNSStubListener=no
#DNSStubListenerExtra=
#ReadEtcHosts=yes
#ResolveUnicastSingleLabel=no

Перезапускаем службу systemd-resolved:

# systemctl restart systemd-resolved.service

Настройка DNS-сервера Bind

В моем случае получился вот такой конфигурационный файл.

options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { any; };
        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";
        secroots-file   "/var/named/data/named.secroots";
        recursing-file  "/var/named/data/named.recursing";
        allow-query     { any; };

        recursion yes;

        forwarders {
          1.1.1.1;
          1.0.0.1;
          8.8.8.8;
        };


        dnssec-validation no;

        managed-keys-directory "/var/named/dynamic";
        geoip-directory "/usr/share/GeoIP";

        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";

        /* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
        include "/etc/crypto-policies/back-ends/bind.config";
};

logging {
    channel log_file {
        file "/var/log/named/named.log" versions 3 size 5m;
        severity info;
        print-time yes;
        print-category yes;
    };
    category default { log_file; };
    category queries { log_file; };
};

zone "mrp.loc" {
    type forward;
    forwarders {
        10.88.14.1;
    };
    forward only;
};

zone "domain89" {
    type forward;
    forwarders {
        10.14.113.26 port 8765;
    };
    forward only;
};

zone "." IN {
        type hint;
        file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

Это модифицированный стандартный конфигурационный файл и в нем было изменено.

Слушать на всех интерфейсах:

listen-on port 53 { any; };
listen-on-v6 port 53 { any; };

Разрешаем рекурсию и задаем основные серверы пересылки:

recursion yes;

forwarders {
   1.1.1.1;
   1.0.0.1;
   8.8.8.8;
};

Отключаем проверку dnssec (бывают криво настроенные сервера):

dnssec-validation no;

И собственно для чего все и затевалось, маршрутизация запросов на разные домены через разные серверы.

zone "mrp.loc" {
    type forward;
    forwarders {
        10.88.14.1;
    };
    forward only;
};

zone "domain89" {
    type forward;
    forwarders {
        10.14.113.26 port 8765;
    };
    forward only;
};

По окончании настройки перезагружаем DNS-сервер Bind.

# systemctl restart named

Настройка логирования DNS-сервера Bind

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

logging {
    channel log_file {
        file "/var/log/named/named.log" versions 3 size 5m;
        severity info;
        print-time yes;
        print-category yes;
    };
    category default { log_file; };
    category queries { log_file; };
};

Проверка работы DNS-сервера Bind

Проверка разрешения имен удаленным сервером у заказчика.

$ nslookup srv-1c.mrp.loc 10.88.14.1
Server:         10.88.14.1
Address:        10.88.14.1#53

Name:   srv-1c.mrp.loc
Address: 10.88.14.105

Проверка форвардинга запросов в интернет нашим DNS-сервером.

$ nslookup mail.ru 10.88.14.114
Server:         10.88.14.114
Address:        10.88.14.114#53

Non-authoritative answer:
Name:   mail.ru
Address: 90.156.232.4
Name:   mail.ru
Address: 89.221.239.1
Name:   mail.ru
Address: 185.180.201.1

Проверка форвардинга до DNS-сервера заказчика через наш DNS-сервер (тест разрешения имени внутреннего домена).

$ dig A srv-1c.mrp.loc @10.88.14.114

; <<>> DiG 9.20.11-1ubuntu2.1-Ubuntu <<>> A srv-1c.mrp.loc @10.88.14.114
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18124
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 1291e5446f33bf2001000000698dbfc266c94451d1a9a1e5 (good)
;; QUESTION SECTION:
;srv-1c.mrp.loc.                        IN      A

;; ANSWER SECTION:
srv-1c.mrp.loc.         0       IN      A       10.88.14.105

;; Query time: 304 msec
;; SERVER: 10.88.14.114#53(10.88.14.114) (UDP)
;; WHEN: Thu Feb 12 18:55:46 +07 2026
;; MSG SIZE  rcvd: 87

Похожие записи

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

В этой статье мы рассмотрим пошаговую настройку кластера Kubernetes на Ubuntu 24.04 с тремя узлами: один мастер (который также может запускать пользовательские поды) и два рабочих узла. Мы настроим PersistentVolume…

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

В рамках создания собственного кластера Kubernetes я поднаял кластер Mysql который работает в режиме Master-Slave и Slave-узлы соответственно работают в режиме read-only, а мастер в read-write. Соответственно мне нужен балансировщик…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читать еще статьи

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

Полное руководство по настройке UFW в Ubuntu: от основ до продвинутых правил

Полное руководство по настройке UFW в Ubuntu: от основ до продвинутых правил

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования