Если я правильно понимаю, все пакеты сначала идут на внутренний DNS-сервер
Да. Точнее клиентам по DHCP передаётся локальный DNS.
оттуда неразрешенные запросы перенаправляются на SkyDNS
Все запросы идут на SkyDNS, фильтруются на их DNS-сервере.
В этом случае на локальном DNS-сервере в таблице Prerouting по маске (кого не надо фильтровать) маркируем пакеты. Потом из таблицы Postrouting забираем промаркированные пакеты и перенаправляенм их на другой внешний DNS-сервер (гугл, яндекс etc.).
Если я правильно понял, то в итоге всё равно сервер будет инициировать отправку и снова будет применяться профиль сервера.
Тут основной вопрос: в каком режиме Ваш DNS-сервер работает. Если просто пересылает пакеты с неразрешенными запросами - то их перехватить на выходе можно. А если кэширует получаемые ответы, то тут правила фаервола не помогут. Нужно либо его тоньше настраивать, если это ,вообще, возможно (но тут я Вам ничем не помогу, с таким не связывался ниразу), либо схему сети несколько изменить.
То есть предлагаете к профилям вообще не подвязываться, а посылать на SkyDNS всех кого наоборот нужно фильтровать ? Например:
Да, это самый простой вариант. Но он сам по себе работать не будет. Выше должно стоять правило, разрешающее всем локальный днс-сервер, в Вашем днс-сервере не должно быть включено использование днс верхнего уровня, а по dhcp выдавать нужно не только локальный, но и внешний днс: Вашего провайдера, либо общедоступный.
Интересно бы конечно с профилями наладить...
Я так и не понял, о каких профилях идет речь. Это группы в домене? Или что это?
В первом сообщении, как мне показалось, вы акцент на ip делали... Вот я Вам под фильтрацию по ip 2 принципиальных схемы и предложил. Обе рабочие, но при определенной конфигурации локальной сети.