alibek Posted April 8, 2015 Posted April 8, 2015 Столкнулся со странным поведением 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 не выполняется? Вставить ник Quote
vop Posted April 8, 2015 Posted April 8, 2015 Видимо, потому, что он отбрасывает кривые зоны. Сомневаюсь я, что он может игнорировать отдельные записи. Вставить ник Quote
alibek Posted April 8, 2015 Author Posted April 8, 2015 Тогда бы ни одна зона не загрузилась. А ведь первая зона обрабатывается нормально. Вставить ник Quote
alibek Posted April 9, 2015 Author Posted April 9, 2015 У меня на одном сервере все еще BIND работает, там все хорошо. Но он тяжелый и не без глюков. Поэтому я его заменяю на связку NSD/Unbound. Связка работает лучше, но иногда вылезают особенности, как сейчас. Вставить ник Quote
vlad11 Posted April 10, 2015 Posted April 10, 2015 Поэтому я его заменяю на связку NSD/Unbound. Связка работает лучше, но иногда вылезают особенности, как сейчас. Это ваши проблемы. bind работает как часы в самых разнообразных схемах использования. Вставить ник Quote
pavel.odintsov Posted April 14, 2015 Posted April 14, 2015 NSD рулез - 224 000 зон в режиме авторитативного сервера, выкидывайте Bind на свалку (на 30 000 доменов он у меня загржался 30 минут - это норм вообще? Я уже молчу про спорадические зависания и адо-подобные конфиги). NSD выкидывает зону целиком, да - там компилятор зон так устроен. Но прежде чем коммитить изменения в файл зоны - не мешало бы его проверять спец тулзой от nsd - zone_checker, она в коде лежит. Она сильно жестче к ошибкам и бреду нежели похожая тулза от named. Вставить ник Quote
alibek Posted April 14, 2015 Author Posted April 14, 2015 NSD выкидывает зону целиком, да - там компилятор зон так устроен. Странно, почему же тогда первая зона ресолвится? Что ж, видимо придется использовать разные файлы зон для разных зон. В BIND было удобно, что он может игнорировать отдельные RR, а не зону целиком. Вставить ник Quote
pavel.odintsov Posted April 14, 2015 Posted April 14, 2015 Вот поподробнее от авторов NSD: https://www.nlnetlabs.nl/bugs-script/show_bug.cgi?id=607 Вставить ник Quote
vlad11 Posted April 17, 2015 Posted April 17, 2015 NSD рулез - 224 000 зон в режиме авторитативного сервера, выкидывайте Bind на свалку (на 30 000 доменов он у меня загржался 30 минут - это норм вообще? Я уже молчу про спорадические зависания и адо-подобные конфиги). А теперь подскажите, скольки организациям в стране надо обслуживать овер 200K зон? Файлы зон можно положить на ssd, сами зоны положить в LDAP или Mysql. И потом правильно организовать обновление зон, а не использовать опцию restart. Вставить ник Quote
zi_rus Posted April 17, 2015 Posted April 17, 2015 А теперь подскажите, скольки организациям в стране надо обслуживать овер 200K зон? То есть те, кому не надо 200к зон, должны использовать бинд просто потому что? Вставить ник Quote
vlad11 Posted April 17, 2015 Posted April 17, 2015 А теперь подскажите, скольки организациям в стране надо обслуживать овер 200K зон? То есть те, кому не надо 200к зон, должны использовать бинд просто потому что? А потому что некорректная постановка задачи. bind - стандарт в ДНС. Вставить ник Quote
GrandPr1de Posted April 17, 2015 Posted April 17, 2015 bind - стандарт в ДНС. А с чего бы это вдруг бинд стал стандартом? То что он в той же фре до 10 версии шел в комплекте? :) То что он просто популярный - от этого стал стандартом? Вставить ник Quote
Ivan_83 Posted April 17, 2015 Posted April 17, 2015 То что он просто популярный - от этого стал стандартом? 1. Раньше альтернатив не было. 2. Его пилит ISC, у них основная задача 100% следовать RFC, остальное вторично. Вставить ник Quote
GrandPr1de Posted April 17, 2015 Posted April 17, 2015 ISC, у них основная задача 100% следовать RFC, остальное вторично. ну вот этого не знал, спасибо Вставить ник Quote
Phantasm Posted April 18, 2015 Posted April 18, 2015 Присоединюсь к советующим выкинуть NSD и поставить BIND. У меня на нём NS-ы, обслуживающие ~300к зон: никаких проблем, кроме долгой загрузки. Стартует примерно 20 минут на sata 7200 дисках, и это понятно - ему нужно кучу файлов пропарсить. Вставить ник Quote
pavel.odintsov Posted April 18, 2015 Posted April 18, 2015 А какие проблемы с 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 - это жуткое нагромождение крапа в коде, огромное количество совеершенно не нужных авторитативнику функций и пагубное по дизайну совмещение рекурсора и авторитативника. Вставить ник Quote
alibek Posted April 18, 2015 Author Posted April 18, 2015 Не нужно меня агитировать за NSD. У меня используется оба варианта (BIND и NSD/Unbound) и связка NSD/Unbound мне нравится больше. Но вот то, что он выкидывает зону целиком, это неудобно в моем случае. У меня одна зона почти полностью должна повторять другую зону (за некоторыми исключениями), а из-за такой особенности я не могу использовать один файл на обе зоны. BIND удобен для тестовых и временных схем, именно тем, что у него все в одном и все мыслимые возможности. P.S. А почему authoritative называют "авторитативным"? Ведь это "авторитетный". Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.