Настройка named

Настройка named

Представим себе ситуацию, когда Вам необходимо поднять свой собственный ДНС сервер.
К примеру, Вам необходимо поднять свой домен, а платить провайдерам Вам влом.

Переходим в каталог named

cd /etc/namedb/

Делаем

mv named.conf named.conf-dist

Мы сами будем создавать свой собственный named.conf

/etc/namedb/>vi named.conf
options {
listen-on {
127.0.0.1;
213.125.15.4;
};
allow-query { any; };
recursion no;
version “8.2.4″;
directory “/etc/namedb”;
pid-file “/var/run/named/pid”;
notify yes;
};

zone “.” {
type hint;
file “named.root”;
};

zone “0.0.127.in-addr.arpa” {
type master;
file “master/localhost.rev”;
notify no;
};

Директива options определяет каталог, в котором хранятся файлы описания зон, директива zone определяет зоны, которые поддерживает сервер.
Зона “.” сервером не поддерживается. Это корневая зона. Поэтому она имеет тип hint, т.е. “подсказка” на то, где описаны серверы корневой зоны.
Зона “0.0.127.in-addr.arpa” имеет тип master, т.к. данный сервер действительно является мастером для этой зоны.
Значение version “8.2.4″; добавляется для того, чтоб злоумышленник не мог определить точную версию нашего ДНС сервер.
Значение recursion no делает запрет на рекурсию.
Значение listen-on говорит на каких ИП отрабатывать запросы.

Если мы сделаем следующее

/etc/namedb/>ll /etc/namedb/ | grep named.root
-rw-r–r– 1 root wheel 2600 Jan 12 2007 named.root

то увидим то такой файл уже существует. Тут проблем не будет. Для создания localhost.rev необходимо выполнить следующее

/etc/namedb/>sh make-localhost
/etc/namedb/>ll master/
total 8
-rw-r–r– 1 root wheel 451 Nov 15 14:27 localhost-v6.rev
-rw-r–r– 1 root wheel 451 Nov 15 14:27 localhost.rev
/etc/namedb/>

Вот в принципе и все. Дальше делаем

/etc/namedb/>echo “named_enable=”YES”" >> /etc/rc.conf
/etc/namedb/>cat /etc/rc.conf | grep named
named_enable=YES
/etc/namedb/>/etc/rc.d/named start
Starting named.
/etc/namedb/>tail -f /var/log/messages
Nov 17 12:22:34 host named[14438]: starting BIND 9.3.3 -t /var/named -u bind
Nov 17 12:22:34 host named[14438]: command channel listening on 127.0.0.1#953
Nov 17 12:22:34 host named[14438]: running
^C
/etc/namedb/>ps ax | grep named
14438 ?? Ss 0:00.02 /usr/sbin/named -t /var/named -u bind
14442 p0 R+ 0:00.00 grep named

Если у Вы видите подобное – это значит, что у Вас все работает как нужно.
Но, это еще не все. Сервер то мы запустили. А как же домен? Идем дальше.
Мы решили, что нам необходимо завести домен test.org.ua
В named.conf добавляем следующее:

zone “test.org.ua” {
type master;
file “master/test.org.ua”;
allow-transfer {
215.57.121.1;
};
};

где zone “test.org.ua” название нашей зоны, file “master/test.org.ua”; пусть где будет хранится запись о зоне, 215.57.121.1; вторичный ДНС сервер.

Создаем зону test.org.ua

/etc/namedb/>vi master/test.org.ua
; Zone file for test.org.ua
$TTL 14400
@ IN SOA test.org.ua. webmaster.test.org.ua. (
2007101501 ; serial, todays date+todays
3600 ; refresh, seconds
300 ; retry, seconds
1209600 ; expire, seconds
43200 ) ; minimum, seconds

IN NS ns1.test.org.ua.
IN NS ns.secondary.net.ua.
MX 10 ns1.test.org.ua.
IN A 213.125.15.4

ns1 IN A 213.125.15.4
www IN A 213.125.15.5
pop3 IN A 213.125.15.4
smtp IN A 213.125.15.4
mail IN A 213.125.15.4
ftp IN A 213.125.15.6

Вот собственно все и готово.
Подробно объяснять не буду что и как тут задано, есть Интернет, есть гугл.
В принципе все готово. За исключением одного.

Делаем следующее:

/etc/namedb/>/usr/sbin/rndc-confgen
# Start of rndc.conf
key “rndc-key” {
algorithm hmac-md5;
secret “PSgoANtaZ9nhGiiJMdHkNw==”;
};

options {
default-key “rndc-key”;
default-server 127.0.0.1;
default-port 953;
};
# End of rndc.conf

# Use with the following in named.conf, adjusting the allow list as needed:
# key “rndc-key” {
# algorithm hmac-md5;
# secret “PSgoANtaZ9nhGiiJMdHkNw==”;
# };
#
# controls {
# inet 127.0.0.1 port 953
# allow { 127.0.0.1; } keys { “rndc-key”; };
# };
# End of named.conf

Создаем файл /etc/named/rndc.conf куда добавляем следующее

/etc/namedb/>vi /etc/namedb/rndc.conf
key “rndc-key” {
algorithm hmac-md5;
secret “PSgoANtaZ9nhGiiJMdHkNw==”;
};

options {
default-key “rndc-key”;
default-server 127.0.0.1;
default-port 953;
};

А в /etc/namedb/named.conf добавляем оставшееся, и получаем полный конфиг вашего сервера:

/etc/namedb/>vi /etc/namedb/named.conf
key “rndc-key” {
algorithm hmac-md5;
secret “PSgoANtaZ9nhGiiJMdHkNw==”;
};

options {
default-key “rndc-key”;
default-server 127.0.0.1;
default-port 953;
};

options {
listen-on {
127.0.0.1;
213.125.15.4;
};
allow-query { any; };
recursion no;
version “8.2.4″;
directory “/etc/namedb”;
pid-file “/var/run/named/pid”;
notify yes;
};

zone “.” {
type hint;
file “named.root”;
};

zone “0.0.127.in-addr.arpa” {
type master;
file “master/localhost.rev”;
notify no;
};

zone “test.org.ua” {
type master;
file “master/test.org.ua”;
allow-transfer {
215.57.121.1;
};
};

Проверяем:

/etc/namedb/>rndc reload
server reload successful
/etc/namedb/>rndc status
number of zones: 2
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/1000
tcp clients: 0/100
server is up and running
/etc/namedb/>sockstat | grep named
bind named 14438 3 dgram -> /var/run/logpriv
bind named 14438 20 udp4 213.125.15.4:53 *:*
bind named 14438 21 tcp4 213.125.15.4:53 *:*
bind named 14438 22 udp4 127.0.0.1:53 *:*
bind named 14438 23 tcp4 127.0.0.1:53 *:*
bind named 14438 24 udp4 *:63739 *:*
bind named 14438 25 udp6 *:63740 *:*
bind named 14438 26 tcp4 127.0.0.1:953 *:*

Утилита rnc нам необходима для работы в сервером ДНС: перезагрузка, статус, ошибки и т.д. Вот собственно и все.