Кэширующий DNS сервер на BIND.

BIND9 один из самых известных DNS серверов под Линукс. Это полноценный сервер со всеми нужными возможностями, на котором вы можете поднять авторитетный, кэширующий или какой угодно другой dns сервер.

Установка сервера очень проста :

apt-get install bind9

Теперь сделаем основные настройки и кэширование запросов DNS, если конечно ваш сервер будет вообще принимать запросы ) Отредактируем файл настроек /etc/bind/named.conf.options

options {
 directory "/var/cache/bind";
 forwarders {8.8.8.8; //Перенаправление запросов на другой сервер DNS если мы не знаем.
8.8.4.4;
 };


 dnssec-validation auto; //поддержка DNSSEC.

auth-nxdomain no; # conform to RFC1035
 //listen-on-v6 { any; };
 listen-on {192.168.0.1; 127.0.0.1; }; //На каких интерфейсов(ip)  вести прослушивание 53 порта.
allow-query { any; }; // allow-query {список_ip} - Разрешает ответы на запросы только из список_ip.
allow-query-cache { any; }; // Тоже самое, но для кэша.
};

Перезапустим сервис и можем пользоваться свои кэширующим dns сервером ).

Настройка  зоны.

Скажем у вас есть домен test.com для которого вы ходите сделать свой dns сервер зоны. Первым делом открываем файл /etc/bind/named.conf.local и вписывает туда настройки зоны :

zone "test.com" IN {
 type master;
 file "/var/lib/bind/test.com.db";
 allow-transfer {any;};
 allow-update {any;};
 notify yes;
};

zone «test.com» IN — собственно, название DNS зоны, которую мы будем обслуживать (доменное имя которое надо купить заранее).
type master; — тип данного сервера.
file «/var/lib/bind/test.com.db»; -путь к файлу с настройками данной зоны.
allow-transfer {any}; -разрешаем передачу данной зоны на остальные DNS сервера.
allow-update {any}; — разрешаем обновление.
notify yes; -включаем автоматическое уведомление подчиненных серверов об обновлении файла настроек DNS зоны.

Теперь создадим файл test.com.db :

$TTL 3600 ;
test.com. IN SOA ns01.test.com. root.test.com. (
                                                          1 ; Serial
                                                        600 ; Refresh
                                                       3600 ; Retry
                                                         1w ; Expire
                                                        300 ; Minimum TTL
 )
 IN NS ns01.test.com.
 IN NS ns02.test.com.
 IN A 192.168.10.1
ns01 IN A 192.168.10.5
ns02 IN A 192.168.10.6
www IN A 192.168.10.1
test IN A 192.168.10.12

Рассмотрим подробнее написанное:

$TTL 3600 — Time to live время жизни, по умолчанию ставим 1 час.
test.com IN SOA ns01.test.com. root.test.com. — сама зона, которая обслуживается данным сервером.
1; Serial — ее серийный номер DNS записи.
600; Refresh — указывает подчиненным DNS серверам как часто им обращаться, для поиска изменений к master серверу.
3600; Retry — говорит о том, сколько Slave сервер должен подождать, прежде чем повторить попытку.
1w; Expire — Максимальный срок жизни записей, после которой они потеряют актуальность (1 неделя).
300; Minimum TTL — минимальный срок жизни записи 5 мин.
NS ns01.test.com. — NS сервер который обслуживает эту зону.
NS ns02.test.com. — NS сервер который обслуживает эту зону.
A 192.168.10.20 — если требуется попасть по адресу test.com, то клиенту будет выдан этот IP.
ns01 A 192.168.10.5 — Записи для поиска наших NS серверов.
ns02 A 192.168.10.6
www A 192.168.10.1 — Если клиент запросит адрес www.test.com, то ему будет выдан IP 192.168.10.2
test A 192.168.10.12 — Если клиент запрашивает адрес test.test.com, какой будет выдан ему IP.

Перезапускаем сервис и не забываем указать ваш dns сервер в настройка регистратора домена. Успехов.