ДНС-сервер BIND9
BIND (Berkeley Internet Name Domain, до этого: Berkeley Internet Name Daemon) — открытая и наиболее распространённая реализация DNS-сервера.
Установка BIND9
Для начала нам необходимо установить сам сервер следующей командой:
sudo susudo 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: +cmdwww.ru. 55518 IN A 194.87.0.50 Запись A (address record) или запись адреса связывает имя хоста с адресом IP.
Запросим список NS серверов:
dig www.ru NS +noall +answer ;; global options: +cmdwww.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: +cmdwww.ru. 18554 IN MX 5 hq.demos.ru. Запись MX (mail exchange) или почтовый обменник указывает сервер(ы) обмена почтой для данного домена.
Теперь запросим всё вместе.
dig www.ru ANY +noall +answer ;; global options: +cmdwww.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 ; serial86400 ; 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 86400ns1.demos.net.ns.demos.su.194.87.0.505 hq.demos.ru. Запрашиваем много адресов по списку.
dig -f /home/brj/my-ip-list.txt Tracing # dig www.ru +trace +shortNS 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 Number3H ; обновление через 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
Dec. 12, 2010