В один прекрасный день возникла идея, а не зарегистрировать ли себе доменное имя в интернете?! Первым делом приглянулся свободный - unix.ck.ua.
Хостер предоставлял поддержку домена на своих NS-серверах, но за деньги. Решил пойти другим путем, настроить поддержку домена у себя.
По стандарту, для поддержки домена, необходимо иметь не менее двух DNS-серверов. Этим мы обеспечим надежность работы DNS, если первый DNS-сервер станет недоступен, второй будет продолжать обслуживать запросы.

Настройка Master DNS-сервера.
Так как FreeBSD уже поставляется с предустановленным DNS-сервером BIND, не буду останавливаться на установке оного. Рассмотрим настройку первичного DNS-сервера на собственном примере для домена unix.ck.ua:
options {
directory "/etc/namedb";
pid-file "/var/run/named/pid";
dump-file "/var/dump/named_dump.db";
statistics-file "/var/stats/named.stats";
# На каких интерфейсах слушать.
listen-on {
127.0.0.1;
82.207.87.36;
};
# Тут лучше не светить своей версией BIND!
version "my DNS:)";
#Корневая зона DNS.
zone "." {
type hint;
file "named.root";
};
# Форвард-зона локалхоста.
zone "localhost" {
type master;
file "master/localhost.forw";
allow-transfer { 127.0.0.1; };
allow-query { 127.0.0.1; };
};
# Реверс-зона локалхоста.
zone "0.0.127.IN-ADDR.ARPA" {
type master;
file "master/localhost.rev";
};
# Наша зона, которую мы поддерживаем.
zone "unix.ck.ua" {
# Говорим, что мы будем авторитетным DNS-сервером для этой зоны.
type master;
# Файл форвард-зоны, указываем месторасположение.
file "master/unix.ck.ua.forw";
# Сервера на которые разрешено передавать зону. В нашем случае, указываем IP нашего Slave-сервера.
allow-transfer { 193.108.251.254; };
# При изменении зоны все вторичные DNS сервера получают уведомление.
notify yes;
};
Далее создаём файл форвард зоны нашего домена, подробное описание файла зоны есть в статье: Настройка собственного DNS [2]:
@ IN SOA ns.unix.ck.ua. admin.unix.ck.ua. (
2010123101 ; Serial
3600 ; Refresh
900 ; Retry
3600000 ; Expire
3600 ) ; Minimum
; DNS сервера
@ IN NS ns.unix.ck.ua.
@ IN NS ns.yuren.com.ua.
; MX записи
@ MX 10 aspmx.l.google.com.
@ MX 20 alt1.aspxm.l.google.com.
@ MX 20 alt2.aspmx.l.google.com.
@ MX 30 aspmx2.googlemail.com.
@ MX 30 aspmx3.googlemail.com.
@ MX 30 aspmx4.googlemail.com.
@ MX 30 aspmx5.googlemail.com.
; A-записи
www IN A 82.207.87.36
forum IN A 82.207.87.36
ns IN A 82.207.87.36
@ IN A 82.207.87.36
Далее добавляем в автозапуск /etc/rc.conf:
[root@router /]# echo 'named_flags="-u bind -g bind"' >> /etc/rc.conf
Запускаем named:
[root@router /etc/rc.d]# ps -A | grep named
879 ?? Ss 0:13,40 /usr/sbin/syslogd -l /var/run/log -l /var/named/var/run/log -s
37336 ?? Ss 0:41,71 /usr/sbin/named -t /var/named -u bind
Проверяем поддерживает ли наш DNS зону unix.ck.ua:
; <<>> DiG 9.4.2 <<>> @127.0.0.1 unix.ck.ua
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5392
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 1
;; QUESTION SECTION:
;unix.ck.ua. IN A
;; ANSWER SECTION:
unix.ck.ua. 3600 IN A 82.207.87.36
;; AUTHORITY SECTION:
unix.ck.ua. 3600 IN NS ns.yuren.com.ua.
unix.ck.ua. 3600 IN NS ns.unix.ck.ua.
;; ADDITIONAL SECTION:
ns.unix.ck.ua. 3600 IN A 82.207.87.36
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Jan 2 21:30:58 2011
;; MSG SIZE rcvd: 114
На этом настройку авторитативного DNS-сервера для нашей зоны завершено.
Настройка Slave DNS-сервера.
По правилам, необходимо вторичный DNS-сервер размещать, чем подальше от первого.
Моим вторичный NS-сервером будет, хост моего друга - ns.yuren.com.ua, который будет поддерживать нашу зону. Конфиги Master- и Slave- серверов принципе идентичны, привиду только измененную его часть необходимую для вторичного сервера:
zone "unix.ck.ua" {
# Тип, тут указываем, что мы вторичный DNS-сервер для нашей зоны.
type slave;
# Файл Slave-зоны, указываем месторасположение.
file "slave/unix.ck.ua.slave";
# Сервер, который выступает в роли - Master. В нашем случае, указываем IP нашего Master-сервера.
masters { 82.207.87.36;};
};
После перезапуска, зона "unix.ck.ua" сама подтянется в файл /etc/namedb/slave/unix.ck.ua.slave c Master-сервера.
Будет иметь, вот такой вид:
$TTL 3600 ; 1 hour
unix.ck.ua IN SOA ns.unix.ck.ua. admin.unix.ck.ua. (
2010123101 ; serial
3600 ; refresh (1 hour)
900 ; retry (15 minutes)
3600000 ; expire (5 weeks 6 days 16 hours)
3600 ; minimum (1 hour)
)
NS ns.unix.ck.ua.
NS ns.yuren.com.ua.
A 82.207.87.36
MX 10 aspmx.l.google.com.
MX 20 alt1.aspxm.l.google.com.
MX 20 alt2.aspmx.l.google.com.
MX 30 aspmx2.googlemail.com.
MX 30 aspmx3.googlemail.com.
MX 30 aspmx4.googlemail.com.
MX 30 aspmx5.googlemail.com.
$ORIGIN unix.ck.ua.
forum A 82.207.87.36
ns A 82.207.87.36
www A 82.207.87.36
Перед запуском, желательно проверить саму возможность копирования зоны с Master на Slave сервер:
; (1 server found)
;; global options: +cmd
unix.ck.ua. 3600 IN SOA ns.unix.ck.ua. admin.unix.ck.ua. 2010123101 3600 900 3600000 3600
unix.ck.ua. 3600 IN A 82.207.87.36
unix.ck.ua. 3600 IN NS ns.unix.ck.ua.
unix.ck.ua. 3600 IN NS ns.yuren.com.ua.
unix.ck.ua. 3600 IN MX 10 aspmx.l.google.com.
unix.ck.ua. 3600 IN MX 20 alt1.aspxm.l.google.com.
unix.ck.ua. 3600 IN MX 20 alt2.aspmx.l.google.com.
unix.ck.ua. 3600 IN MX 30 aspmx2.googlemail.com.
unix.ck.ua. 3600 IN MX 30 aspmx3.googlemail.com.
unix.ck.ua. 3600 IN MX 30 aspmx4.googlemail.com.
unix.ck.ua. 3600 IN MX 30 aspmx5.googlemail.com.
forum.unix.ck.ua. 3600 IN A 82.207.87.36
ns.unix.ck.ua. 3600 IN A 82.207.87.36
www.unix.ck.ua. 3600 IN A 82.207.87.36
unix.ck.ua. 3600 IN SOA ns.unix.ck.ua. admin.unix.ck.ua. 2010123101 3600 900 3600000 3600
;; Query time: 74 msec
;; SERVER: 82.207.87.36#53(82.207.87.36)
;; WHEN: Mon Jan 3 00:44:56 2011
;; XFR size: 15 records (messages 1, bytes 422)
Если не отдаст зону, увидите:
; (1 server found)
;; global options: +cmd
; Transfer failed.
На этом настройка вторичного DNS-сервера завершена.
Теперь можно смело регистрировать себе доменное имя, где в качестве NS1 и NS2, указываем наши Master- и Slave- DNS сервера.
Обсуждения на форуме: тут [3].