Инструменты пользователя

Инструменты сайта


freebsd:bind9

Это старая версия документа!


Установка и настройка BIND9

root@mgmt:/usr/ports/dns/bind910# make install clean

┌────────────────────────────── bind910-9.10.4 ────────────────────────────────┐
│ ┌──────────────────────────────────────────────────────────────────────────┐ │  
│ │+[x] DOCS            Build and/or install documentation                   │ │  
│ │+[ ] FETCHLIMIT      Enable the query quotas for resolvers                │ │  
│ │+[ ] FILTER_AAAA     Enable filtering of AAAA records                     │ │  
│ │+[ ] FIXED_RRSET     Enable fixed rrset ordering                          │ │  
│ │+[x] GEOIP           Allow geographically based ACL.                      │ │  
│ │+[x] IDN             International Domain Names support                   │ │  
│ │+[ ] IPV6            IPv6 protocol support                                │ │  
│ │+[ ] LARGE_FILE      64-bit file support                                  │ │  
│ │+[x] LINKS           Create conf file symlinks in /usr/local              │ │  
│ │+[ ] MINCACHE        Use the mincachettl patch                            │ │  
│ │+[ ] NEWSTATS        Enable alternate xml statistics channel format       │ │  
│ │+[ ] PORTREVISION    Show PORTREVISION in the version string              │ │  
│ │+[ ] PYTHON          Build with Python utilities                          │ │  
│ │+[ ] QUERYTRACE      Enable the very verbose query tracelogging           │ │  
│ │+[ ] RPZ_NSDNAME     Enable RPZ NSDNAME policy records                    │ │  
│ │+[ ] RPZ_NSIP        Enable RPZ NSIP trigger rules                        │ │  
│ │+[x] RRL             Response Rate Limiting                               │ │  
│ │+[x] SIGCHASE        dig/host/nslookup will do DNSSEC validation          │ │  
│ │+[x] START_LATE      Start BIND late in the boot process                  │ │  
│ │+[x] THREADS         Threading support                                    │ │  
│ │──────────────────────── Dynamically Loadable Zones ──────────────────────│ │  
│ │+[ ] DLZ_POSTGRESQL  DLZ Postgres driver                                  │ │  
│ │+[ ] DLZ_MYSQL       DLZ MySQL driver (no threading)                      │ │  
│ │+[ ] DLZ_BDB         DLZ BDB driver                                       │ │  
│ │+[ ] DLZ_LDAP        DLZ LDAP driver                                      │ │  
│ │+[ ] DLZ_FILESYSTEM  DLZ filesystem driver                                │ │  
│ └─────v(+)─────────────────────────────────────────────────────────68%─────┘ │  
├──────────────────────────────────────────────────────────────────────────────┤  
│                       <  OK  >            <Cancel>                           │  
└──────────────────────────────────────────────────────────────────────────────┘  

Installing bind910-9.10.4...
**********************************************************************
*            _  _____ _____ _____ _   _ _____ ___ ___  _   _         *
*           / \|_   _|_   _| ____| \ | |_   _|_ _/ _ \| \ | |        *
*          / _ \ | |   | | |  _| |  \| | | |  | | | | |  \| |        *
*         / ___ \| |   | | | |___| |\  | | |  | | |_| | |\  |        *
*        /_/   \_\_|   |_| |_____|_| \_| |_| |___\___/|_| \_|        *
*                                                                    *
*   BIND requires configuration of rndc, including a "secret" key.   *
*    The easiest, and most secure way to configure rndc is to run    *
*   'rndc-confgen -a' to generate the proper conf file, with a new   *
*            random key, and appropriate file permissions.           *
*                                                                    *
*     The /usr/local/etc/rc.d/named script will do that for you.     *
*                                                                    *
**********************************************************************

===> SECURITY REPORT: 
      This port has installed the following files which may act as network
      servers and may therefore pose a remote security risk to the system.
