BIND — DNS-сервер.

Установка, настройка, эксплуатация.

Модератор: ROOT

BIND — DNS-сервер.

Сообщение ROOT » 18 июл 2017, 15:27

Оглавление


Темы
 Настройка DNS-сервера 
 Обновление списка корневых DNS-серверов 
 Ошибки 
Дополнительные материалы
Wake on Lan: Удалённое включение компьютера
Синхронизация времени
OpenVPN: Открытая виртуальная частная сеть
ISCSI — Транспортный протокол для SCSI
QUAGGA — Протоколы динамической маршрутизации
Dnscrypt — Проксирование dns-трафика


 Настройка DNS-сервера 
На сервере поддерживаются несколько зон (для внешней и внутренней сети), а так же для внутренней сети есть зона дубликат с кириллическими именами. Сам сервер разрешает имена во всех зонах, а внутренним и внешним клиентам доступны только соответствующие зоны. Смысл решения подобной задачи чтобы разложить требуемые наборы зон по контейнерам view. Клиент может просматривать только одну view. Все зоны должны принадлежать какому-либо view.
Файл конфигурации named.conf
Код: выделить все
# Список доверенных серверов для передачи зон
acl "trusted-dns" { 195.0.1.1; 195.0.1.8; };
acl "def-client" { 127.0.0.0/8; localhost; };
acl "int-client" { 192.168.1/24; 10/8; };

options {
        listen-on port 53 { 127.0.0.1; 195.0.1.15; 192.168.1.254; };
        listen-on-v6 port 53 { none; };
        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";
        allow-query     { localhost; 127/8; 195.0.1/24; 192.168.1/24; 10/8; };

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
        pid-file "/run/named/named.pid";
        version "Bind DNS Server";
        session-keyfile "/run/named/session.key";
        forwarders { 212.1.224.6; 212.1.244.6; };
};
logging { channel default_debug { file "data/named.run"; severity dynamic; }; };
include "/etc/named.root.key";

# вид для localhost. Просмотр всех зон
view "default" {
# 127/8; localhost; - Для разрешения имён этим хостом
match-clients { def-client; };
match-destinations { 127.0.0.1; };
# Наш сервер может обрабатывать рекурсивные запросы для localhost
allow-recursion { def-client; };
include "/etc/named.rfc1912.zones";
zone "buch.ru" IN { type master; file "master/buch.ru.zone"; };
zone "1.168.192.IN-ADDR.ARPA" IN  { type master; file "master/1.168.192.zone"; };
zone "free-adm.ru" IN { type master; file "master/free-adm.ru.zone"; };
zone "1.0.195.IN-ADDR.ARPA" IN  { type master; file "master/1.0.195.zone"; };
zone "xn--90a0bg.xn--p1ag" IN { type master; file "master/бух.ру.zone"; };
};

# вид для внутренних зон
view "internal" {
match-clients { int-client; };
     # 127/8; localhost; - Для разрешения имён этим хостом
     # match-destinations - параметр, который является IP-адресом данного view
     # и используется в качестве адреса для этого сервера имен.
match-destinations { 192.168.1.254; };
     #Наш сервер может обрабатывать рекурсивные запросы для внутренних клиентов
allow-recursion { int-client; };

zone "." IN { type hint; file "named.ca"; };
zone "buch.ru" IN { type master; file "master/buch.ru.zone"; };
zone "1.168.192.IN-ADDR.ARPA" IN  { type master; file "master/1.168.192.zone"; };
zone "xn--90a0bg.xn--p1ag" IN { type master; file "master/бух.ру.zone"; };
};

# Вид для внешних зон
view "external" {
match-clients { 195.0.1.0/24; };
match-destinations { 195.0.1.15; };

zone "free-adm.ru" IN { type master;
          file "master/free-adm.ru.zone";
          allow-transfer { trusted-dns; };
          notify yes; };

zone "1.0.195.IN-ADDR.ARPA" IN  { type master;
          file "master/1.0.195.zone";
          allow-transfer { trusted-dns; };
          notify yes; };
};

key "rndc-key" { algorithm hmac-md5;
          secret "u7z0Etzw4tAJGLi9mt75jQ=="; };

#controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; }; };
controls { inet * allow {  any; } keys { "rndc-key"; }; };

Зона free-adm.ru.zone
Код: выделить все
$TTL 900
$ORIGIN free-adm.ru.
@ SOA cent.free-adm.ru. root (
                      2015042302
                      900                     ; 15 Minutes slave refresh interval
                      600                     ; 10 Minutes slave retry interval
                      2592000              ; 1 month slave copy expire time
                      900                     ; 15 Minutes NXDOMAIN cache time
                )

        NS  cent.free-adm.ru.
        ;; add Slave server
        ;; IN  NS      ns.example.host.
        MX 10 cent.free-adm.ru.

