DNS-сервер

BIND (Berkeley Internet Name Domain, до этого: Berkeley Internet Name Daemon) — открытая и наиболее распространённая реализация DNS-сервера, обеспечивающая выполнение преобразования DNS-имени в IP-адрес и наоборот. BIND поддерживается организацией Internet Systems Consortium. 10 из 13 корневых серверов DNS работают на BIND, оставшиеся 3 работают на NSD.
Скопипастил здесь

Всё что будет написано ниже, 100% работает на Debian 7.3.
Исходные данные
192.168.100.1 — внутренний IP
mydrafts.local — «локальный» домен
server1 — имя данного сервера

Установим:
[root@server1 ~] # apt-get install bind9
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Будут установлены следующие дополнительные пакеты:
bind9utils
Предлагаемые пакеты:
bind9-doc resolvconf ufw
НОВЫЕ пакеты, которые будут установлены:
bind9 bind9utils
обновлено 0, установлено 2 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 499 kБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 1 291 kB.
Хотите продолжить [Д/н]?
...
...
...
[ ok ] Starting domain name service...: bind9.
[root@server1 ~] #
Настройки: файл /etc/bind/named.conf.options
[root@server1 ~] # cat /etc/bind/named.conf.options
acl mydraftsnet {192.168.100.0/24; 127.0.0.1; };
options {
        directory "/var/cache/bind";

        dnssec-validation auto;

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { none; };
        allow-query { mydraftsnet; };
};
acl mydraftsnet {192.168.100.0/24; 127.0.0.1; }; — только подсеть 192.168.100.0/24 сможет запрашивать зоны с этого сервера.
Настройки: файл /etc/bind/named.conf.local
zone "mydrafts.local" {
    type master;
        file "/etc/bind/db.mydrafts.local";
    };

zone "100.168.192.in-addr.arpa" {
    type master;
        file "/etc/bind/100.168.192.in-addr.arpa.zone";
    };

Файл /etc/bind/db.mydrafts.local
[root@server1 ~] # cat /etc/bind/db.mydrafts.local
$TTL 30
$ORIGIN mydrafts.local.

@ IN SOA        dns.mydrafts.local. admin.mydrafts.local. (
                2014012101 ;Serial
                1d ;Refresh
                1h ;Retry
                1w ;Expire
                2h ) ;Negative Cache TTL
;
@       IN      NS      dns.mydrafts.local.
@       IN      A       192.168.100.1

dns     IN      A       192.168.100.1
ics     IN      A       192.168.100.1
ntp     IN      CNAME   ics
dhcp    IN      CNAME   ics

Где:
$ORIGIN — оригинальное имя зоны
dns.mydrafts.local. — имя днс-сервера (обязательна точка в конце).
admin.mydrafts.local. — email администратора сервера, только вместо символа @ используется точка.
Serial — серийный номер зоны в формате ГГГГММДД и номер текущего изменения за этот день. (Важно, при каждом изменении, нужно редактировать этот номер увеличивая его в большую сторону) Пример: 2014012101.
Refresh — период времени с которым вторичный сервер днс обращается к основному.
Retry — период с которым вторичный сервер будет повторять попытки при неудачном обновлении.
Expire — максимальное время использования данных на вторичном сервере, после которого делается обязательное обновление.
Negative Cache TTL — время актуальности данных в кэше запросов.
Далее идут записи имён хостов с ip-адресами или псевдонимами.
В конце этого файла нужно обязательно оставить пустую строку!

Настройки: файл зоны обратного просмотра /etc/bind/100.168.192.in-addr.arpa.zone
[root@server1 ~] # cat /etc/bind/100.168.192.in-addr.arpa.zone
$TTL 30
$ORIGIN 100.168.192.in-addr.arpa.

@ IN SOA        dns.mydrafts.local. admin.mydrafts.local. (
                2014012101 ;Serial
                1d ;Refresh
                1h ;Retry
                1w ;Expire
                2h) ;Negative Cache TTL
;
                NS dns.mydrafts.local.

1       PTR     dns.mydrafts.local.
1       PTR     ics.mydrafts.local.

В этом файле должны быть только записи типа PTR, никаких IN тут быть не должно. И в конце этого файла так же должна быть пустая строка.

Перегружаем DNS-сервер:
[root@server1 ~] # rndc reload
server reload successful
Проверим файлы зон на наличие ошибок:
[root@server1 ~] # named-checkconf -z
zone mydrafts.local/IN: loaded serial 2014012101
zone 100.168.192.in-addr.arpa/IN: loaded serial 2014012101
zone localhost/IN: loaded serial 2
zone 127.in-addr.arpa/IN: loaded serial 1
zone 0.in-addr.arpa/IN: loaded serial 1
zone 255.in-addr.arpa/IN: loaded serial 1
Настройки «сам с себя»
[root@server1 ~] # nano /etc/resolv.conf
search mydrafts.local 
domain mydrafts.local 
nameserver 127.0.0.1
Тестирование. Зона прямого просмотра:
[root@server1 ~] # nslookup ics.mydrafts.local
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   ics.mydrafts.local
Address: 192.168.100.1
Тестирование. Зона обратного просмотра:
[root@server1 ~] # nslookup 192.168.100.1
Server:         127.0.0.1
Address:        127.0.0.1#53

1.100.168.192.in-addr.arpa      name = ics.mydrafts.local.
1.100.168.192.in-addr.arpa      name = dns.mydrafts.local.
Если ошибок нет, значит установка и настройка завершены удачно.