/usr/local/sbin/named-journalprint
/usr/local/sbin/named
/usr/local/sbin/rndc-confgen
/usr/local/sbin/dnssec-verify
/usr/local/sbin/ddns-confgen
/usr/local/sbin/dnssec-dsfromkey
/usr/local/bin/host
/usr/local/sbin/nsec3hash
/usr/local/sbin/dnssec-signzone
/usr/local/bin/nsupdate
/usr/local/sbin/rndc
/usr/local/sbin/lwresd
/usr/local/bin/dig
/usr/local/sbin/dnssec-revoke
/usr/local/sbin/isc-hmac-fixup
/usr/local/sbin/dnssec-keygen
/usr/local/bin/delv
/usr/local/sbin/named-checkzone
/usr/local/sbin/dnssec-keyfromlabel
/usr/local/sbin/dnssec-importkey
/usr/local/sbin/named-checkconf
/usr/local/sbin/genrandom
/usr/local/sbin/named-rrchecker
/usr/local/bin/nslookup
/usr/local/sbin/dnssec-settime

    This port has installed the following startup scripts which may cause
    these network services to be started at boot time.
/usr/local/etc/rc.d/named

    If there are vulnerabilities in these programs there may be a security
    risk to the system. FreeBSD makes no guarantee about the security of
    ports included in the Ports Collection. Please type 'make deinstall'
    to deinstall the port if this is a concern.

    For more information, and contact details about the security
    status of this software, see the following webpage: 
https://www.isc.org/software/bind
===>  Cleaning for libxml2-2.9.3
===>  Cleaning for GeoIP-1.6.9
===>  Cleaning for idnkit-1.0_5
===>  Cleaning for libedit-3.1.20150325_2
===>  Cleaning for bind910-9.10.4
root@mgmt:/usr/ports/dns/bind910# rehash 
root@mgmt:/usr/ports/dns/bind910# pkg info | grep bind
bind910-9.10.4                 BIND DNS suite with updated DNSSEC and DNS64
root@mgmt:/usr/ports/dns/bind910#  

После завершения установки, проверяю версию установленного BIND:

named -v

Настройка

Для работы в chroot окружении в /etc/rc.conf добавляю:

named_enable="YES"
named_chrootdir="/var/named"
altlog_proglist="named"

/var/named - это и есть песочница, где named будет жить

Делаем песочницу, которая раньше делалась в FreeBSD автоматом

mkdir -p /var/named/usr/local/etc/
mkdir -p /var/named/var/dump
mkdir -p /var/named/var/run/named
mkdir -p /var/named/var/stats
mkdir -p /var/named/dev
mv /usr/local/etc/namedb /var/named/usr/local/etc/
cd /usr/local/etc
ln -s /var/named/usr/local/etc/namedb
mkdir -p /var/run/named

Для pid и session.key файлов и создаю такие ссылки:

ln -s /var/named/var/run/named/pid pid
ln -s /var/named/var/run/named/session.key session.key
ls -l /var/run/named/
total 1
lrwxr-xr-x  1 root  wheel  28 13 февр. 13:00 pid -> /var/named/var/run/named/pid
lrwxr-xr-x  1 root  wheel  36 13 февр. 13:00 session.key -> /var/named/var/run/named/session.key

Создаю devfs правило для использования chroot окружения. Добавляю в /etc/devfs.rules, если файла нет нужно создать:

cat devfs.rules 
# Правила для named chroot dev
#
[devfsrules_named_chroot=5]
add hide
add path run unhide
add path random unhide

Добавляю в в /etc/fstab:

devfs             /var/named/dev  devfs   rw,ruleset=5      0     0

Монтирую devfs файловую систему:

mount /var/named/dev

Черновик

/usr/local/etc/namedb/named.conf

