Назад | Перейти на главную страницу

PowerDNS как внутренний преобразователь и закрытый рекурсор

У меня есть два недавно настроенных сервера PowerDNS. Один действует как хозяин, второй как раб. На каждом из них работают два демона: powerdns и powerdns-recursor. Первый привязывается к порту 5300 tcp, второй - к 53. Я добавил следующие правила в recursor.conf (1.2.3.4 - это IP-адрес сервера):

forward-zones=.=1.2.3.4:5300
forward-zones-recurse=.=1.2.3.4:5300;8.8.8.8

Благодаря им мои серверы разрешают домены, добавленные внутри, а также внешние домены, такие как google.com. Единственная проблема заключается в том, что если я разрешаю отправлять рекурсивные запросы только своим локальным IP-адресам, внутренние добавленные домены не будут доступны из мира. С другой стороны, если я установил allow-from значение 0.0.0.0/0 в recursor.conf, мои серверы будут уязвимы для атак DNS Amplification. Что я должен делать? Я хочу разрешить всем IP-адресам запрашивать у моих серверов домены, на которые они имеют право, но запретить рекурсивные запросы.

Для сценария, который вы описываете в вопросе, со смесью клиентов, ожидающих рекурсии, и других клиентов, ожидающих авторитетных ответов, pdns-rec - это не то, что вы должны показывать миру в первую очередь.

Читая немного между строк, я думаю, что на самом деле вопрос заключается в том, как можно запускать как pdns-auth, так и pdns-rec с одного IP-адреса теперь, когда pdns-auth больше не имеет опции конфигурации рекурсора, которая использовала существующие в прошлое.
Для этого вам, вероятно, следует хорошенько взглянуть на Руководство по PowerDNS на Переход от использования рекурсии на полномочном сервере к использованию рекурсора.

Это руководство для вашего сценария сводится к тому, что, во-первых, самый простой и, возможно, лучший подход - просто разместить эти службы на разных IP-адресах, но при этом предлагаемое альтернативное решение остается неизменным. dnsdist перед вашими экземплярами pdns-auth и pdns-rec (dnsdist - это то, что будет прослушивать порт 53), позволяя dnsdist передавать запросы от клиентов, которые должны иметь рекурсию, в пул с вашим экземпляром pdns-rec и все другие запросы к пулу с вашим экземпляром pdns-auth.