PDF Печать E-mail

ДНС-сервер BIND9

 

 

BIND (Berkeley Internet Name Domain, до этого: Berkeley Internet Name Daemon) — открытая и наиболее распространённая реализация DNS-сервера.

 

Установка BIND9

 

Для начала нам необходимо установить сам сервер следующей командой:

 

sudo su

 

sudo apt-get install bind9

 

Укажем к каким DNS серверам будет обращатся наш сервер:

 

 

nano /etc/bind/named.conf.options

 

forwarders {

217.195.65.9;

217.195.66.253;

8.8.8.8;

};

 

Перезапускаем bind:

 

/etc/init.d/bind9 restart

 

Не забываем поменять DNS адрес в /etc/resolv.conf на свой.

 

На сколько я понял кеш хранится в памяти и не сохранется при перезапуске.

Проверим, кеширует ли DNS:

Набираем (спросить адрес, например, www.ru. (которого еще нет в кэше), затем спросить ещё раз. Время запроса должно быть меньше):

dig @localhost www.ru

...

;; Query time: 4825 msec

;; SERVER: 127.0.0.1#53(127.0.0.1)

...

[ждём 5 сек.]

dig @localhost www.ru

...

;; Query time: 2 msec

;; SERVER: 127.0.0.1#53(127.0.0.1)

...

 

Утилита DIG.

 

dig – утилита для запросов информации с серверов DNS, входящая в пакет bind9. Использование:

 

dig www.ru

 

; <<>> DiG 9.7.1-P2 <<>> www.ru

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45434

;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 13, ADDITIONAL: 0


;; QUESTION SECTION:

;www.ru.                                IN      A


;; ANSWER SECTION:

www.ru.                 55760   IN      A       194.87.0.50


;; AUTHORITY SECTION:

.                       75260   IN      NS      a.root-servers.net.

.                       75260   IN      NS      e.root-servers.net.

.                       75260   IN      NS      c.root-servers.net.

.                       75260   IN      NS      i.root-servers.net.

.                       75260   IN      NS      j.root-servers.net.

.                       75260   IN      NS      d.root-servers.net.

.                       75260   IN      NS      k.root-servers.net.

.                       75260   IN      NS      f.root-servers.net.

.                       75260   IN      NS      h.root-servers.net.

.                       75260   IN      NS      b.root-servers.net.

.                       75260   IN      NS      l.root-servers.net.

.                       75260   IN      NS      g.root-servers.net.

.                       75260   IN      NS      m.root-servers.net.


;; Query time: 0 msec

;; SERVER: 127.0.0.1#53(127.0.0.1)

;; WHEN: Thu Nov 25 10:47:55 2010

;; MSG SIZE  rcvd: 251

 

Рассмотрим подробнее вывод:

 

; <<>> DiG 9.7.1-P2 <<>> www.ru

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45434

;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 13, ADDITIONAL: 0

 

Здесь dig рассказывает о себе и информацию, которую он принял от DNS серверов. Вывод этой информации можно отключить, воспользовавшись ключом +[no]comments.

 

; QUESTION SECTION:

;www.ru. IN A

 

Информация, которую мы запрашиваем. Вывод этой информации можно отключить, воспользовавшись ключом +[no]question.

 

;; ANSWER SECTION:

www.ru.                 55760   IN      A       194.87.0.50

 

Ответ. www.ru имеет адрес 194.87.0.50. Вывод этой информации тоже можно отключить, воспользовавшись ключом +[no]answer.

 

;; AUTHORITY SECTION:

.                       75260   IN      NS      a.root-servers.net.

.                       75260   IN      NS      e.root-servers.net.

.                       75260   IN      NS      c.root-servers.net.

.                       75260   IN      NS      i.root-servers.net.

.                       75260   IN      NS      j.root-servers.net.

.                       75260   IN      NS      d.root-servers.net.

.                       75260   IN      NS      k.root-servers.net.

.                       75260   IN      NS      f.root-servers.net.

.                       75260   IN      NS      h.root-servers.net.

.                       75260   IN      NS      b.root-servers.net.

.                       75260   IN      NS      l.root-servers.net.

