Декабрь 22, 2005

Как правильно настроить DNS (окончание)

Использование forward - зон для одновременного разрешения Internet и Intranet имен.

Предположим, что в у нас уже есть отдельный DNS-сервер для локальной сети и отдельный DNS-сервер для Internet. Оказывается, возможно (man named.conf) настроить машину так, чтобы для разных диапазонов IP-адресов использовались разные DNS сервера. Для этого на ней нужно запустить свой DNS-сервер, который бы перенаправлял поступающие на него запросы на другие DNS-сервера, в зависимости от того, какой запрос получен.

Пример: машина, работающая как с интернет, так и с локальной сетью. Для разрешения internet-адресов следует использовать существующий DNS сервер c IP-адресом 195.19.6.10 . Для разрешения intranet-адресов (Private диапазон 172.16.0.0) - существующий DNS сервер с IP-адресом 172.16.3.1 . В Intranet - сети используется "внутренний" домен первого уровня "cge". На машине запускаем локальный DNS сервер, и в дальнейшем используем его. Файлы конфигурации:

/etc/resolv.conf

nameserver 127.0.0.1

/etc/named.conf(bind 8.2.3)

options {
directory "/var/named";
forward first;
forwarders {195.19.6.10;};
// по умолчанию все запросы передаются
// на DNS-server 195.19.6.10
};
//стандартная локальная зона
zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";
};
//Эти правила - более приоритетные!
zone "16.172.in-addr.arpa" in{
type forward;
forward first;
forwarders {172.16.3.1;};
// для этой зоны все запросы передаются
// на DNS-server 172.16.3.1
};
zone "cge" in{
type forward;
forward first;
forwarders {172.16.3.1;};
//для этой зоны все запросы передаются
// на DNS-server 172.16.3.1
};

Примечание: Задача не решается простым прописыванием двух DNS-серверов в /etc/resolv.conf. Hint: Отрицательный ответ от одного DNS-сервера не является основанием для обращения к другому.

Еще одно возможное решение - вписать forward-зоны прямо на интернетовском DNS-сервере. Примерно так:

/etc/named.conf(bind 8.2.3)

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

zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";
};
//
// Прямая и обратная зоны домена cge.ru (Internet)
//
zone "cge.ru" in{
type master;
file "named_cge.data";
};

zone "6.19.195.in-addr.arpa" in{
type master;
file "named_cge.rev";
};
//
// Intranet сеть - 172.16.0.0, зона cge
// запросы переправляются на DNS сервер 172.16.3.1
//
zone "16.172.in-addr.arpa" in{
type forward;
forward only;
forwarders {172.16.3.1;};
};

zone "cge" in{
type forward;
forward only;
forwarders {172.16.3.1;};
};

Я проверил этот вариант, он работает, но имеет один недостаток - для forward-зон нельзя написать правила allow-query и allow-transfer, поэтому информация о структуре внутренних зон может быть прочитана любым желающим.

Все зоны на одном DNS-сервере

Возможно, это самый лучший способ. Внутренняя зона поддерживается тем же DNS-сервером, что и внешняя, а чтобы извне нельзя было посмотреть структуру внутренних зон, для них пишутся правила allow-query и allow-transfer.

К сожалению, для того, чтобы использовать этот способ, мне пришлось бы поменять настройку DNS на всех машинах Intranet-сети. Увы, я не готов к подобному подвигу. Впрочем, если ваша сеть находится еще в процессе становления, этот способ легко применим.

Часть 2

Разместил:

Источник: Docs.Winsov.Ru

Ваш комментарий

Обсудить на форуме?

Подумайте, прежде чем высказать своё мнение. Постарайтесь сделать свой комментарий полезным для других. Не используйте ненормативную лексику. Пользователи, пишущие "от нечего делать" бессмысленные наборы символов, будут блокироваться навсегда.