Перейти к содержимому
Калькуляторы

Вопрос по NSD (авторитетный DNS-сервер)

Столкнулся со странным поведением DNS-сервера.

 

Есть такая конфигурация:

server:
       port: 5353
...
pattern:
       name: "public"
       rrl-whitelist: nxdomain

zone:
       name: "domain.ru."
       zonefile: "zones/zone-public"
       include-pattern: "public"

zone:
       name: "domain.com.ru."
       zonefile: "zones/zone-public"
       include-pattern: "public"

 

И такая зона:

$TTL 1h

@   IN SOA    ns root    (20141031001 1d 6h 1w 1h)
      NS     ns
      NS     ns01
      NS     ns02
      A      127.0.0.1
ns     A      aa.aa.aa.1
ns01   A      aa.aa.aa.1
ns02   A      aa.aa.aa.124
...
test           A     aa.aa.aa.99
*.test         CNAME test
...
domain.com.ru.     A     aa.aa.aa.100
                  MX 10 mx.yandex.ru.
www.domain.com.ru. CNAME domain.com.ru.
...
mail.domain.ru.    CNAME ghs.l.google.com.
...

 

Зоны domain.ru и domain.com.ru идентичны, за исключением того, что в есть несколько записей, которые присутствуют в одной зоне и отсутствуют в другой зоне.

При старте сервиса в логах появляются записи типа "error: zones/zone-public:42: out of zone data", поскольку RR с полным именем в данном случае выходит за пределы зоны. Но насколько я понимаю, в этом случае подобные записи игнорируются, что меня устраивает.

 

Однако странность заключается в следующем.

 

# dig @10.1.128.12 -p 5353 test.domain.ru

; <<>> DiG 9.10.2 <<>> @10.1.128.12 -p 5353 test.domain.ru
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24443
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 4
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;test.domain.ru.                        IN      A

;; ANSWER SECTION:
test.domain.ru.         3600    IN      A       aa.aa.aa.99

;; AUTHORITY SECTION:
domain.ru.              3600    IN      NS      ns.domain.ru.
domain.ru.              3600    IN      NS      ns01.domain.ru.
domain.ru.              3600    IN      NS      ns02.domain.ru.

;; ADDITIONAL SECTION:
ns.domain.ru.           3600    IN      A       aa.aa.aa.1
ns01.domain.ru.         3600    IN      A       aa.aa.aa.1
ns02.domain.ru.         3600    IN      A       aa.aa.aa.124

;; Query time: 0 msec
;; SERVER: 10.1.128.12#5353(10.1.128.12)
;; WHEN: ср апр 08 17:39:55 MSK 2015
;; MSG SIZE  rcvd: 208


# dig @10.1.128.12 -p 5353 test.domain.com.ru

; <<>> DiG 9.10.2 <<>> @10.1.128.12 -p 5353 test.domain.com.ru
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 36173
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;test.domain.com.ru.             IN      A

;; Query time: 0 msec
;; SERVER: 10.1.128.12#5353(10.1.128.12)
;; WHEN: ср апр 08 17:40:15 MSK 2015
;; MSG SIZE  rcvd: 46

 

Почему запрос на test.domain.ru выполняется, а на test.domain.com.ru не выполняется?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Видимо, потому, что он отбрасывает кривые зоны. Сомневаюсь я, что он может игнорировать отдельные записи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Тогда бы ни одна зона не загрузилась.

А ведь первая зона обрабатывается нормально.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У меня на одном сервере все еще BIND работает, там все хорошо.

Но он тяжелый и не без глюков.

Поэтому я его заменяю на связку NSD/Unbound.

Связка работает лучше, но иногда вылезают особенности, как сейчас.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поэтому я его заменяю на связку NSD/Unbound.

Связка работает лучше, но иногда вылезают особенности, как сейчас.

 

Это ваши проблемы. bind работает как часы в самых разнообразных схемах использования.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

NSD рулез - 224 000 зон в режиме авторитативного сервера, выкидывайте Bind на свалку (на 30 000 доменов он у меня загржался 30 минут - это норм вообще? Я уже молчу про спорадические зависания и адо-подобные конфиги).

 

NSD выкидывает зону целиком, да - там компилятор зон так устроен. Но прежде чем коммитить изменения в файл зоны - не мешало бы его проверять спец тулзой от nsd - zone_checker, она в коде лежит. Она сильно жестче к ошибкам и бреду нежели похожая тулза от named.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

NSD выкидывает зону целиком, да - там компилятор зон так устроен.

Странно, почему же тогда первая зона ресолвится?

Что ж, видимо придется использовать разные файлы зон для разных зон.

В BIND было удобно, что он может игнорировать отдельные RR, а не зону целиком.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот поподробнее от авторов NSD: https://www.nlnetlabs.nl/bugs-script/show_bug.cgi?id=607

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

NSD рулез - 224 000 зон в режиме авторитативного сервера, выкидывайте Bind на свалку (на 30 000 доменов он у меня загржался 30 минут - это норм вообще? Я уже молчу про спорадические зависания и адо-подобные конфиги).

 

А теперь подскажите, скольки организациям в стране надо обслуживать овер 200K зон?

 

Файлы зон можно положить на ssd, сами зоны положить в LDAP или Mysql. И потом правильно организовать обновление зон, а не использовать опцию restart.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

А теперь подскажите, скольки организациям в стране надо обслуживать овер 200K зон?

То есть те, кому не надо 200к зон, должны использовать бинд просто потому что?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

А теперь подскажите, скольки организациям в стране надо обслуживать овер 200K зон?

То есть те, кому не надо 200к зон, должны использовать бинд просто потому что?

 

А потому что некорректная постановка задачи.

bind - стандарт в ДНС.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

bind - стандарт в ДНС.

А с чего бы это вдруг бинд стал стандартом? То что он в той же фре до 10 версии шел в комплекте? :)

То что он просто популярный - от этого стал стандартом?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

То что он просто популярный - от этого стал стандартом?

1. Раньше альтернатив не было.

2. Его пилит ISC, у них основная задача 100% следовать RFC, остальное вторично.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ISC, у них основная задача 100% следовать RFC, остальное вторично.

ну вот этого не знал, спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединюсь к советующим выкинуть NSD и поставить BIND. У меня на нём NS-ы, обслуживающие ~300к зон: никаких проблем, кроме долгой загрузки. Стартует примерно 20 минут на sata 7200 дисках, и это понятно - ему нужно кучу файлов пропарсить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А какие проблемы с NSD-то? Не парсить битый конфиг зоны - это с каких времен стало серьезной проблемой? На NSD работает 90% root-dns. И лишь от силы 10% на Бинде. По-моему, лучшего краш теста и сравнения "кто лучше и надежнее" не придумать.

 

Тот же L-root целиком и полностью NSD: http://www.dns.icann.org/index.html%3Fp=3.html тоже самое по K http://k.root-servers.org. Bind - это жуткое нагромождение крапа в коде, огромное количество совеершенно не нужных авторитативнику функций и пагубное по дизайну совмещение рекурсора и авторитативника.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не нужно меня агитировать за NSD.

У меня используется оба варианта (BIND и NSD/Unbound) и связка NSD/Unbound мне нравится больше.

Но вот то, что он выкидывает зону целиком, это неудобно в моем случае.

У меня одна зона почти полностью должна повторять другую зону (за некоторыми исключениями), а из-за такой особенности я не могу использовать один файл на обе зоны.

BIND удобен для тестовых и временных схем, именно тем, что у него все в одном и все мыслимые возможности.

 

P.S. А почему authoritative называют "авторитативным"? Ведь это "авторитетный".

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.