.                       75260   IN      NS      g.root-servers.net.

.                       75260   IN      NS      m.root-servers.net.

 

Authority секция. Говорит нам о том, что www.ru обслуживают 13 DNS серверов. Вывод этой информации можно отключить, воспользовавшись ключом +[no]authority.

 

;; Query time: 0 msec

;; SERVER: 127.0.0.1#53(127.0.0.1)

;; WHEN: Thu Nov 25 10:47:55 2010

;; MSG SIZE  rcvd: 251

 

Статистика. Вывод этой информации можно отключить, воспользовавшись ключом +[no]stats.

 

Dig может выполнять запросы A, NS, MX, TXT и ANY. Запросим адрес www.ru:


dig www.ru A +noall +answer


;; global options: +cmd

www.ru.                 55518   IN      A       194.87.0.50

 

Запись A (address record) или запись адреса связывает имя хоста с адресом IP.

 

Запросим список NS серверов:

 

dig www.ru NS +noall +answer


;; global options: +cmd

www.ru.                 55460   IN      NS      ns1.demos.net.

www.ru.                 55460   IN      NS      ns.demos.su.

 

Запись NS (name server) указывает на DNS-сервер для данного домена.

 

Запросим список MX серверов:

 

dig www.ru MX +noall +answer

 

;; global options: +cmd

www.ru.                 18554   IN      MX      5 hq.demos.ru.

 

Запись MX (mail exchange) или почтовый обменник указывает сервер(ы) обмена почтой для данного домена.

 

Теперь запросим всё вместе.

 

dig www.ru ANY +noall +answer


;; global options: +cmd

www.ru.                 18515   IN      MX      5 hq.demos.ru.

www.ru.                 55396   IN      NS      ns.demos.su.

www.ru.                 55396   IN      NS      ns1.demos.net.

www.ru.                 55396   IN      A       194.87.0.50


Быстрый ответ:

 

dig www.ru +short

 

194.87.0.50

 

Быстрый ответ для MX:

 

dig www.ru mx +short

 

5 hq.demos.ru.

 

Если мало информации - можно воспользоваться ключом +noall.

 

dig +nocmd www.ru mx +noall +answer

 

www.ru.                 18437   IN      MX      5 hq.demos.ru.

 

Запросим SOA записи для зоны .ru используя ключ +multiline

 

dig +nocmd ru any +multiline +noall +answer

 

ru.                     86399 IN SOA ns.ripn.net. hostmaster.ripn.net. (

4017065    ; serial

86400      ; refresh (1 day)

14400      ; retry (4 hours)

2592000    ; expire (4 weeks 2 days)

3600       ; minimum (1 hour)

)

ru.                     86399 IN NS ns5.msk-ix.net.

ru.                     86399 IN NS ns.ripn.net.

ru.                     86399 IN NS e.dns.ripn.net.

ru.                     86399 IN NS ns9.ripn.net.

ru.                     86399 IN NS ns2.nic.fr.

ru.                     86399 IN NS f.dns.ripn.net.

 

Запись SOA (Start of Authority) или начальная запись зоны указывает, на каком сервере хранится эталонная информация о данном домене, содержит контактную информацию лица, ответственного за данную зону, тайминги (параметры времени) кеширования зонной информации и взаимодействия DNS-серверов.

 

Смотрим PTR запись:

 

dig -x 194.87.0.50 +short

 

www.ru.

 

Запись PTR (pointer) или запись указателя связывает IP хоста с его каноническим именем.

 

Отправляем запрос другому DNS серверу.

 

dig @ns1.demos.net www.ru ANY +short


ns.demos.su. ncc.demos.net. 2004121602 28800 7200 604800 86400

ns1.demos.net.

ns.demos.su.

194.87.0.50

5 hq.demos.ru.

 

 

Запрашиваем много адресов по списку.

 

dig -f /home/brj/my-ip-list.txt

 

Tracing


# dig www.ru +trace +short

NS C.ROOT-SERVERS.NET. from server 127.0.0.1 in 0 ms.

NS D.ROOT-SERVERS.NET. from server 127.0.0.1 in 0 ms.

NS E.ROOT-SERVERS.NET. from server 127.0.0.1 in 0 ms.

