Я перешел с PowerDNS на Knot 2.7.
У меня сейчас конфликт с 2 записями DNS.
abcd.**www**.example.com CNAME -> somehost.example.net
*.example.com -> example.com
Теперь проблема с доменом www.example.com. В PowerDNS это должно было разрешиться как * .example.com. Теперь ответа нет. Когда я добавляю запись A или CNAME для www.example.com, все в порядке. Проблема основана на первом CNAME, как я писал выше.
Вы можете мне объяснить, почему и как я могу это исправить?
Спасибо.
Поведение, которое вы описываете, вполне ожидаемо; что меня удивляет, так это утверждение о том, что вы получили другой результат с PowerDNS (вы можете отправить отчет об ошибке, если вы можете воспроизвести это с текущей версией).
Причина, по которой это ожидаемое поведение, заключается в том, что функциональные возможности подстановочного знака в DNS определены таким образом, что подстановочный знак расширяется только до имен, которые не существует под записью с подстановочным знаком (то есть, по сути, имена, в которых в противном случае вы бы получили NXDOMAIN
ответ).
Что может показаться не интуитивным, так это то, что с двумя записями в вопросе имя www.example.com
считается существует (даже если у него нет собственных записей), потому что это промежуточный узел в ветви, ведущей к abcd.www.example.com
(у которого есть записи). (Этот тип промежуточного узла дерева без записей называется пустой нетерминальный или ЛОР).
Как имя www.example.com
существует, из определения того, как работают подстановочные знаки, следует, что на него не должны влиять *.example.com
и вы получите NODATA
ответ (обозначен NOERROR
статус с SOA
в разделе полномочий), если вы не добавляете записи в www.example.com
сам.