@               A 195.0.1.15

cent            A 195.0.1.15
gate            A 195.0.1.2
sergey          A 195.0.1.3
print           A 195.0.1.5

Зона buch.ru.zone
Код: выделить все
$TTL 900
$ORIGIN buch.ru.
@ SOA ns.buch.ru. root (
                  2015060400
                  900                     ; 15 Minutes slave refresh interval
                  600                     ; 10 Minutes slave retry interval
                  2592000              ; 1 month slave copy expire time
                  900                     ; 15 Minutes NXDOMAIN cache time
                )
                NS  ns.buch.ru.
                MX 10 srv.buch.ru.

@               A 192.168.1.254
ns              A 192.168.1.254
srv             A 192.168.1.254
test            A 192.168.1.254

comp1           A 192.168.1.1
comp2           A 192.168.1.2

Кириллическая зона бух.ру.zone
Код: выделить все
$TTL 900
$ORIGIN xn--90a0bg.xn--p1ag.
@ SOA xn--m1ai.xn--90a0bg.xn--p1ag. root (
                  2015070700
                  900                     ; 15 Minutes slave refresh interval
                  600                     ; 10 Minutes slave retry interval
                  2592000         ; 1 month slave copy expire time
                  900                     ; 15 Minutes NXDOMAIN cache time
                )
                NS  xn--m1ai.xn--90a0bg.xn--p1ag.
                MX 10 xn--b1a1ac.xn--90a0bg.xn--p1ag.

@               A 192.168.1.254
xn--m1ai        A 192.168.1.254
xn--b1a1ac      A 192.168.1.254
test            A 192.168.1.254

xn--80afxl5e    A 192.168.1.1
xn--80a0a4c     A 192.168.1.2

Обратная зона 1.168.192.zone
Код: выделить все
$TTL 900
$ORIGIN 1.168.192.IN-ADDR.ARPA.

@ SOA ns.buch.ru. root (
                2015050300
                900                     ; 15 Minutes slave refresh interval
                600                     ; 10 Minutes slave retry interval
                2592000              ; 1 month slave copy expire time
                900                     ; 15 Minutes NXDOMAIN cache time
           )

         NS ns.buch.ru.

254   PTR buch.ru.
254   PTR ns.buch.ru.
254   PTR srv.buch.ru.

1     PTR comp1.buch.ru.
2     PTR comp2.buch.ru.

Обратная зона 1.0.195.zone
Код: выделить все
$TTL 900
$ORIGIN 1.0.195.in-addr.arpa.
@ SOA cent.free-adm.ru. root (
                        2015042800
                        900                     ; 15 Minutes slave refresh interval
                        600                     ; 10 Minutes slave retry interval
                        2592000         ; 1 month slave copy expire time
                        900                     ; 15 Minutes NXDOMAIN cache time
                      )

      NS cent.free-adm.ru.

15              PTR cent.free-adm.ru.

2               PTR gate.free-adm.ru.
3               PTR sergey.free-adm.ru.
5               PTR print.free-adm.ru.

Создание заготовки файла зоны
Код: выделить все
echo -e "\$TTL 30m\n\$ORIGIN yandex.ru.ru." > yandex.ru.zone
dig yandex.ru -t SOA >> yandex.ru.zone
dig yandex.ru -t ns  >> yandex.ru.zone
dig yandex.ru -t MX  >> yandex.ru.zone

Преобразование кириллических имён
Код: выделить все
echo "бух.ру" | idn
xn--90a0bg.xn--p1ag

