Страница 1 из 2

Схема работы bind

СообщениеДобавлено: Сб июл 19, 2008 7:18 pm
NetFantom
Скажите, актуальна ли все еще эта тема:
http://forum.firstvds.ru/viewtopic.php?t=78

Дело касается схемы с ISPManager.

1. В менеждере я создаю новый домен
2. Делаю nslookup домена с локальной машины, в качестве сервера указав IP своего VDS сервера. Домен не резолвится. Проверяю резольвинг домена ya.ru. Домен резолвится.
3. Из консоли (захожу через ssh) делаю nslookup, указывая в качестве сервера IP моего VDS - домен резолвится.
4. Из консоли устанавливаю nameserver 127.0.0.1, делаю nslookup, ответ приходит почему-то с IP моего VDS сервера
5. Запрещаю в named.conf форвардинг. Тем не менее все интернет домены резолвятся с консоли и с локальной машины.
6. Останавливаю bind ($killall named). Из консоли коннекта на 53 порт нет, named молчит. При коннекте с локальной машины коннект есть и все интернет домены резолвятся (конечно, кроме моего).

Я правильно понимаю, что при коннекте извне почему-то соединение принимает не мой bind, а какой-то "общий", как указано в этой теме, на которую я сослался в начале моего вопроса?

СообщениеДобавлено: Сб июл 19, 2008 7:41 pm
Лена
Попробуйте командой dig, а не nslookup.

СообщениеДобавлено: Вс июл 20, 2008 12:47 am
NetFantom
простите, Лена, а для чего мне использовать dig? На какие конкретно вопросы он мне ответит? Мой вопрос в том, почему при убитом процессе named мой сервер отвечает на DNS запрос извне, и не имеет значение, использовать nslookup, dig или просто telnet на 53 порт. Собственно кто отвечает, ведь судя по всему это не мой bind. И как нужно делать, чтобы избавиться от этой аномалии.
Или вы имели ввиду что-то, чего я не понял?

СообщениеДобавлено: Вс июл 20, 2008 1:27 am
art
Нет никакого общего bind.

Говорю на вашем сервере
# rndc stop

Спрашиваю у Вашего VDS домен ya.ru
$dig @92.63.X.X ya.ru

; <<>> DiG 9.4.2 <<>> @92.63.X.X ya.ru
; (1 server found)
;; global options: printcmd
;; connection timed out; no servers could be reached

Что не так?

named запустил.

СообщениеДобавлено: Вс июл 20, 2008 9:06 am
Лена
NetFantom писал(а):простите, Лена, а для чего мне использовать dig? На какие конкретно вопросы он мне ответит? Мой вопрос в том, почему при убитом процессе named мой сервер отвечает на DNS запрос извне, и не имеет значение, использовать nslookup, dig или просто telnet на 53 порт. Собственно кто отвечает, ведь судя по всему это не мой bind. И как нужно делать, чтобы избавиться от этой аномалии.
Или вы имели ввиду что-то, чего я не понял?

А вы проверьте на практике, имеет значение или не имеет. Это ведь дело пяти минут. Если таки имеет (вот art проверил и убедился), то значит наблюдавшаяся вами аномалия - это артефакты команды nslookup.

СообщениеДобавлено: Пн июл 21, 2008 12:39 pm
NetFantom
Господа, я таки нашел откуда ноги растут. Елена, dig/nslookup тут непричем, хотя вы вообщем натолкнули меня на решение этой загадки с аномалиями. А "артефакты" nslookup о которых вы говорите, это разве что кэш, который чистится в виндах ipconfig /flushdns

Итак, начинаем опыт. Я создаю на сервере новую зону test.dev, заставляю bind перечитать конфы:
$killall -HUP named

проверяю коррекность новой зоны

$dig @92.63.102.* test.dev
ответ получен, зона есть

теперь с локальной машины (тоже FreeBSD)
#dig @92.63.102.* test.dev
ответа есть, зона не найдена

останавливаю bind
делаю dig с серверной консоли. Сервер не отвечает, что ожидаемо.
делаю dig с локальной консоли. Сервер отвечает!!!
Медленно седею...

Делаю telnet с локальной консоли на сервер на 53 порт - соединения нету. И тут начинаю втыкать!

Запускаю bind. Делаю два правила на firewall на сервере, для tcp и udp 53 порт соответственно. И все становится на свои места!

С удаленной машины:
#dig @92.63.102.* test.dev +notcp
#dig @92.63.102.* test.dev +tcp


По tcp порту отвечает мой сервер! А вот по udp - непонятно кто! Правила по tcp срабатывает, счетчик идет, а по udp нет!

При этом, если по tcp порту мне приходит и ответ с сервера, и описание зоны, то по udp приходит ответ сервера, и зона не находится.

Т.е. коннект на tcp порт проходит нормально, а вот при коннекте на udp порт видимо происходит редирект на DNS сервер FirstVDS.

Т.е. фактически в таком режиме named на моем VDS сервере запущен только для того, чтобы DNS сервера FirstVDS забрали оттуда информацию о зонах (трансфер зон и прочие "длинные" операции идут по TCP), но как таковым сервером имен мой VDS являться не может, так как все короткие запросы (коими являются запросы на резолвинг домена) идут по UDP.

Возможно ли решить этот вопрос? Ведь как-то для тех, у кого два IP адреса куплено у вас это должно решаться. А мне второй IP ни к чему - у меня второй физический сервер есть.

