Я поискал в Интернете решение и нашел множество тем с разными предложениями. Большинство из них, которые я обнаружил, использовали LUA на преобразователе для возврата записей. В других сообщениях предлагается использовать бэкенды GEO-IP или Pipe. Весь контент, который я прочитал, использовал
Мне любопытно узнать, возможно ли через LUA изменить сервер пересылки на основе диапазона сети, а не использовать LUA для хранения информации о зоне.
Если мне удастся заставить работать логику, подобную следующей, у меня все будет готово:
if sourceip comes from (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) {
forwarder = 192.168.0.1;
}else{
forwarder = 8.8.8.8;
}
Я не вижу примеров LUA из pdns, которые демонстрируют изменение каких-либо настроек в самой PDNS, и мне любопытно, возможно ли это вообще.
Ни PowerDNS Server, ни Recursor не поддерживают настройку разделения горизонта, как BIND.
Вы можете обойти это, например, запустив код Lua в вашем рекурсоре, который напрямую предоставляет ответы, которые вы хотите обслуживать, например, для конкретной подсети, но, как вы уже выяснили, вы не можете управлять тем, куда будут перенаправляться запросы из Lua.
Относительно новым дополнением к семейству кода PowerDNS является балансировщик нагрузки DNS, который программируется в Lua, который позволяет отправлять запросы различным серверам имен на основе практически всего, что позволяет протокол DNS. Видеть http://dnsdist.org/ и https://github.com/PowerDNS/pdns/blob/master/pdns/README-dnsdist.md . Пример Split Horizon разделяет рекурсивные и нерекурсивные запросы, но вы также можете разделить его в зависимости от исходного адреса, например, с помощью функции addPoolRule (netmask, pool).
Кстати. Людям Lua не нравится, когда вы пишете заглавными буквами. Видеть http://www.lua.org/about.html "Что в имени" ;-)