[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: DNS сервер своими руками при помощи Bind 9.5
PandoraBox2007
user posted image

Первоисточник здесь


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

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

Цитата
<pre class="sh_sourceCode" rel="code"># cd /usr/ports/dns/bind95
# make install clean
# rehash</span></pre>


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

Цитата
<pre class="sh_sourceCode" rel="code">named_enable="YES"
named_uid="bind"
named_chrootdir=""
named_flags="-s"</span></pre>


И перезагрузим сервак
Цитата
<pre class="sh_sourceCode" rel="code"># reboot</span></pre>

или
Цитата
<pre class="sh_sourceCode" rel="code">shutdown -r now</span></pre>


Настройка Bind 9.5
    Откройте для редактирования файл named.conf
Цитата
<pre class="sh_sourceCode" rel="code"># ee /etc/namedb/named.conf</span></pre>


И вставьте следующие директивы:
Цитата
<pre class="sh_sourceCode" rel="code">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;
        };

}</span></pre>


Рестартим bind:
Цитата
<pre class="sh_sourceCode" rel="code"># /etc/rc.d/named restart</span></pre>

Утилита rndc
    Перейдите в каталог named:
Цитата
<pre class="sh_sourceCode" rel="code"># cd /etc/namedb/</span></pre>


И посмотрите, есть ли у вас файл «rndc.key», если есть, то можете пропустить этот шаг, а если нет, то вам надо его сгененировать:
Цитата
<pre class="sh_sourceCode" rel="code"># rndc-confgen</span></pre>


И он выдаст примерно следующее:
Цитата
<pre class="sh_sourceCode" rel="code"># Start of rndc.conf
key "rndc-key" {
        algorithm hmac-md5;
        secret "NrDcqVcbML1XI0ZLmRrmaQ==";
};</span></pre>

<pre
class="sh_sourceCode" rel="code">options {
        default-key "rndc-key";
        default-server 127.0.0.1;
        default-port 953;
};</span></pre>


Создайте файл «/etc/namedb/rndc.key» и вставьте туда эти данные:
Цитата
<pre class="sh_sourceCode" rel="code">key "rndc-key" {
        algorithm hmac-md5;
        secret "NrDcqVcbML1XI0ZLmRrmaQ==";
};</span></pre>


Теперь пришла очередь добавлять наш первый домен, который будет играть роль «мастер нс-сервера», для того, чтобы потом другие домена использовать именно его.
Поднимаем свой master-сервер (ns1)
    Для начала необходимо добавить запись о домене в named.conf, добавляйте в конец файла:
Цитата
<pre class="sh_sourceCode" rel="code">zone "adw0rd.ru" {
        type master;
        file "master/adw0rd.ru";
};</span></pre>

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

Запускаем make-localhost, но не забудьте установить для него права на запуск!
Цитата
<pre class="sh_sourceCode" rel="code"># cd /etc/namedb/
# chmod u+x make-localhost
# ./make-localhost</span></pre>


Теперь скопируем localhost.rev и создадим с помощью него свой master-файл:
Цитата
<pre class="sh_sourceCode" rel="code"># cd /etc/namedb/master/
# cp localhost.rev adw0rd.ru</span></pre>


И доведем до следующего вида:
Цитата
<pre class="sh_sourceCode" rel="code">$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</span></pre>


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

Теперь, проверим правильность конфига при помощи утилиты named-checkconf, если все в порядке она ничего не ответит, иначе выведет лог ошибок.
Цитата
<pre class="sh_sourceCode" rel="code"># named-checkconf</span></pre>


После запустите «rndc reload»:
Цитата
<pre class="sh_sourceCode" rel="code"># rndc reload</span></pre>


Перезагружаем bind:
Цитата
<pre class="sh_sourceCode" rel="code"># /etc/rc.d/named restart</span></pre>

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

    • ns2.trifle.net
    • xname.org
    • www.dyndns.com
    • www.editdns.net
    • zoneedit.com
    Разберем пример на «ns2.trifle.net», заходим по адресу http://ns2.trifle.net, далее регистрируемся, и авторизовываемся.

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

    user posted image

    Все, готово!
Проверяем работоспособность
    Сначала узнаем, отдает ли нам ns1 данные по домену:
Цитата
<pre class="sh_sourceCode" rel="code">dig @ns1.adw0rd.ru adw0rd.ru</span></pre>


Если выдало примерно следующее:
Цитата
<pre class="sh_sourceCode" rel="code">; <<>> 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</span></pre>


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

А если такое, то все в порядке:
Цитата
<pre class="sh_sourceCode" rel="code">; <<>> 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</span></pre>


Теперь вы можете вписать у регистратора — свои DNS сервера, примерно так:
Цитата
<pre class="sh_sourceCode" rel="code">ns1.adw0rd.ru 82.146.63.195
ns2.trifle.net</span></pre>


Адрес «82.146.63.195» необходим тут, для того чтобы домен делегировался корректно, так как сейчас ваш домен еще не связан... wink.gif

Для других доменов, например «blgo.ru» достаточно
Цитата
<pre class="sh_sourceCode" rel="code">ns1.adw0rd.ru
ns2.trifle.net</span></pre>

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

    Выполните команду
Цитата
<pre class="sh_sourceCode" rel="code"># dig @ns1.adw0rd.ru version.bind chaos txt</span></pre>


и вы увидите версию бинда...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.