Я перешел с 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
(который имеет записи). (Этот тип промежуточного узла дерева без записей называется пустым нетерминальным или ENT ).
Поскольку существует имя www.example.com
, из определения того, как работают подстановочные знаки, следует, что на него не должны влиять *. Example.com
, и вы получите ] Ответ NODATA
(указывается статусом NOERROR
с SOA
в разделе полномочий), если вы не добавляете записи в сам www.example.com
.