NS F.ROOT-SERVERS.NET. from server 127.0.0.1 in 0 ms.

NS G.ROOT-SERVERS.NET. from server 127.0.0.1 in 0 ms.

NS H.ROOT-SERVERS.NET. from server 127.0.0.1 in 0 ms.

NS I.ROOT-SERVERS.NET. from server 127.0.0.1 in 0 ms.

NS J.ROOT-SERVERS.NET. from server 127.0.0.1 in 0 ms.

NS K.ROOT-SERVERS.NET. from server 127.0.0.1 in 0 ms.

NS L.ROOT-SERVERS.NET. from server 127.0.0.1 in 0 ms.

NS M.ROOT-SERVERS.NET. from server 127.0.0.1 in 0 ms.

NS A.ROOT-SERVERS.NET. from server 127.0.0.1 in 0 ms.

NS B.ROOT-SERVERS.NET. from server 127.0.0.1 in 0 ms.

A 194.87.0.50 from server ns1.demos.net in 79 ms.

 

Смотрим SOA информацию.

 

dig www.ru +nssearch


SOA ns.demos.su. ncc.demos.net. 2004121602 28800 7200 604800 86400 from server ns.demos.su in 14 ms.

SOA ns.demos.su. ncc.demos.net. 2004121602 28800 7200 604800 86400 from server ns1.demos.net in 15 ms.

 

Добавляем запись в днс-сервер.

 

nano /etc/bind/named.conf

 

Добавляем путь к конфиг-файлу новой зоны:

 

include "/etc/bind/myzone.conf";

 

Теперь создаем этот файл:

 

touch /etc/bind/myzone.conf

 

Делаем владельцем этого файла пользователя "bind":

 

chown bind:bind /etc/bind/myzone.conf

 

Указываем путь к файлу, содержащему записи, что будем добавлять:

 

nano /etc/bind/myzone.conf

 

zone "megaholod.lan" IN {

type master;

file "/etc/bind/megaholod.lan";

allow-update { none; };

};

 

Где allow-update - каким хостам разрешено посылать динамические изменения зоны первичному серверу.

 

Создаем этот файл:

 

touch /etc/bind/megaholod.lan

 

Меняем владельца файла:

 

chown bind:bind /etc/bind/megaholod.lan

 

nano /etc/bind/megaholod.lan

 

Вносим записи для добавления:

 

$TTL    86400

$ORIGIN megaholod.lan.

@                       1D IN SOA       @ root (

1              ; Serial Number

3H              ; обновление через 3 часа

15M             ; повторение попытки через 15 мин

1W              ; устаревание через неделю

1D )            ; minimum


1D IN NS        @

1D IN A         10.10.10.4

 

Где TTL - Допустимое время хранения ответов других днс-серверов в кэше (86400сек=1день).

 

@ - означает, что запись зоны будет совпадать с именем домена.

 

Serial Number - Серийный номер файла базы данных DNS. Этот номер увеличивается на единицу при каждом изменении файла, таким образом дополнительные сервера имен этой зоны узнают об изменении, и загружают самую последнюю информацию.

 

Таким образом мы добавили записи:

 

- SOA, т.е. указали что эталонная информация о megaholod.lan хранится на нашем сервере (@), указали тайминги.

- NS, т.е. указали что ДНС-сервером для домена megaholod.lan будет наш сервер (@).

- A, т.е. связали имя megaholod.lan с ip-адресом 10.10.10.4 .

 

В /etc/hosts машины megaholod.lan добавляем:

 

10.10.10.4 megaholod.lan

 

Перезапускаем сервер:

 

/etc/init.d/bind9 restart

 

Проверяем сначала на серваке, а затем на на любом компе в лок. сети, и для линукс и для виндовс команда одинаковая:

 

nslookup megaholod.lan

 

Команды очистки кэша ДНС

 

Очищаем кеш dns на серваке:

 

rndc flush

 

Очищаем кеш dns в windows:

 

ipconfig /flushdns

 

Достаточно подробно и на русском описаны многие параметры BIND9 здесь:

http://www.bog.pp.ru/work/bind.html#namedconf