cat named.conf options {

      // All file and path names are relative to the chroot directory,
      // if any, and should be fully qualified.
      directory       "/usr/local/etc/namedb/working"; // Рабочий каталог
      pid-file        "/var/run/named/pid"; // местонахождение pid
      dump-file       "/var/dump/named_dump.db"; // где хранить дамп
      statistics-file "/var/stats/named.stats"; // где хранить статистику
      listen-on       { 127.0.0.1; 95.31.208.14; 10.216.130.1; };

listen-on-v6 { ::1; }; allow-query { any; }; Разрешаю посылать запросы только из любой сети

      allow-recursion {10.216.130.0/24; 127.0.0.1; };
      version         "made in USSR"; // строка выдаваемая в ответ на запро о версии
      // Игнорировать запросы blackhole
      // DNS-сервер не посылает запросы к DNS-серверам из этого списка 
      // и не отвечает на запросы, получаемые от этих серверов.
      blackhole { 
      0.0.0.0/8;
      10.0.0.0/8;
      169.254.0.0/16;
      172.16.0.0/12;
      192.0.2.0/24;
      192.168.0.0/16;
      224.0.0.0/4;
      240.0.0.0/4;
      };
      disable-empty-zone "255.255.255.255.IN-ADDR.ARPA";
      disable-empty-zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA";
      disable-empty-zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA";

/* Данная команда определяет адреса серверов доменных имен куда следует отправлять рекурсивные запросы. Естественно, что на этих серверах для хоста, на котором установлен named, должна быть разрешена обработка рекурсивных запросов с этого хоста. forwarders { 127.0.0.1; }; */ }; include «/usr/local/etc/namedb/rndc.key»; include «/usr/local/etc/namedb/nskey.key»;

server 94.255.92.23 {

      keys { nskey; };

};

#вид для внутренних зон view internal { #зоны резолвятся для клиентов сетей 10.216.130.0/24 и локалхоста match-clients { 127.0.0.1; 10.216.130.0/24; };

include «/usr/local/etc/namedb/named.rfc»;

zone «.» {

      type hint;
      file "/usr/local/etc/namedb/named.root";
      };

zone «mgmt.klotik.ru» {

      type master;
      file "/usr/local/etc/namedb/master/mgmt.klotik.ru";
      };

zone «130.216.10.in-addr.arpa» {

      type master;
      file "/usr/local/etc/namedb/master/mgmt.klotik.ru.rev";
      };

};

# Вид для внешних зон view external { #Для всех остальных сетей и IP которые явно не указаны в предыдущих view match-clients { any; }; zone «klotik.ru» {

      type slave;
      file "/usr/local/etc/namedb/slave/ext.klotik.ru";
      masters {94.255.92.23;};
      };

zone «92.255.94.in-addr.arpa» {

      type slave;
      file "/usr/local/etc/namedb/slave/ext.klotik.ru.rev";
      masters {94.255.92.23;};
      };

};

acl localnet { 192.168.0.0/22; 127.0.0.1;};. acl all { any; };

options { Запрет отдавать номер версии сервера. version none; Запрет отдавать имя хоста, на котором работает BIND

 hostname none; 

запрет отдавать запросы об идентификаторе server-id none; Разрешаем по-умолчанию днс запросы только от доверенных сетей

 allow-query { localnet; };

Разрешать ли рекурсивные запросы, или отдавать только те зоны, которые держит сам сервак. recursion yes; Посылка рекурсивных запросов разрешена только клиентам подсети allow-recursion { localnet; }; Игнорировать запросы blackhole DNS-сервер не посылает запросы к DNS-серверам из этого списка и не отвечает на за­просы, получаемые от этих серверов.

 blackhole { 
    0.0.0.0/8;
    10.0.0.0/8;
    169.254.0.0/16;
    172.16.0.0/12;
    192.0.2.0/24;
    192.168.0.0/16;
    224.0.0.0/4;
    240.0.0.0/4;
 };

};

allow-query: указывает список хостов, которым разрешено запрашивать все зоны name-сервера или конкретную зону внутри name-сервера.
allow-recursion: указывает список хостов, которым разрешено создавать рекурсивные запросы к name-серверу для всех зон или для конкретной зоны, обслуживаемой name-сервером.
allow-transfer: указывает список хостов, которым разрешено инициировать запросы зонной пересылки к name-серверу для всех зон или для конкретной зоны внутри name-сервера. Данное утверждение обязательно требуется в конфигурации первичного name-сервера.
allow-update: указывает список хостов, которым разрешено инициировать запросы динамического обновления.
allow-update-forwarding: указывает список хостов, которым разрешено перенаправление запросов динамического обновления (независимо от того, кто является источником запроса).
allow-notify: указывает список хостов, с которых можно принимать сообщения DNS NOTIFY, говорящих об изменениях в зонном файле. Данный список относится только к конфигурации вторичного name-сервера.
blackhole: указывает список хостов, которые входят в черный список (запрещен доступ) для инициализации любых транзакций с данным name-сервером.

  • named-checkzone – проверяет синтаксис и целостность файлов зон. Такие же проверки выполняются каждый раз перед их загрузкой bind’ом. Но считаю полезным все-таки это делать перед их загрузкой сервером имен.
  • named-compilezone – выполняет более строгие проверки, чем named-checkzone, т.к. в результате ее работы сформируется дамп актуальных зон, который в свою очередь будут использоваться named.
  • named-checkconf – утилита проверки файла-конфигурации named.conf

Домен 4-го уровня

В файл конфигурации зоны добавляю запись

www.seafile     IN      A       94.255.92.23

Проверка

Проверяю конфигурационный файл на ошибки

named-checkconf /usr/local/etc/namedb/named.conf

Запуск

/usr/local/etc/rc.d/named start
var/dump:
        user (53, 0, modified)
        gid (53, 0, modified)
var/run:
        user (53, 0, modified)
        gid (53, 0, modified)
var/run/named:
        user (53, 0, modified)
        gid (53, 0, modified)
var/stats:
        user (53, 0, modified)
        gid (53, 0, modified)
./etc missing (created)
./tmp missing (created)
./var/log missing (created)
etc/namedb/working:
        gid (0, 53, modified)
etc/namedb/dynamic:
        gid (0, 53, modified)
etc/namedb/slave:
        gid (0, 53, modified)
wrote key file "/var/named/usr/local/etc/namedb/rndc.key"
Starting named.

Посмотреть bind в процессах

top | grep named

или

ps -ax|grep named 

послушать висит ли Bind на 53 порту:

sockstat -l4 -p 53

Проверка работы

dig @127.0.0.1 ya.ru

; <<>> DiG 9.14.7 <<>> @127.0.0.1 ya.ru
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59061
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 8036ca940283cc2a39394ac25dc00f1c6567f433a198998e (good)
;; QUESTION SECTION:
;ya.ru.                         IN      A

;; ANSWER SECTION:
ya.ru.                  600     IN      A       87.250.250.242

;; Query time: 849 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: пн нояб. 04 14:44:28 MSK 2019
;; MSG SIZE  rcvd: 78

или

nslookup ya.ru 127.0.0.1
Server:         127.0.0.1
Address:        127.0.0.1#53

Non-authoritative answer:
Name:   YA.ru
Address: 87.250.250.242
Name:   ya.ru
Address: 2a02:6b8::2:242

Ссылки:
http://blog.e-shell.org/301
http://dtopcms.ru/docs/freebsd/bind99.shtml
http://www.maxblogs.ru/articles/nastroika-bind9
http://www.it-vrn.org/content/nastroyka-dns-servera-bind-v-choot-pri-obnovlenii-freebsd-93-do-10-versii.html
https://toster.ru/q/67146

freebsd/bind9.1581847101.txt.gz · Последние изменения: 2020/02/16 09:58 — alex