PandoraBox2007
21.12.2009 - 00:34
Первоисточник здесьПривет, сегодня поднимем свой сервер имен, для того чтобы связать доменные имена с 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
Все, готово!
Проверяем работоспособностьСначала узнаем, отдает ли нам 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» необходим тут, для того чтобы домен делегировался корректно, так как сейчас ваш домен еще не связан...
Для других доменов, например «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> |
и вы увидите версию бинда...