SDB:Настройка DNS сервера BIND

Перейти к: навигация, поиск
DNS - система доменных имен.

Предыстория

Давным-давно, в конце 60-ых годов, когда еще не было Интернета, Министерство обороны США, открыло финансирование экспериментальной компьютерной сети ARPAnet. Сеть была создана для объединения важных государственных объектов и разделения ресурсов дорогоредких компьютеров. Однако уже тогда, сеть использовалась по "назначению". Пользователи сети обменивались файлами и посылали сообщения по электронной почте. Каждый узел в сети имел текстовый файлик hosts.txt в котором хранилось соответствие, какому имени компьютера, какой IP адрес соответствует. Если в сети появлялся новый узел, его добавляли в этот файл и рассылали по электронной почте всем пользователям сети. Когда масштабы ARPAnet увеличились, понадобилось придумать, что-то новое и вот тогда придумали систему доменных имен DNS.


настройка BIND

BIND — самых популярный DNS server.


DNS работает по принципу "Клиент-Сервер" с возможностью синхронизации и кэширования. Одним из самых популярных сегодня является DNS server BIND. Далее я опишу, как настроить авторитетный сервер для собственного домена с автоматической передачей зоны на вторичный сервер. Т.к. во FreeBSD по умолчанию используется BIND - устанавливать его не нужно, а для того чтобы настроить, достаточно отредактировать основной файл конфигурации named.conf и файл зоны своего домена, проверить если нет ошибок в конфигах и можно запускать демон BIND-a.


Правим основной файл конфигурации named.conf:

#vi /etc/named.conf


options {
directory "/etc/namedb";
pid-file "/var/run/named/pid";
dump-file "/var/dump/named_dump.db";
statistics-file "/var/stats/named.stats";
allow-transfer { 195.24.128.164; 193.218.105.146; };
allow-query { any; };
recursion no;
notify yes;
version "hi";
};

zone "." {
type hint;
file "named.root";
};

zone "localhost." {
type master;
file "master/localhost";
};

zone "0.0.127.in-addr.arpa" {
type master;
file "master/localhost.rev";
};

zone "test.com" {
type master;
file "master/test.com";
};

zone "122.21.211.in-addr.arpa" {
type master;
file "master/test.com.rev";
};

секция options { directory "/etc/namedb"; Указываем где находится рабочая директория

pid-file "/var/run/named/pid"; Где находится пид файл

dump-file "/var/dump/named_dump.db"; Где находится дамп

statistics-file "/var/stats/named.stats"; Проверить состояние бинда можно здесь

allow-transfer { 195.24.128.164; 193.218.105.146; }; Здесь перечисляются IP адреса вторичных серверов, на которые можно передавать зону. (slave server ip adress)

allow-query { any; }; Спрашивать информацию имеют права все, ограничений нет

recursion no; А вот рекурсивные запросы запрещены, мой DNS сервер отвечает только за одну зону

notify yes; Оповещать вторичные сервера, когда есть изменения на основном

version "hi"; Здесь можно подключить творчество };

Ниже опций, пишутся зоны, их имена и где они расположены. Корневая зона, localhost (прямая, обратная), test.com (прямая, обратная).


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

В руководстве написано: "Для создания основной зоны для локального хоста перейдите в каталог /etc/namedb и выполните команду"

# sh make-localhost


Не знаю как у остальных, но у меня этого скрипта вообще не было, кстати он может создавать не только зону локалхоста, но и все остальные необходимые, например test.com. Т.к. скрипта не было пришлось делать все вручную, в каталоге /etc/namedb/master/ есть 2-а файлика:

localhost-forward.db
localhost-reverse.db

из этих файликов я наклепал еще 4-ре, которые мне нужны:

# ls -l /etc/namedb/master/


localhost localhost.rev test.com test.com.rev и начал их редактировать:

#vi /etc/namedb/master/test.com


$ORIGIN test.com.
$TTL 3h
test.com. SOA admin.test.com. admin.test.com. (
1306200802 5h 1h 1w 3h
;Serial, Refresh, Retry, Expire, TTL
)
@ IN NS ns1.test.com.
@ IN NS ns2.trifle.net.
@ IN NS ns0.xname.org.
@ IN NS ns1.xname.org.
@ IN MX 10 ASPMX.L.GOOGLE.COM.
@ IN MX 20 ALT1.ASPMX.L.GOOGLE.COM.

@ IN A 211.11.122.111
ns1 IN A 159.22.117.7
www IN A 211.11.122.111
@ IN AAAA ::1

forum CNAME google.com.

