Install BIND aka dnssec validating resolver. Как установить и настроить ДНС сервер БИНД в качестве ДНССЕК ресолвера под Windows 2000/XP. Примеры файлов named.conf, rndc.conf, master.localhost, localhost.rev
Сначала загрузим самую свежую версию BIND с офф. сайта >>> Если нам нужно установить БИНД для Window NT/2000, то нам следует использовать "BIND 9.3.4-P1 for Window NT/2000/XP/2003" или ниже (BIND8.4.6-REL), а во всех остальных случаях лучше использовать самую свежую версию, в нашем случае на текущий момент это BIND9.9.2-P2.zip
Есть несколько вариантов установки - установка в качестве службы с помощью BINDInstall.exe или ручная установка и запуск БИНД сервера из командной строки.
В первом случае после запуска BINDInstall.exe будет предложено выбрать каталог для установки, по умолчанию C:\WINDOWS\system32\dns, а также имя пользователя из под которого будет запущен сервис, по умолчанию предлагается имя пользователя "named", но можно использовать и системное "NT AUTHORITY\LocalService". После завершения будут созданы директории C:\WINDOWS\system32\dns, C:\WINDOWS\system32\dns\bin и C:\WINDOWS\system32\dns\etc, а также скопированы исполняемые файлы, создана служба/сервис "ISC BIND" и пользователь "named" (если он отсутствует):
Потому как БИНД нам не нужен как сервис и мы не планируем использовать его ежедневно (вполне хватает и Unbound DNS Resolver ака DNSSEC), то мы не будем использовать "BINDInstall.exe", распихуем всё ручками и время от времени будем запускать ДНС сервер БИНД через .bat файл из под текущего пользователя. Распаковываем архив BINDх.х.х.zip и распихуиваем по дирам:
\BIND \bin all *.dll и *.exe \data \dynamic \etc \log \man all *.html and *.pdf files \pid \zones CHANGES COPYRIGHT FAQ HISTORY migration migration-4to9 OpenSSL-LICENSE README readme1st.txt SHA256
Дальнейшие действия нужно выполнять независимо от способа установки...
Если мы хотим юзать утилиты host.exe и dig.exe, а также другие идущие в комплекте с BIND сервером, то в PATH нужно добавить %SystemRoot%\system32\dns\bin или другой полный путь к ..\bin
Следующим шагом будет создание rndc.key и если установка выполнялась с использованием "BINDInstall.exe", то достаточно будет выполнить
C:\WINDOWS\system32\dns\bin>rndc-confgen.exe -a wrote key file "C:\WINDOWS\system32\dns\etc\rndc.key"
Иногда может сохраняться в C:\WINDOWS\system32\etc\rndc.key, а если мы устанавливали БИНД ручками, то нужно выполнить rndc-confgen > ..\etc\rndc.conf, после чего из rndc.conf скопировать в named.conf строки идущие после "# Use with the following in named.conf, adjusting the allow list as needed:" до "# End of named.conf" и снять комментарии. Готовый named.conf выглядит следующим образом:
named.conf # Use with the following in named.conf, adjusting the allow list as needed: key "rndc-key" { algorithm hmac-md5; secret "zIbe16BBsJWE759ElgC0mk=="; }; # Откуда разрешено управление BIND сервером controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; }; }; # Configure BIND options options { # "listen-on-v6 port 53 { ::1; };" or "listen-on port 53 { any; };" # Нефиг слушать внешние интерфейсы listen-on port 53 { 127.0.0.1; }; # IPv6 нам не нужен listen-on-v6 { none; }; version none; hostname none; server-id none; allow-query { any; }; recursion yes; # "empty-zones-enable" or "disable-empty-zone" yes/no empty-zones-enable yes; # Путь к корневой директории (без слеша в конце!!!) # Все остальные пути указываются относительно этого каталога directory "F:\BIND"; # Если сервер запускается из коммандной строки, тогда # нужно явно указать месторасположение "pid-file" и "session-keyfile" pid-file "pid\named.pid"; session-keyfile "pid\session.key"; dump-file "data\cache_dump.db"; statistics-file "data\named_stats.txt"; memstatistics-file "data\named_mem_stats.txt"; # Those are the values you should disable if you don't want DNSSEC enabled dnssec-enable yes; # Bv9ARM.ch04.html - Chapter 4. Advanced DNS Features - Configuring Servers # If dnssec-validation is set to auto, then a default trust anchor # for the DNS root zone will be used. If it is set to yes, however, # then at least one trust anchor must be configured with a trusted-keys # or managed-keys statement in named.conf, # or DNSSEC validation will not occur. The default setting is yes. dnssec-validation yes; # Если не указать, то будет создан в каталоге указанном в "directory ..." # А если директория будет не доступна, то BIND подвесит ЦП managed-keys-directory "dynamic"; # Если нужно будет переслать запросы на другой ДНС, # например ДНС гугля 8.8.8.8 или 8.8.4.4 #forwarders { 8.8.8.8; }; }; # Path to ISC DLV key (named.root.key) # http://www.isc.org/bind-keys # Смотреть директиву "dnssec-validation" - "DNSSEC validation" не работает # если "dnssec-validation yes;" и ключ (тот, что ниже) не указан явно! # Иначе нужно устанавливать "dnssec-validation auto;"! include "etc\bind.keys.v9_8"; # Configure Logging # Отключаем ведение журнала дабы не закакивать его сообщениями # о не найденом имени хоста, а у нас их всего несколько # тем более локальный ДНС у нас будет выступать первичным (предпочитаемым) logging { channel default_syslog { null; #syslog daemon; #severity info; }; channel default_stderr { null; #file "log\log.txt"; #severity dynamic; }; channel default_debug { null; #file "data\named.run"; #severity dynamic; }; category default { null; }; #category my_syslog { null; }; #category my_file { null; }; #category xfer-out { my_syslog; my_file; }; #category queries { my_file; }; }; # Файл корневых ДНС серверов, который можно получить по адресам: # http://www.internic.net/domain/named.root # or # ftp://ftp.internic.net/domain/named.cache # По умолчанию все корневые ДНС "вшиты" в код самого BIND сервера # и указанную ниже зону zone "." IN { ... }; можно закомментировать. #zone "." IN { # type hint; # file "zones\named.root"; #}; # Файл зоны для "ресолвинга" локального хоста "localhost" в ИП zone "localhost" IN { type master; file "zones\master.localhost"; allow-transfer { 127.0.0.1; }; allow-query { 127.0.0.1; }; }; # localhost reverse map (aka PTR zone) # Нужна для разрешения ИП 127.0.0.1 в имя хоста, а иначе при запросах # Can't find server name for address 127.0.0.1: Non-existent domain zone "0.0.127.in-addr.arpa" IN { type master; file "zones\localhost.rev"; notify no; };
Ниже приводиться содержимое master.localhost и localhost.rev:
master.localhost $TTL 86400 ; 24 hours could have been written as 24h $ORIGIN localhost. ; line below = localhost 1D IN SOA localhost root.localhost @ 1D IN SOA @ root ( 2002022401 ; serial 3H ; refresh 15 ; retry 1w ; expire 3h ; minimum ) @ 1D IN NS @ 1D IN A 127.0.0.1 localhost.rev $TTL 86400 ; ; could use $ORIGIN 0.0.127.IN-ADDR.ARPA. @ IN SOA localhost. root.localhost. ( 1997022700 ; Serial 3h ; Refresh 15 ; Retry 1w ; Expire 3h ) ; Minimum IN NS localhost. 1 IN PTR localhost.
Осталось запустить named.exe -f -c "F:\BIND\etc\named.conf", указать в настройках TCP/IP наш ДНС 127.0.0.1 в качестве предпочитаемого и проверить работоспособность:
>dig com. SOA +dnssec ; <<>> DiG 9.3.2 <<>> com. SOA +dnssec ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 223 ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 14, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags: do; udp: 4096 ;; QUESTION SECTION: ;com. IN SOA ;; ANSWER SECTION: com. 900 IN SOA a.gtld-servers.net. nstld.verisi gn-grs.com. 1364989066 1800 900 604800 86400 com. 900 IN RRSIG SOA 8 1 900 20130410113746 20130 403102746 23975 com. tQnGr5RsXuRbMBvcvFx9tERL76ytCXn/p5/mN0uBdwzndy+FvPNPd1Sc kV uA7z34XjscslV5QiIDdIe68K0lYajK0FR9RaDStVdW5q47HUV/XyV0 Z3Rh4qW6pcDrtkdXZLSn40d9Q 9S6GJ8BVl416B8EMN2agiTtb41e95dA UqE= ;; AUTHORITY SECTION: com. 172800 IN NS k.gtld-servers.net. com. 172800 IN NS g.gtld-servers.net. com. 172800 IN NS c.gtld-servers.net. com. 172800 IN NS d.gtld-servers.net. com. 172800 IN NS m.gtld-servers.net. com. 172800 IN NS h.gtld-servers.net. com. 172800 IN NS b.gtld-servers.net. com. 172800 IN NS e.gtld-servers.net. com. 172800 IN NS a.gtld-servers.net. com. 172800 IN NS j.gtld-servers.net. com. 172800 IN NS i.gtld-servers.net. com. 172800 IN NS f.gtld-servers.net. com. 172800 IN NS l.gtld-servers.net. com. 172800 IN RRSIG NS 8 1 172800 20130408041926 201 30401030926 23975 com. AOYql4O2Zi6v013LUQXSo5K0VuzmfSZzb9Qk/UEAlziHoDUVDvhkceQu 8nseo8PKKJZwhmjhRde5mIuVFfTHIb6Hbv+29UnXhBVguD54I4J7lbRE BEMnJIjrJSs84W8uUgiUsZ4 dKuMU0pTXcEonLIfQuUNfltuTifYOOPm+ Mk8= ;; Query time: 218 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Wed Apr 03 14:37:57 2013 ;; MSG SIZE rcvd: 637
Если в результате ";; flags: qr rd ra ad;" видим наличие флага "AD", то значит всё ок и BIND сервер работает ака DNSSEC ресолвер.
Ссылки по теме:
- DNSSEC and BIND | Internet Systems Consortium
- BIND Documentation | Internet Systems Consortium
- Chapter 6. BIND 9 Configuration Reference