PowerDNS-Recursor передает IP клиента (а не его)

Я пишу вам, потому что я построил инфраструктуру с сервером Bind и рекурсором PowerDNS, который передает запросы на сервер Bind. Что я хотел сделать, так это то, что рекурсор передает IP-адрес клиента, а не его, поэтому я попытался сделать это с помощью EDNS (0). Вот диаграмма, которая суммирует то, что я хочу сделать:

Client : 10.0.0.1/24
|
| “test.com”
|
Server with PDNS-RECURSOR : 192.168.1.1/24
|
| “test.com”  with ip_source=10.0.0.1/24
|
Server with BIND : 192.168.1.2/24

И разные файлы конфигурации:

• BIND Conf: 3 представления

View recursor {} #Return specific IP for the recursor machine
View localhost {} #Return specific IP for the localhost machine.
View external {} #Return specific IP for the external machines.

• Pdns-Recursor Conf (4.1):

edns-outgoing-bufsize=1680
edns-subnet-whitelist=0.0.0.0/0.
forward-zones=192.168.1.2
use-incoming-edns-subnet=yes

К сожалению, он всегда возвращает вид рекурсора, у вас есть решение? Заранее спасибо !


person BlablaDu91    schedule 18.04.2018    source источник


Ответы (1)


Вы не можете передать IP, но можете передать подсеть. Для этого требуется параметр EDNS под названием Client-Subnet, описанный в RFC7871.

Для PowerDNS это управляется в конфигурации различными параметрами, начинающимися с ecs-, см. https://doc.powerdns.com/recursor/settings.html#ecs-add-for

Вы можете попробовать ecs-ipv4-bits: 32, чтобы попытаться отправить весь IP-адрес (опция больше касалась отправки подсети из соображений конфиденциальности).

Конфигурация привязки для этой опции описана на странице https://www.isc.org/wp-content/uploads/2017/04/ecs.pages.pdf

Вы должны пронюхать трафик между ними, чтобы убедиться, что PowerDNS правильно отправляет информацию для привязки.

Вы также можете попробовать с dig запросить прямую привязку с соответствующей опцией клиентской подсети (+subnet=), чтобы убедиться, что привязка делает то, что вам нужно.

person Patrick Mevzek    schedule 18.04.2018