В файлах зон, символ " @ " заменяется демоном named на имя зоны, написанной в файле named.conf после слова zone в кавычках: zone "test.com", именно поэтому E-Mail пишется через точку, а не через " @ " admin.test.com.

Серийный номер не обязательно должен быть в формате "ДеньМесяцГодСколькоРазИзменялся" 1306200802, да, так можно узнать точную дату когда редактировалась зона, но Serial может быть любой, например можно написать 1, главное увеличивать это число после редактирования зоны - иначе вторичные DNS сервера не обновятся.


Refresh (5h) в начале, пока вы экспериментируете можно поставить один час (1h), чтобы вторичные DNS сервера быстрее обновляли значение Serial, когда все будет стабильно работать, можно увеличить это значение, например на 5h или 10h.


Retry (1h) — это значение указывает вторичным серверам, как часто необходимо обращаться к Master серверу, если тот не отвечает.


Expire (3w) — это время которое slave сервера будут обслуживать зону, пока master сервер не доступен. Если спустя это время вторичный сервер так и не смог достучаться до основного сервера, он перестает обслуживать эту зону.


TTL (3h) — время жизни записей для зоны.


В конце каждого доменного имени обязательно должна стоять точка " . " Точка указывает на то, что это абсолютное имя домена, которое начинается с корня (т.е. с точки) например создадим одну запись CNAME для домена test.com :

site2 IN CNAME google.com.

Так правильно! Bind будет интерпретировать эту запись так - site2.test.com и перенаправлять на google.com, а если создать такую же запись, но не поставить точку в конце доменного имени, то Bind будет интерпретировать такую запись, как относительную для домена test.com и другие DNS сервера поймут это так:

site2.test.com IN CNAME google.com.test.com


Теперь, когда Master сервер настроен, необходимо настроить передачу зоны вашего домена на slave сервера и чем больше у вас будет slave серверов - тем надежнее! Описание конфигурационного файла named.conf на вторичном сервере практически не отличается от файла на основном сервере, за исключением режима, в котором будет работать данный сервер (type slave) и директории.

options {
directory "/etc/namedb";
pid-file "/var/run/named/pid";
dump-file "/var/dump/named_dump.db";
statistics-file "/var/stats/named.stats";
allow-transfer { 195.24.128.164; 193.218.105.146; };
allow-query { any; };
recursion no;
notify yes;
version "hi";
};

zone "." {
type hint;
file "named.root";
};

zone "localhost." {
type master;
file "master/localhost";
};

zone "0.0.127.in-addr.arpa" {
type master;
file "master/localhost.rev";
};

zone "test.com" {
type slave;
file "slave/test.com";
};

Также будет полезно настроить несколько вторичных-бесплатных днс серверов. В интернете не так много (но и не мало) бесплатных DNS сервисов я работаю с http://ns2.trifle.net и http://www.xname.org а также можно воспользоваться http://secondary.net.ua еще есть несколько, но я их не использовал. (сайт1 сайт2 сайт3 сай4)


Запуск Bind-a и проверка зон на работоспособность

Запустить можно так:

# /etc/rc.d/named start


(или forcestart, а также stop, restart)


Обновить базу данных bind-a т.е. чтобы перечитал свои файлы можно коммандой:

# named.reload


(кстати, если вы сделали изменения в файлах зон и забыли изменить serial то после этой комманды bind вам напомнит об этом)

Проверить есть ли ошибки в конфиг файле можно коммандой:

# named-checkconf /etc/namedb/named.conf


Файл зоны можно проверить так: команда ИмяЗоны ПутьКзоне

# named-checkzone test.com /etc/namedb/master/test.com


Посмотреть bind в процессах

# top


И послушать висит ли Bind на 53 порту:

b# sockstat -l4 -p 53


Если в панели управления вашего домена нет возможности указать IP адрес NS (NameServer-a) а только имя, к примеру ns1.newdomen.com, а это имя еще не резолвиться в интернете, тогда можно сделать так:

  1. Настроить основной сервер у себя, потом воспользоваться бесплатным вторичным днс сервисом, там зарегистрироваться, указать IP адрес master сервера, когда вторичный схавает все настройки, подождать 12-18 часов пока пока не заработает.
  2. Попросить знакомого, который владеет DNS сервером, чтобы он создал у себя запись для вашего IP адреса типа: pupkin IN A 222.11.112.123 - это ваш IP и прописать в панели управления для вашего домена pupkin.domendruga.com
  3. Мне кажется, этот вариан самый простой. Зарегистрировать бесплатно домен 3-го уровня на сайте no-ip.com и указать для этого домена ваш IP адрес.

На этом все! :)


Стегний Павел --Adramelech 22:14, 24 декабря 2008 (UTC)