
ラボ環境でプライベート ゾーンを提供するために使用される 4.0.6 powerdns デプロイメントを継承しました。この環境を AWS に移行するプロセスにあり、aws.internal.lan を Route53 の受信リゾルバのセットに転送するために powerdns が必要です。再帰子で "forward-zones-recurse" を使用すればこれが実行できるようですが、現在のセットアップではこれが機能しないようです。
dns.conf: を参照してください。
daemon=no
max-tcp-connections=1000
guardian=no
setuid=pdns
setgid=pdns
launch=gpgsql
allow-recursion=127.0.0.0/8, 10.0.0.0/8
recursor=127.0.0.1:5353
local-address=0.0.0.0
local-port=53
master=no
slave=yes
slave-cycle-interval=60
gpgsql-host=127.0.0.1
gpgsql-dbname=pdns
gpgsql-user=redacted
gpgsql-password=redacted
api-key=redacted
webserver=yes
webserver-address=0.0.0.0
webserver-port=8081
recursor.conf:
setuid=pdns-recursor
setgid=pdns-recursor
allow-from=127.0.0.0/8
local-address=127.0.0.1
local-port=5353
forward-zones-recurse=aws.internal.lan=10.162.67.202;10.162.73.199
問題は、pdns がゾーンを Route53 リゾルバに転送しないことです。 を実行すると、dig @127.0.0.1 -p 5353 aws.internal.lan
リカーサが正しいレコードを返すことを確認できますが、ローカル ns サーバーからのみリカーサをクエリできます。ポート 53 でリッスンしている権限サーバーは、その要求をポート 5353 でリッスンしているリカーサに転送するべきではないでしょうか。
これは問題なく動作するはずですが、何かが足りないのかもしれません。設定からわかるように、私は古いバージョンの pdns を使用していますが、この古いバージョンに関するドキュメントが見つからないようです。ここで何が間違っているのか、何かお分かりですか?
答え1
あなたは物事の仕組みを誤解しています。
リゾルバは、リクエストを再帰サーバに転送しません。また、実際にはどこにも転送しません。一方、再帰サーバは、リゾルバによって管理されるゾーンへのリクエストをそのゾーンに転送するように構成する必要があります。
クライアントのクエリは常にリカーサに送られ、リカーサはローカルゾーンをリゾルバに転送し、他のゾーンを適切に解決します。リゾルバでは「リカーサ」設定は機能しません。
再帰器では、次のような設定が必要です
forward-zones=ponyville.eq.=127.0.0.1:5353
リクエストをリゾルバ(ポート5353、リカーサはポート53)に転送する
セカンダリ サーバーがある場合、リゾルバは NS レコードに基づいて NOTIFY パケットを送信しようとするという追加の問題があります。リゾルバがポート 5353 にある場合、これらの通知パケットはリゾルバに着信し、これをリゾルバに転送するには特別な構成 (ここでは説明できないほど複雑) が必要です。ホストに 2 つの IP アドレスを設定し、一方にリゾルバ、もう一方にリゾルバを配置することでこの問題を回避しました。そのため、同じホスト名に異なるポートを設定する必要はありません。
まとめると、
- pdnsはリクエストをどこにも転送しません
- pdns-recusorはあなたの設定に従ってroute53リクエストを転送します
- pdns-recursorはローカルゾーンをリゾルバに転送するように設定する必要があります
- すべてのクライアントリクエストはリゾルバに届く必要があります
- これを実現したい場合、NOTIFYパケットを処理するために多くの追加の魔法が必要になります。