Настройка 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

Related Posts

Настройка маршрутизации в сеть VipNet

При работе над текущим проектом потребовалось реализовать довольно хитрую маршрутизацию для пользователей в сеть закрытую VipNet-ом. И чтобы не забыть эту эпическую историю напишу небольшую инструкцию как это было реализовано.…

Курс «Погружение в PostgreSQL» от Selectel

Вот получил очередную бумажку успешно завершив курс «Погружение в PostgreSQL» от Selectel. Скажу сразу, что курс очень простой. Но даже с учетом того, что курс максимально простой и не выбить…

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

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

You Missed

Настройка маршрутизации в сеть VipNet

Настройка маршрутизации в сеть VipNet
Курс «Погружение в PostgreSQL» от Selectel

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

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

Вот как надо компьютеры рекламировать

Вот как надо компьютеры рекламировать

Настройка SoftEther VPN клиент/сервер в Linux

Настройка SoftEther VPN клиент/сервер в Linux

Мониторинг баз данных MySQL при помощи Zabbix Agent 2

Мониторинг баз данных MySQL при помощи Zabbix Agent 2