Это не так, как это работает.
Рекурсия обычно допускается на за просмотр, который, в свою очередь, соответствует конкретным клиентам. Рекурсия это процесс окончательного и полного преобразования DNS-имени в IP-адрес, и он называется рекурсия потому что один и тот же процесс происходит для всех уровней, составляющих имя (например, foo.bar имя будет иметь 3 шага для разрешения имени: один для завершающего TLD ., который я пропустил, один для бар часть и одна для фу часть).
Вы, кажется, тоже путаете рекурсивный преобразователь с авторитетный NS. Последний обслуживает определенные зоны DNS, и, для корректной работы, он должен обслуживать эти зоны для всего внешнего мира (оставим случай, когда вы заставляете свой NS имитировать некоторые зоны, для которых он неавторитетный). Экземпляр DNS-сервера наверняка может включать в себя обе эти сущности, но их функциональность сильно различается. Поэтому, когда ваш NS размещает/обслуживает некоторые зоны DNS, на самом деле ему все равно, является ли входящий запрос рекурсивным или нет. Заключительная часть: когда ваш авторитетный NS отвечает CNAME-RR (ресурсная запись) указывает на другую зону для кого-то, указывая, что для запрошенного хоста нет A-RR, это бремя запроса для дальнейшего разрешения: когда вы CNAME что-то, вы фактически не обязаны ничего относительно записей целевой зоны. Например: foo.bar CNAME, указывающий на fou.baar. Теперь бремя распознавателя лежит на инициаторе запроса. fou.baar ибо это клиент в соответствующей зоне, начиная отторжение с самого начала, а не ваш NS.
Итак, в конце концов, то, что вы просите, — это готовая логика, с которой будет работать любая известная реализация DNS-сервера: обслуживать только те зоны, которые разрешено запрашивать, и выполнять рекурсию только для клиентов (или ключей, например), которым разрешено запрашивать рекурсию.