Локальные запросы не отображают записи домена

pdns Версия: 0.0.2081g7b9b55d (ветка Master и версия 4.1)
pdns-recursor Версия: 0.0.1960g7b9b55d (основная ветка и версия 4.1)
dnsdist Версия: 1.2.0

Есть 3 сервера с бэкэндом galera на две из тем есть pdns + pdns-recursor + dnsdist

Конфиги от одного из них:

/ etc / pdns-recursor / recursor. conf

setuid=pdns-recursor
setgid=pdns-recursor
local-address=127.0.0.1
local-port=5301
hint-file=/etc/pdns-recursor/root.zone
allow-from=127.0.0.0/8

/etc/pdns/pdns.conf

setuid=pdns
setgid=pdns
launch=gmysql
gmysql-host=127.0.0.1
gmysql-user=powerdns_user
gmysql-dbname=powerdns
gmysql-password=
allow-axfr-ips=127.0.0.0/8, 192.0.2.5/32
cache-ttl=60
control-console=no
default-soa-name=ns2.example.ru
default-soa-mail=support@example.ru
default-ttl=3600
disable-axfr=no
local-port=5300
local-address=127.0.0.1
do-ipv6-additional-processing=yes
log-dns-queries=yes
logging-facility=0
loglevel=4
master=yes
max-queue-length=5000
max-tcp-connections=20

/etc/dnsdist/dnsdist.conf

setLocal('127.0.0.1')
addLocal('192.0.1.5')
setACL({'0.0.0.0/0', '::/0'}) -- Allow all IPs access
newServer({address='127.0.0.1:5300', pool='auth'})
newServer({address='127.0.0.1:5301', pool='recursor'})
recursive_ips = newNMG()
recursive_ips:addMask('127.0.0.0/8')
recursive_ips:addMask('192.0.1.0/24')
recursive_ips:addMask('192.0.2.0/24')
addAction(NetmaskGroupRule(recursive_ips), PoolAction('recursor'))
addAction(AllRule(), PoolAction('auth'))

На полномочном сервере есть домены. например, google123.com

Когда я пытаюсь разрешить этот адрес из IP-адресов разрешенных recursive_ips , включая @ 127.0.0.1, получите те:

# dig ANY google123.com @192.0.1.5

; <<>> DiG 9.9.4-RedHat-9.9.4-51.el7_4.1 <<>> ANY google123.com @192.0.1.5
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 54293
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;google123.com.         IN  ANY

;; AUTHORITY SECTION:
com.            2118    IN  SOA a.dns.ripn.net. hostmaster.ripn.net. 4032536 86400 14400 2592000 3600

;; Query time: 64 msec
;; SERVER: 192.0.1.5#53(192.0.1.5)
;; WHEN: Sat Jan 27 01:11:38 MSK 2018
;; MSG SIZE  rcvd: 102

Если я попытаюсь разрешить этот домен из другой сети - получите те:

#dig ANY google123.com @192.0.1.5
;; Truncated, retrying in TCP mode.

; <<>> DiG 9.9.4-RedHat-9.9.4-51.el7_4.1 <<>> ANY google123.com @192.0.1.5
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34025
;; flags: qr aa rd; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 3
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1680
;; QUESTION SECTION:
;google123.com.                  IN      ANY

;; ANSWER SECTION:
google123.com.           86400   IN      A       192.0.1.7
google123.com.           86400   IN      NS      ns1.example.ru.
google123.com.           86400   IN      NS      ns2.example.ru.
google123.com.           86400   IN      SOA     ns1.example.ru. hostmaster.example.ru. 2018012603 28800 7200 604800 86400

;; ADDITIONAL SECTION:
ns1.example.ru.         86400   IN      A       192.0.1.5
ns2.example.ru.         86400   IN      A       192.0.2.5

;; Query time: 3 msec
;; SERVER: 192.0.1.5#53(192.0.1.5)
;; WHEN: Fri Jan 26 23:16:29 CET 2018
;; MSG SIZE  rcvd: 181

Похоже, что рекурсор получил ответ, и все в порядке.

Как я могу настроить dnsdist для получения ответов о записях доменов в авторитетных с IP в recursive_ips . Я пробовал разные способы, но ни у кого не получилось.

0
задан 27 January 2018 в 02:37
1 ответ

Dnsdist будет использовать первое совпадающее действие. С вашей конфигурацией он, в зависимости от исходного адреса, будет отдавать предпочтение пулу «рекурсор» или иным образом использовать пул «auth». То есть, для ответа на текущий запрос будет использоваться тот или иной вариант, а не их комбинация.

Судя по результатам, похоже, что для доменов, которые у вас есть в pdns-auth, нет делегирования, поэтому когда запросы поступают в pdns-rec, у него нет способа разрешить ваши локальные домены.

Есть несколько способов решения этой проблемы, в зависимости от того, какова на самом деле конечная цель.

Варианты для того, чтобы заставить pdns-rec работать с вашими доменами.

  • В целом разумный вариант: создать делегирование для ваших зон в pdns-auth (в любом случае это понадобится для остального мира, чтобы иметь возможность разрешать ваши домены).

  • Альтернатива для локального тестирования: configure pdns-rec с, например, forward-zone , чтобы конкретно указать ему, где найти ваши домены (например, forward-zone = example.org = 192.0.2.1, example.net = 192.0.2.1 ). Очевидно, что это будет работать только локально и может потребовать настройки якорей отрицательного доверия ( addNTA в конфигурации Lua ), если включена проверка dnssec.

Параметр для того, чтобы dnsdist всегда отправлял запросы для ваших зон непосредственно в pdns-auth

  • Вы можете настроить dnsdist со списком всех ваших имен зон и всегда направлять их в пул «auth». То есть создайте SuffixMatchNode со всеми именами ваших зон и объедините его со своими правилами. Я полагаю, вы могли бы сделать что-то вроде addAction (AndRule ({NetmaskGroupRule (recursive_ips), NotRule (SuffixMatchNodeRule (my_zones))}), PoolAction ('recursor')) (или даже просто перечислить встроенные суффиксы).
0
ответ дан 24 November 2019 в 03:14

Теги

Похожие вопросы