Если у вас возникла необходимсть разделять запросы к нескольким 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




