Pull to refresh

Настройка DNS сервера на FreeBSD

Reading time 5 min
Views 94K
image

Довольно часто возникает вопрос о внедрении своего ДНС сервера, который мог бы не только обслуживать запросы внешних пользователей к приобретенным ДНС именам, но и обслуживать запросы пользователей в локальной сети. Такая задача относительно просто решается средствами ОС FreeBSD.

Задача:

Настроить DNS сервер Bind под управлением FreeBSD для обслуживания запросов клиентов внутренней сети и обслуживания прямой и обратной зон DNS с функцией их пересылки на вторичный DNS сервер. Тип всех зон на сервере — Master, то есть данный сервер предоставляет авторитетные ответы за все зоны.

Дано:

1. Внутренний IP адрес DNS сервера — 192.168.0.1/24
2. Внешний IP адрес DNS сервера — 10.10.10.1/24
3. IP адрес вторичного сервера — 10.10.10.2/24
4. Прямая DNS зона — test.dom
5. Обратная DNS зона — 10.10.10.in-addr.arpa

Решение:

1. В файле /etc/rc.conf прописываем запуск DNS сервера при старте системы

named_enable=”YES”

2. Приводим конфигурационный файл /etc/namedb/named.conf к следующему виду:

acl ACCESS { 127.0.0.1; 192.168.0.0/24; 10.10.10.0/24; };

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; 10.10.10.1; };
allow-recursion { ACCESS; };
allow-transfer { 10.10.10.2; };
transfer-source 10.10.10.1;
version "Bind DNS Server";
};

logging {
category lame-servers { null; };
};

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

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

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

zone "test.dom" {
type master;
file "master/test.dom";
allow-query { any; };
};

zone "10.10.10.in-addr.arpa" {
type master;
file "master/10.10.10.in-addr.arpa";
allow-query { any; };
};


Где:

acl — список доступа с именем ACCESS и описанием в нем сетей, которым разрешено использовать наш DNS сервер.
directory – Рабочая директория Bind
pid-file — Место размещения PID файла
dump-file – Место размещения DUMP файла
statistics-file – Место размещения файла статистики
listen-on – Указываем IP адреса интерфейсов, на которых Bind будет «слушать» запросы
allow-recursion – Указываем списки доступа, кому разрешены рекурсивные запросы к серверу
allow-transfer – Указываем IP адрес вторичного DNS сервера, которому будем пересылать наши зоны
transfer-source – Указываем IP интерфейса, через который будет разрешено проведение трансфера зон
version – Указываем свою версию DNS сервера
logging – Указываем ограничение журналирования
zone "." — Зона, описывающая корневые DNS сервера, необходима для работы. Хранится в файле /etc/namedb/named.root
zone «localhost» — Прямая зона, описывающая локальный сервер, необходима для работы. Хранится в файле /etc/namedb/master/localhost
zone «0.0.127.in-addr.arpa» — Обратная зона, описывающая локальный сервер, необходима для работы. Хранится в файле /etc/namedb/master/0.0.127.in-addr.arpa
zone «test.dom» — Наша прямая зона. Хранится в файле /etc/namedb/master/test.dom Так как на нашем сервере хранится мастер копия зоны, при помощи allow-query, разрешаем всем ее опрос.
zone «10.10.10.in-addr.arpa» — наша обратная зона. Хранится в файле /etc/namedb/master/10.10.10.in-addr.arpa. Так как на нашем сервере хранится мастер копия зоны, при помощи allow-query, разрешаем всем ее опрос.

3. Настраиваем файлы зон

3.1. Зона "." — оставляем по умолчанию

3.2. Зона «localhost». Конфигурационный файл /etc/namedb/master/localhost приводим к следующему виду:

$TTL 3600

@ IN SOA localhost. root.localhost. (
2009070601 ; Serial
3600 ; Refresh
600 ; Retry
2419200 ; Expire
86400 ) ; Minimum

IN NS localhost.

IN A 127.0.0.1


3.3. Зона «0.0.127.in-addr.arpa». Конфигурационный файл /etc/namedb/master/0.0.127.in-addr.arpa приводим к следующему виду:

$TTL 3600

@ IN SOA localhost. root.localhost. (
2009070601 ; Serial
3600 ; Refresh
600 ; Retry
2419200 ; Expire
86400 ) ; Minimum

