DNS сервер Bind9 на FreeBSD

Crystal_128_yast_dnsСегодня поднимем свой сервер имен, для того чтобы связать доменные имена с ip-адресами. Для этого нам понадобится минимум один выделенный сервер с установленной FreeBSD.

Установка Bind9

Перед установкой не забудьте обновить порты.

# cd /usr/ports/dns/bind9
# make install clean
# rehash

Теперь добавим автозагрузку бинда в /etc/rc.conf

named_enable="YES"
named_uid="bind"
named_chrootdir=""
named_flags="-s"

И перезагрузим сервак

# reboot

Настройка Bind9

Откройте для редактирования файл named.conf

# ee /etc/namedb/named.conf

И вставьте следующие директивы:

options {
        directory       "/etc/namedb";
        pid-file        "/var/run/named/pid";
        dump-file       "/var/dump/named_dump.db";
        statistics-file "/var/stats/named.stats";

        // Изменяем название, ниже расскажу зачем
        version "adw0rd dns";

        // Добавляем локальные "ip-адреса dns-серверов" вашего провайдера
        // их можно посмотреть в /etc/resolv.conf (директива "nameserver") или через утилиту nslookup
        forwarders {
                82.146.59.250;
        };

}

Рестартим bind:

# /etc/rc.d/named restart

Утилита rndc

Перейдите в каталог named:

# cd /etc/namedb/

И посмотрите, есть ли у вас файл “rndc.key”, если есть, то можете пропустить этот шаг, а если нет, то вам надо его сгененировать:

# rndc-confgen

И он выдаст примерно следующее:

# Start of rndc.conf
key "rndc-key" {
        algorithm hmac-md5;
        secret "NrDcqVcbML1XI0ZLmRrmaQ==";
};

options {
        default-key "rndc-key";
        default-server 127.0.0.1;
        default-port 953;
};

Для того чтобы сразу сохранить ключ в файл, не копируя его содерджимое, запустите с флагом

rndc-confgen -a

Создайте файл “/etc/namedb/rndc.key” и вставьте туда эти данные:

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

Теперь пришла очередь добавлять наш первый домен, который будет играть роль “мастер нс-сервера”, для того, чтобы потом другие домена использовать именно его.

Поднимаем свой master-сервер (ns1)

Для начала необходимо добавить запись о домене в named.conf, добавляйте в конец файла:

zone "adw0rd.ru" {
        type master;
        file "master/adw0rd.ru";
};

Теперь, с помощью утилиты “make-localhost” создайте первый свой master-файл, далее можно будет просто копировать любой master-файл и изменять его для других доменов.

Иногда нет этого файла в стандартной поставке, можете его скачать тут.
Вот еще могут пригодится PROTO.localhost.rev и PROTO.localhost-v6.rev.

Запускаем make-localhost, но не забудьте установить для него права на запуск!

# cd /etc/namedb/
# chmod u+x make-localhost
# ./make-localhost

Теперь скопируем localhost.rev и создадим с помощью него свой master-файл:

# cd /etc/namedb/master/
# cp localhost.rev adw0rd.ru

И доведем до следующего вида:

$TTL    3600
$ORIGIN ru.

adw0rd                      IN SOA  ns1.adw0rd.ru. root.adw0rd.ru. (
                                2009082601   ; serial number
                                43200        ; refresh
                                3600         ; retry
                                604800       ; expire
                                3600       ) ; minimum TTL

$ORIGIN adw0rd.ru.

; первым будет наш ns1.adw0rd.ru
@                     NS       ns1

; второй будет бесплатный сервис ns2.trifle.net, о нем расскажу дальше
@                     NS       ns2.trifle.net.

@                       A       82.146.63.195
localhost               A       127.0.0.1

ns1                     A       82.146.63.195
ns2                     A       195.24.128.164

www                     A       82.146.63.195
ww                      CNAME   www

