LinuxForum.Fans
Тема

Настройка локальной зоны DNS

Автор: Cruiser78 8 сообщений 10072 просмотров
#15813

Итак, задача - настроить локальный DNS.
Взят стандартный BIND, на нем поднят кэширующий DNS-сервер. Нут и master-сервер, для поддержки компьютеров локальной сети. Имя DNS-домена, имеющегося в Интернете в настоящее время, скажем, будет corp.ru. Домен локальной сети, не мудрствуя, назовем local.corp.ru. Под это дело и произведена настройка "локального" DNS-сервера. Прямая зона описана без затей:

text
$TTL 38400
local.corp.ru. IN SOA iNetServer. root.iNetServer.local.corp.ru. (
2010031701 ; serial
108000 ; refresh
1800 ; retry
1209600 ; expiry
604800)

local.corp.ru. IN NS iNetServer. mail.local.corp.ru. IN A 192.168.42.2 ; HELO/EHLO = mail.corp.ru local.corp.ru. IN MX 30 iNetServer.local.corp.ru. local.corp.ru. IN TXT "v=spf1 a:mail.corp.ru -all"

iNetServer IN A 192.168.43.2 FileServer IN A 192.168.43.4 DBServer IN A 192.168.43.6 Server2003 IN A 192.168.43.9 Server IN A 192.168.43.3 www IN CNAME iNetServer

Естественно, что запрос nslookup -type=mx local.corp.ru выдает нам искомое имя iNetServer.local.corp.ru.

В настоящее время почта конторы собирается до кучи на сервере провайдера и забирается для раздачи юзерям программой M-Daemon. Поставлена задача перенести этот почтовый сервер на свои ресурсы, то есть на iNetServer.local.corp.ru. Как это сделать в Интернете я представляю, надо сделать на нашем роутере со статическим белым IP-адресом "виртуальный" почтарь, открыть по NAT доступ к 25му порту iNetServer и поросить провайдера внести в глобальный DNS нужную MX запись на адрес нашего роутера. За пару суток оно расползется по всему миру.

А вот что надо вписать в локальную прямую зону, чтобы локальный запрос к локальному DNS-серверу
nslookup -type=mx corp.ru выдавал нам тоже iNetServer.local.corp.ru я не очень представляю. Сделал запись

text
corp.ru.         IN MX 30  iNetServer.local.corp.ru. 

и рестартовал bind. Но эту запись перебивают значения глобального DNS и nslookup возвращает хосты провайдера.
Коллеги, научите, как настроить правильно локальный DNS, чтобы в нем запрос к MX-записи "глобального" домена возвращал локальный сервер, а в Интернете, при этом - глобальная MX запись показывала на наш статичный IP. Как поставить приоритет локального DNS перед глобальным кэшем?

#15836
Cruiser78 написал:
Как поставить приоритет локального DNS перед глобальным кэшем?

такое чудо не ведомо мне.

уточнение - это только локальный ДНС? или провайдер отдаст вам управление зоной corp.ru полностью?
блин пять раз перечитал и окончательно запутался в объяснениях.

тк, судя по IP сервер локальный кеширующий только. ок, в чем проблема?
у провайдера 2 ДНС
он делает так:

corp.ru. IN MX 30 iNetServer.local.corp.ru.
и
в файле 43.168.122..in-addr.arpa.
2 PTR iNetServer.local.corp.ru.

ок, ваша проблема только открыть порт 25 на роутере и натить в локалку.
представляться iNetServer.local.corp.ru но иметь локальный IP.
у себя нарисовать

text
local.corp.ru.         IN MX 30 локальный IP iNetServer.local.corp.ru

и открыть приём с локального IP.

это всё что я смог понять из вашей аллегории, поправьте пожалуйста

#15887
system-root написал:

такое чудо не ведомо мне.

Если бы оно было ведомо мне, разве я бы спрашивал?

system-root написал:

уточнение - это только локальный ДНС? или провайдер отдаст вам управление зоной corp.ru полностью?

Нет, зона corp.ru остается под управлением провайдера. Там еще наш веб-сервер на хостинге сидит. А тащить его к себе я не готов. Технически. Каналы у нас ADSL, а это значит, что вход не равен выходу по пропускной способности. Пусть веб сидит у провайдера на его скоростных линиях. А вот почтовый сервер надо забрать себе. Со стороны провайдера это делается просто:

text
corp.ru.         IN MX 30  IP нашего router'а 
и, соответственно подправить в обратной зоне.

На роутере тоже проблем организовать входящий доступ серверу с серым, локальным, адресом нет.
Проблема в том, что локальные пользователи дожны видеть MX запись локального уже сервера DNS corp.ru, показывающую не на внешний интерфейс нашего роутера, а на iNetServer.local.corp.ru

system-root написал:

тк, судя по IP сервер локальный кеширующий только. ок, в чем проблема?

Нет, не только кэширующий. Кэширующий прокидывает вовнутрь только глобальный DNS и не заботится о внутреннем резолвинге. Так? А мастер-сервер как раз поддерживает внутренние зоны и может, по потребности, обратиться к кэшу. Верно? То есть у меня, в этих терминах, кэширующий мастер-сервер. Есть еще и slave-сервера, которые с него информацию тянут. И проблема в том, чтобы записать в локальной зоне имя глобальное и перебить этой записью запись в кэше.

system-root написал:

у провайдера 2 ДНС он делает так:
corp.ru. IN MX 30 iNetServer.local.corp.ru.
и в файле 43.168.122..in-addr.arpa.
2 PTR iNetServer.local.corp.ru.

И куда пойдет почта интернетная? В Инете же не может быть "local"-ов. iNetServer.local.corp.ru - это локальный компьютер, сидящий на сером адресе, к которому я буду натить с белого адреса роутера. То есть провайдер должен записать то, что я написал выше в этом спиче.

system-root написал:

у себя нарисовать
text
local.corp.ru.         IN MX 30 локальный IP iNetServer.local.corp.ru

и открыть приём с локального IP.

Ну, так оно и нарисовано. Прямая зона в старттопике лежит.
Но как будет работать локальная почта, которая должна иметь доменное имя corp.ru, а не local.corp.ru?
я полагаю, что для работы локальной почты запрос к локальному DNS nslookup -type=mx corp.ru должен возвращать адрес локальный, серый, а не белый, роутера. А белый адрес должен возвращаться вопрошающим из сети Интернет.
А если я оставляю в локальном DNS MX-запись local.corp.ru. IN MX 30.... то адрес почтаря мне вернется по запросу не corp.ru, а local.corp.ru. А я этого не хочу.

#15906

ок, фиг с ними, с именами, я путаюсь.
будем думать в абстракциях IP:
в локалке пользователь запрашивает MX corp.ru
DNS в локалке отвечает corp.ru IN MX 30 приватный_IP_почтовика

в интернете пользователь запрашивает MX corp.ru
получает то что отдаст провайдер.

и какгбы где подвох? в чем проблема? создайте зону corp.ru у себя, но всё что у вас имеет приватный_IP там замените и всё.

а у вас зона (внимание) local.corp.ru., как вы можете жить с этой зоной без corp.ru?? все записи local должны существовать в corp.ru. никак иначе вы не можете отправить локального пользователя запросившего MX corp.ru вообще куда-то

я сейчас понял? всё равно путаюсь

#15921
system-root написал:

будем думать в абстракциях IP:

Абсолютно верное понятие в этих абстракциях.

system-root написал:

и какгбы где подвох? в чем проблема? создайте зону corp.ru у себя, но всё что у вас имеет приватный_IP там замените и всё.

Подвох в том, что я хочу забрать их зоны corp.ru только один "хост", одну только почтовую службу. У меня нет проблем поднять зону в ЛВС corp.ru и она будет тогда перебивать зону глобальную. Но в глобальной зоне (у провайдера) у меня остается еще ряд сервисов. И локальные пользователи должны получать на них глобальные адреса. Я не хочу иметь проблем с юзерями, если провайдер решит передвинуть наши сервисы на новые IPшники. Это его право. Но если, при этом, я продублирую "глобальную" зону у себя, то неизбежно поимею проблемы в таком случае. Я их хочу избежать заранее.
Хотя этот вариант работоспособен и я его проверял. Но он мне не понравился. Хотя, может иного варианта и не будет.

system-root написал:

а у вас зона (внимание) local.corp.ru., как вы можете жить с этой зоной без corp.ru?? все записи local должны существовать в corp.ru. никак иначе вы не можете отправить локального пользователя запросившего MX corp.ru вообще куда-то