IN NS localhost.

1 IN PTR localhost.


3.4. Зона «test.dom». Конфигурационный файл /etc/namedb/master/test.dom приводим к следующему виду:

$TTL 3600
@ IN SOA ns1.test.dom. hostmaster.test.dom. (
2009082801 ; Serial
3600 ; Refresh
600 ; Retry
2419200 ; Expire
86400 ) ; Minimum

IN NS ns1.test.dom.
IN NS ns2.test.dom.

@ IN A 10.10.10.1

ns1 IN A 10.10.10.1
ns2 IN A 10.10.10.2


3.5. Зона «10.10.10.in-addr.arpa». Конфигурационный файл /etc/namedb/master/10.10.10.in-addr.arpa приводим к следующему виду:

$TTL 3600
@ IN SOA ns1.test.dom. hostmaster.test.dom. (
2009082801 ; Serial
3600 ; Refresh
600 ; Retry
2419200 ; Expire
86400 ) ; Minimum

IN NS ns1.test.dom.
IN NS ns2.test.dom.

1 IN PTR ns1.test.dom.
2 IN PTR ns2.test.dom.


Где, например, для зоны test.dom сверху вниз:

— Время, указывающее длительность в секундах, сколько запись должна быть сохранена в кеше.
— @ — имя зоны — заменяющий символ, IN – класс записи INTERNET — значение по умолчанию, SOA – описание глобальных переменных зоны, ns1.test.dom. — имя DNS сервера для этой зоны, hostmaster.test.dom. — почтовый адрес администратора DNS сервера для этой зоны. Вместо знака @, в качестве разделителя используется знак «.»
— Серийный номер изменения записи. Для перечитывания зоны вторичным сервером, при каждом изменении, необходимо последнюю цифру увеличивать на 1
— Время через которое вторичный DNS сервер попытается перечитать зону
— Время через, которое вторичный сервер будет пытаться перечитать зону если ему не удалось связаться с первичным DNS сервером в период указанный в Refresh
— Указывает через какое время данные зоны больше не авторитетны для этого сервера. Используется вторичными серверами.
— Устаревший атрибут, указывающий на время жизни сохранения данных зоны в кеше.
— Указание DNS основного DNS сервера для данной зоны
— Указание вторичного DNS сервера для данной зоны
— Описание узлов в данной зоне

4. Управляем DNS сервером при помощи следующих команд:

freebsd# /etc/rc.d/named start | stop | restart | status

Дополнительно:

Наиболее часто используемые типы записей в DNS:

A – запись на IP адрес узла в сети
NS — запись на DNS сервер
CNAME – запись на каноническое имя для узла
PTR – запись указатель на доменное имя, используется в обратных зонах
MX — запись для определения маршрутизации почты

Для проверки работоспособности можно использовать такие средства как dig или nslookup

Пример использования dig:

freebsd# dig @localhost test.dom ANY

Команда означает — вывести записи типа ANY в зоне test.dom, используя сервер localhost

; <<>> DiG 9.4.3-P2 <<>> @localhost test.dom ANY
; (2 servers found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35560
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 10, AUTHORITY: 0, ADDITIONAL: 2

;; QUESTION SECTION:
;test.dom. IN ANY

;; ANSWER SECTION:
test.dom. 3600 IN A 10.10.10.1
test.dom. 3600 IN SOA ns1.test.dom. hostmaster.test.dom. 2009082801 3600 600 2419200 86400
test.dom. 3600 IN NS ns1.test.dom.
test.dom. 3600 IN NS ns2.test.dom.

;; ADDITIONAL SECTION:
ns1.test.dom. 3600 IN A 10.10.10.1
ns2.test.dom. 54886 IN A 10.10.10.2

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Aug 30 23:04:41 2009
;; MSG SIZE rcvd: 330


Пример использования nslookup:

freebsd# nslookup
> test.dom
Server: 127.0.0.1
Address: 127.0.0.1#53

Name: test.dom
Address: 10.10.10.1
>


На мой взгляд использование dig для диагностики более гибко, хотя те кто знает полностью как использовать nslookup, скажут то же самое про него. Также рекомендую замечательное пособие по настройке DNS.
Tags:
Hubs:
-5
Comments 8
Comments Comments 8

Articles