Незабываем про “serial number”, его надо править при каждом изменении, например, если вы редактируете 26 августа 2009 года, то надо 2009082601, если вы в день много раз редактируете, то увеличивайте две крайние цифры в серийнике на единицу (2009082602, 2009082617 и т.д. до 99). А если редактируете 27 августа 2009, то 2009082701 и т.д.

Теперь, проверим правильность конфига при помощи утилиты named-checkconf, если все в порядке она ничего не ответит, иначе выведет лог ошибок.

# named-checkconf

После запустите “rndc reload”:

# rndc reload

Перезагружаем bind:

# /etc/rc.d/named restart

Поднимаем slave-сервер (ns2)

Для того чтобы использовать свои сервера доменных имен надо минимум два нс-сервера, поэтому надо создать и второй, однако где нам достать еще один сервак? Но это не обязательно, достаточно воспользоваться бесплатными сервисами, вот короткий список сервисов, предостовляющие подобные услуги:

Разберем пример на “ns2.trifle.net”, заходим по адресу http://ns2.trifle.net, далее регистрируемся, и авторизовываемся.

Теперь, добавляем нашу домен “adw0rd.ru” и свяжем его с ip-адресом 82.146.63.195

ns2_trifle_net

Все, готово!

Проверяем работоспособность

Сначала узнаем, отдает ли нам ns1 данные по домену:

dig @ns1.adw0rd.ru adw0rd.ru

Если выдало примерно следующее:

; <<>> DiG 9.3.4-P1 <<>> @ns1.adw0rd.ru adw0rd.ru
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 3703
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;adw0rd.ru.                       IN      A

;; AUTHORITY SECTION:
ru.                     1814    IN      SOA     ns.ripn.net. hostmaster.ripn.net. 4015239 7200 900 2592000 3600

;; Query time: 10 msec
;; SERVER: 82.146.63.195#53(82.146.63.195)
;; WHEN: Wed Aug 26 12:15:12 2009
;; MSG SIZE  rcvd: 83

то все плохо, думайте над своим мастер-файлом, где то вы накосячили… либо не ребутнули неймед-сервак.

А если такое, то все в порядке:

; <<>> DiG 9.3.4-P1 <<>> @ns1.adw0rd.ru adw0rd.ru
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22582
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;adw0rd.ru.                     IN      A

;; ANSWER SECTION:
adw0rd.ru.              3600    IN      A       82.146.63.195

;; AUTHORITY SECTION:
adw0rd.ru.              3600    IN      NS      ns1.adw0rd.ru.
adw0rd.ru.              3600    IN      NS      ns2.trifle.net.

;; ADDITIONAL SECTION:
ns1.adw0rd.ru.         3600    IN      A       82.146.63.195
ns2.trifle.net.         166787  IN      A       195.24.128.164

;; Query time: 3 msec
;; SERVER: 82.146.63.195#53(82.146.63.195)
;; WHEN: Wed Aug 26 12:16:14 2009
;; MSG SIZE  rcvd: 129

Теперь вы можете вписать у регистратора – свои DNS сервера, примерно так:

ns1.adw0rd.ru 82.146.63.195
ns2.trifle.net

Адрес “82.146.63.195” необходим тут, для того чтобы домен делегировался корректно, так как сейчас ваш домен еще не связан… 😉

Для других доменов, например “blgo.ru” достаточно

ns1.adw0rd.ru
ns2.trifle.net

Как узнать версию программного обеспечения DNS сервера?

Помните, я в конфиге “named.conf” установил директиву “version” и сказал что позже объясню зачем… А нужно это для того, чтобы кулхацкеры не узнали версию бинда, потом они могут сделать очень забавные вещи, погуглите на эту тему и все узнаете.

Выполните команду

# dig @ns1.adw0rd.ru version.bind chaos txt

и вы увидите версию бинда…


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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Unlix.ru © Все права защищены 2015 - 2024

Копирование материалов с сайта Unlix.ru без указания полной ссылки на источник ЗАПРЕЩЕНО!