P.S.
Есть еще некоторое подозрение, что такой финт делает какая-то промежуточная точка до серверов FirstVDS, но это крайне маловероятно, и будет проверено в течении часа.

СообщениеДобавлено: Пн июл 21, 2008 4:38 pm
Лена
NetFantom писал(а):Есть еще некоторое подозрение, что такой финт делает какая-то промежуточная точка до серверов FirstVDS

Угу. Если я в моем vds даю команду rndc stop и после этого с моего домашнего компа (тоже с FreeBSD) даю команду dig @мойдомен другоймойдомен, то получаю connection timed out. Затем запускаю заново /etc/rc.d/named start - после этого на ту же команду получаю ответ. С +notcp то же самое.

Думаю, что не только мне интересно, кто это у вас такой подсовывает вам ответы на UDP 53. Так ведь и пароли воровать возможно (man in the middle).

СообщениеДобавлено: Пн июл 21, 2008 8:20 pm
NetFantom
Да, действительно проблема не в FirstVDS, приношу извинения службе поддержки. Но тут такая вообщем тонкая проблема, что сразу и не разберешь.
Елена, вы вообще удивитесь, сколько всего можно сделать, учитывая инфраструктуру интернета. Просто сделайте traceroute до сервера. Как минимум каждый хоп потенциально может много чего делать с вашими пакетами =)
А у меня проблема судя по всему в моем провайдере. Буду бодаться.

СообщениеДобавлено: Чт янв 29, 2009 2:34 pm
dan1005
Скажите, а если я поднял bind, прописал свой домен, dig выдаёт следующее:

dig warelements.ru

; <<>> DiG 9.5.0-P2 <<>> warelements.ru
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62689
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;warelements.ru. IN A

;; ANSWER SECTION:
warelements.ru. 14400 IN A 82.146.35.143

;; AUTHORITY SECTION:
warelements.ru. 14400 IN NS NS2.FIRSTVDS.ru.
warelements.ru. 14400 IN NS NS1.FIRSTVDS.ru.

;; ADDITIONAL SECTION:
NS1.FIRSTVDS.ru. 3198 IN A 82.146.43.2
NS2.FIRSTVDS.ru. 3198 IN A 82.146.35.143

;; Query time: 1 msec
;; SERVER: 82.146.58.126#53(82.146.58.126)
;; WHEN: Thu Jan 29 11:19:19 2009
;; MSG SIZE rcvd: 125


Нужно долго ждать, пока у ns-ов провайдера записи обновятся?
Для справки:

nslookup warelements.ru
Server: 82.146.58.126
Address: 82.146.58.126#53

Name: warelements.ru
Address: 82.146.35.143

СообщениеДобавлено: Чт янв 29, 2009 2:53 pm
Лена
Вам нужно во-первых, создать домен в ISPmanager, что сообщает NS-серверам firstvds, что они должны обслуживать этот домен и брать данные из вашего BIND.

Во-вторых, там, где вы домен регистрировали (NAUNET), указать ns1.firstvds.ru и ns2.firstvds.ru.

СообщениеДобавлено: Чт янв 29, 2009 2:57 pm
dan1005
Спасибо, а если я без панели? Т.е. заказанный шаблон - без предоставления ISPmanager.

Как тогда поступить?

СообщениеДобавлено: Чт янв 29, 2009 3:07 pm
Лена
Тогда ваш BIND можно использовать как первичный, а вторичный можете например взять бесплатно на secondary.net.ua. Когда оба NS будут отвечать правильно (проверяйте командой dig), укажете их там, где домен регистрировали, причем кроме имени первичного NS нужно будет указать еще и его IP-адрес.

СообщениеДобавлено: Чт янв 29, 2009 3:16 pm
dan1005
Понял, спасибо большое.
Буду пробовать.

СообщениеДобавлено: Чт янв 29, 2009 3:21 pm
AKots
Раньше никогда не сталкивался с VDS, поэтому многого не понимаю. Например, добавил недавно запись CNAME (для почты google), и проверяю, когда обновятся сервера имен. В итоге получаю такие данные (оставлены только важные фрагменты):

nslookup webmail.имя_домена.ru ns2.firstvds.ru
webmail.имя_домена.ru canonical name = ghs.GOOGLE.COM.
- - -
nslookup webmail.имя_домена.ru ns1.firstvds.ru
** server can't find webmail.имя_домена.ru: SERVFAIL
- - -
dig webmail.имя_домена.ru CNAME

;; ANSWER SECTION:
webmail.имя_домена.ru. 3600 IN CNAME ghs.GOOGLE.COM.

;; AUTHORITY SECTION:
имя_домена.ru. 3600 IN NS ns2.firstvds.ru.
имя_домена.ru. 3600 IN NS ns1.firstvds.ru.
- - -

Лично мне непонятно, почему nslookup для ns1 выдает ошибку, правда я и не знаю, что за команды nslookup и dig. А почта по адресу webmail.имя_домена.ru работает нормально.
Кстати, если не затруднит, мог бы кто-нибудь дать ссылку на хорошую документацию по этим и подобным командам :roll: .

СообщениеДобавлено: Чт янв 29, 2009 4:09 pm
Лена
AKots писал(а):почему nslookup для ns1 выдает ошибку

В ISPmanager выделите домен и щелкните по чемоданчику с красным крестом.

AKots писал(а):мог бы кто-нибудь дать ссылку на хорошую документацию по этим и подобным командам

Зайдите на свой сервер по SSH, дайте команду:
man dig

и т.п.