Сегодня поднимем свой сервер имен, для того чтобы связать доменные имена с 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
Все, готово!
Проверяем работоспособность
Сначала узнаем, отдает ли нам 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
и вы увидите версию бинда…