Логирование событий
Код: выделить все
logging {
        channel default { file "/var/log/named/default.log" versions 3 size 5m;
                severity dynamic;
                print-time yes;
        };

        channel general { file "/var/log/named/general.log" versions 3 size 5m;
                severity dynamic;
                print-time yes;
        };

        channel database { file "/var/log/named/database.log" versions 3 size 5m;
                severity dynamic;
                print-time yes;
        };

        channel security { file "/var/log/named/security.log" versions 3 size 5m;
                severity dynamic;
                print-time yes;
        };

        channel config { file "/var/log/named/config.log" versions 3 size 5m;
                severity dynamic;
                print-time yes;
        };

        channel resolver { file "/var/log/named/resolver.log" versions 3 size 5m;
                severity dynamic;
                print-time yes;
        };

        channel xfer-in { file "/var/log/named/xfer-in.log" versions 3 size 5m;
                severity dynamic;
                print-time yes;
        };

        channel xfer-out { file "/var/log/named/xfer-out.log" versions 3 size 5m;
                severity dynamic;
                print-time yes;
        };

        channel notify { file "/var/log/named/notify.log" versions 3 size 5m;
                severity dynamic;
                print-time yes;
        };

        channel client { file "/var/log/named/client.log" versions 3 size 5m;
                severity dynamic;
                print-time yes;
        };

        channel unmatched { file "/var/log/named/unmatched.log" versions 3 size 5m;
                severity dynamic;
                print-time yes;
        };

        channel network { file "/var/log/named/network.log" versions 3 size 5m;
                severity dynamic;
                print-time yes;
        };

        channel update { file "/var/log/named/update.log" versions 3 size 5m;
                severity dynamic;
                print-time yes;
        };

        channel update-security { file "/var/log/named/update-security.log" versions 3 size 5m;
                severity dynamic;
                print-time yes;
        };

        channel queries { file "/var/log/named/queries.log" versions 3 size 5m;
                severity dynamic;
                print-time yes;
        };

        channel query-errors { file "/var/log/named/query-errors.log" versions 3 size 5m;
                severity dynamic;
                print-time yes;
        };

        channel dispatch { file "/var/log/named/dispatch.log" versions 3 size 5m;
                severity dynamic;
                print-time yes;
        };

        channel dnssec { file "/var/log/named/dnssec.log" versions 3 size 5m;
                severity dynamic;
                print-time yes;
        };

        channel lame-servers { file "/var/log/named/lame-servers.log" versions 3 size 5m;
                severity dynamic;
                print-time yes;
        };

        channel delegation-only { file "/var/log/named/delegation-only.log" versions 3 size 5m;
                severity dynamic;
                print-time yes;
        };

        channel edns-disabled { file "/var/log/named/edns-disabled.log" versions 3 size 5m;
                severity dynamic;
                print-time yes;
        };

        channel rpz { file "/var/log/named/rpz.log" versions 3 size 5m;
                severity dynamic;
                print-time yes;
        };

        channel rate-limit { file "/var/log/named/rate-limit.log" versions 3 size 5m;
                severity dynamic;
                print-time yes;
        };

        channel cname { file "/var/log/named/cname.log" versions 3 size 5m;
                severity dynamic;
                print-time yes;
        };

        category default { default; };
        category general { general; };
        category database { database; };
        category security { security; };
        category config { config; };
        category resolver { resolver; };
        category xfer-in { xfer-in; };
        category xfer-out { xfer-out; };
        category notify { notify; };
        category client { client; };
        category unmatched { unmatched; };
        category network { network; };
        category update { update; };
        category update-security { update-security; };
        category queries { queries; };
        category query-errors { query-errors; };
        category dispatch { dispatch; };
        category dnssec { dnssec; };
        category lame-servers { lame-servers; };
        category delegation-only { delegation-only; };
        category edns-disabled { edns-disabled; };
        category rpz { rpz; };
        category rate-limit { rate-limit; };
        category cname { cname; };
};

Если требуется запретить использование IPv6 для DNS-сервера, то необходимо внести строку следующего содержания в конец файла /etc/sysconfig/named
Код: выделить все
OPTIONS="-4"



 Обновление списка корневых DNS-серверов 
Состав списка корневых серверов хоть редко, но меняется.
Код: выделить все
dig +bufsize=1200 +norec @a.root-servers.net NS . @a.root-servers.net > /var/named/named.ca

Данной командой получаем список серверов сгруппированных по типу адреса (IPv4 отдельно от IPv6)


 Ошибки 
Недостаток прав доступа проявляется так
Код: выделить все
error writing NTA file for view 'default': permission denied
error writing NTA file for view 'external': permission denied
error writing NTA file for view '_bind': permission denied

Решение:
добавляем право записи для группы и меняем владельца на named:named для всей структуры файлов и каталогов ниже /var/named
Код: выделить все
chmod g+w /var/named
chown -R named:named /var/named

В log падают сообщения типа:
Код: выделить все
none:103: 'max-cache-size 90%' - setting to 14418MB (out of 16021MB)

Решение:
Добавляем в секцию options конфигурационного файла /etc/named.conf параметр max-cache-size.
Максимальный объем памяти для кэша сервера в байтах. Когда количество данных в кэше достигнет этого предела, сервер заставит записи истекать преждевременно на основе стратегии на основе LRU, чтобы предел не превышался. Ключевое слово unlimited, или значение 0, не будет ограничивать размер кэша; записи будут удалены из кэша только после истечения срока их TTL. Любые положительные значения менее 2 МБ будут проигнорированы и сброшены на 2 МБ. На сервере с несколькими представлениями предел применяется отдельно к кешу каждого представления. Значение по умолчанию не ограничено.
Код: выделить все
max-cache-size 10m;
Для желающих отблагодарить
SB: 4274320029755744
QIWI: +79175241450
Аватар пользователя
ROOT
Администратор
 
Сообщений: 145
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Вернуться в Fedora

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron