Главная
Главная Руководства FreeBSD › Свой DNS сервер на FreeBSD 10



Автор:

Статья опубликована: 2017-01-16 22:09:30
Последние правки: 2019-10-15 00:36:27

Начиная с FreeBSD 10, в базовый состав операционной системы DNS-сервер не входит и его нужно устанавливать из портов отдельно. Этим мы и займемся.

- Переработка статьи об установке bind 9.9
- Статья подходит для установки и настройки bind 9.12
- Настройка серверная, а потому наш named, как и положено на защищенном сервере, будет резвиться в песочнице и отдавать только свои зоны.
  • Использованные версии ПО:
    # uname -sr
    FreeBSD 10.3-RELEASE
    
    # pkg info | grep bind
    bind910-9.10.4P5_1             BIND DNS suite with updated DNSSEC and DNS64
    # pkg info | grep bind
    bind912-9.12.0_3               BIND DNS suite with updated DNSSEC and DNS64
    

  • Установка
    # cd /usr/ports/dns/bin910
    # make install clean
    
    Конфиг:
    [ ] 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
    [ ] GEOIP           Allow geographically based ACL.
    [x] IDN             International Domain Names support
    [x] IPV6            IPv6 protocol support
    [ ] JSON            JSON file/format/parser support
    [x] LARGE_FILE      64-bit file support
    [ ] MINCACHE        Use the mincachettl patch
    [ ] 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] SIGCHASE        dig/host/nslookup will do DNSSEC validation
    [ ] 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
    [ ] DLZ_STUB        DLZ stub driver
    ─────────────────────── GSSAPI Security API support ──────────────────────
    ( ) GSSAPI_BASE     Using Heimdal in base
    ( ) GSSAPI_HEIMDAL  Using security/heimdal
    ( ) GSSAPI_MIT      Using security/krb5
    (*) GSSAPI_NONE     Disable
    ──────────────────── Choose which crypto engine to use ───────────────────
    (*) SSL             Build with OpenSSL (Required for DNSSEC)
    ( ) NATIVE_PKCS11   Use PKCS#11 native API (**READ HELP**)
    ─────────── Enable GOST ciphers, needs SSL (see help on 8 and 9) ─────────
    ( ) GOST            GOST raw keys (new default)
    ( ) GOST_ASN1       GOST using ASN.1
    

  • Настройка

    /etc/rc.conf:
    named_enable="YES"
    named_chrootdir="/var/named"
    
    /var/named - это и есть наша песочница, где будет жить named

    Делаем песочницу. Перед этим обязательно останавливаем named, если он вдруг был запущен!
    # делаем директорию песочницы в /var
    # mkdir -p /var/named/usr/local/etc/
    # переносим в песочницу конфиг из /usr/local/etc
    # mv /usr/local/etc/namedb /var/named/usr/local/etc/
    # делаем ссылку на namedb из /var/named/usr/local/etc в /usr/local/etc
    # cd /usr/local/etc
    # ln -s /var/named/usr/local/etc/namedb
    


  • Черновик

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

    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-сервером.


  • Запускаем
    # /usr/local/etc/rc.d/named start