А вот здесь у меня совсем иное мнение. Записи local не должны светиться в corp.ru совершенно. В corp.ru должны сидеть адреса "глобальные", которые должны быть видны всему миру. А вот сколько я сделаю под этим corp.ru local'ов - хоть тыщу - это мое дело и не дело светить локальные адреса-имена (тем более на серых адресах) всему миру.
А отправить куда нужно - главное ответить правильно на запрос: если спрашивают из Инета, то инетный адрес, если из интранета - то интранетный. А дальше сервисы сами разберутся что, кого и куда послать.

#15928
Cruiser78 написал:
В corp.ru должны сидеть адреса "глобальные", которые должны быть видны всему миру

ваш ДНС не авторитетен для каких либо зон, вы не можете/да права не имеете отдавать зоны в интернет, а значит я не вижу проблемы в поднятии зоны corp.ru, кроме

Cruiser78 написал:
если провайдер решит передвинуть наши сервисы на новые IPшники

но есть одно НО, провайдер сделает это только предупредив.

вы можете на создавать хоть тыщу доменов хоть пятого уровня для зоны corp.ru, только прислушайтесь сейчас и взвесьте.
что проще, управление всеми локальными доменами для зоны corp.ru именно из файла самой зоны
или
придумать костыль чтоб не создавать зону corp.ru но как то отправлять пользователей туда если они запросят эту зону. плюс у вас еще тыща доменов пятого уровня - ими тоже нужно иногда заниматься.



моё видение:
вы создаете зону corp.ru
дублируете туда настройки с ДНС провайдера
меняете прямой IP почтовика на локальный
внутри уже дописываете описание всей локальной сети


как это будет работать?
пользователь запрашивает какой нибудь iNetServer.local.corp.ru
локальный ДНС смотрит у себя зону corp.ru
находит
переходит к iNetServer.local IN блаблабла
отдает блаблабла


свечение вашего днс всему интернету? так вы сказали у вас роутер, если вы не прокинете 53 порт, то до вашего ДНС не будет доступа с наружи
если вы скажете ДНС слушать только локальный IP, то даже с прямым доступом в интернет он не ответит постороннему


ну и изредка если провайдер гад меняет IP служб, синхронизировать их у себя.

ваши возражения?
#15962
system-root написал:
ну и изредка если провайдер гад меняет IP служб, синхронизировать их у себя.

ваши возражения?

Вот собственно это (провайдер-гад) и есть основное возражение. А делать локальной копией глобальную зону и менять в ней нужные адреса на свои, на нужные локальные - я делал. Это работает и глобальную зону кэша в локалке перебивает на раз. Но, вроде это не самое красивое решение - перебивать всю зону. Хотелось бы только по сервисам нужным перебивать...

#15979
Cruiser78 написал:
Но, вроде это не самое красивое решение - перебивать всю зону.

я не понимаю где будет перебиваться, если провайдер пишет
сервис IN A IP_провайдера
и вы пишите
сервис IN A IP_провайдера
то где перебивание?
ну вот пример:
у провайдера:

text
$TTL 86400;
mydomain.ru.    IN    SOA    ns.mydomain.ru. почта_админа.mydomain.ru. (
2009090909
10800
3600
604800
1200 )

A IP_провайдера

NS ns.mydomain.ru. NS ns2.mydomain.ru.

MX 10 webmail

www A IP_провайдера

ns A IP_провайдера ns2 A IP_провайдера mx A IP_провайдера mx MX 10 mx ftp cname www

а у вас

$TTL 86400;
mydomain.ru. IN SOA ns.mydomain.ru. почта_админа.mydomain.ru. (
2009090909
10800
3600
604800
1200 )

A 10.2.21.100

NS ns.mydomain.ru.
NS ns2.mydomain.ru.

MX 10 webmail

www IP_провайдера0

ns A IP_провайдера
ns2 A IP_провайдера
mx A IP_локальной_машины
mx MX 10 mx
ftp cname www

ну и где тут перебивание?
добавьте в эту зону

text
local         IN NS     iNetServer.
mail          IN A      192.168.42.2 ; HELO/EHLO = mail.corp.ru 

local IN TXT "v=spf1 a:mail.corp.ru -all"

iNetServer.local IN A 192.168.43.2 FileServer.local IN A 192.168.43.4 DBServer.local IN A 192.168.43.6 Server2003.local IN A 192.168.43.9 Server.local IN A 192.168.43.3 www.local IN CNAME iNetServer

и всё чикипуки

Войдите или зарегистрируйтесь, чтобы ответить.