PowerDNSを使用すると、奇妙な問題が発生しました。私に説明されている最初の問題は、ダウンしたドメインにHTTP要求を出すことができますが、staging.corp
後続の要求はDNSエラーが原因で失敗することです。
問題が見つかったようですが、なぜこれが起こるのか、これが有効な動作であるのか、PowerDNS担当者にバグを報告するのか理解できません。
アップストリームDNSサーバーは有効なAレコードを返しますが、NXDOMAINの場合はAAAAレコードを返します。最初の要求が行われると、有効なAレコードが返されますが、NXDOMAINがキャッシュされ、すべての新しい要求がすぐにNXDOMAINを返すようです。
ステップ1:DNSが実行されていることを確認する
root:~# grep -v ^# /etc/powerdns/recursor.conf | grep -v ^$
etc-hosts-file=/etc/powerdns/hosts
export-etc-hosts=on
forward-zones-file=/etc/powerdns/recursor-forward-zones
local-port=53
quiet=yes
setgid=pdns
setuid=pdns
root:~# cat /etc/powerdns/recursor-forward-zones
+staging.corp=10.100.251.99
+.=8.8.8.8
root:~# dig m.emu.staging.corp
; <<>> DiG 9.11.3-1ubuntu1.18-Ubuntu <<>> m.emu.staging.corp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39857
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;m.emu.staging.corp. IN A
;; ANSWER SECTION:
m.emu.staging.corp. 6 IN A 10.200.145.22
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Mar 31 09:45:47 PDT 2023
;; MSG SIZE rcvd: 67
ステップ2:要求する
root:~# curl https://m.emu.staging.corp
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title></title>
<meta HTTP-EQUIV="REFRESH" content="0; url=https://mobile.emu.staging.corp">
</head>
<body>
</body>
</html>
ステップ3:DNSをもう一度確認してください。NXドメイン
root:~# dig m.emu.staging.corp
; <<>> DiG 9.11.3-1ubuntu1.18-Ubuntu <<>> m.emu.staging.corp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 15030
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;m.emu.staging.corp. IN A
;; AUTHORITY SECTION:
staging.corp. 165 IN SOA ns.corp. dns-admin.corp. 2022052303 10800 7200 2419200 3600
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Mar 31 09:46:03 PDT 2023
;; MSG SIZE rcvd: 127
アップストリームDNSサーバーが有効なAレコードで応答しています。
root:~# dig @10.100.251.99 m.emu.staging.corp a
; <<>> DiG 9.11.3-1ubuntu1.18-Ubuntu <<>> @10.100.251.99 m.emu.staging.corp a
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55158
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;m.emu.staging.corp. IN A
;; ANSWER SECTION:
m.emu.staging.corp. 10 IN A 10.200.145.22
;; Query time: 46 msec
;; SERVER: 10.100.251.99#53(10.100.251.99)
;; WHEN: Fri Mar 31 09:46:44 PDT 2023
;; MSG SIZE rcvd: 56
しかし、NXDOMAINはAAAA:
root:~# dig @10.100.251.99 m.emu.staging.corp aaaa
; <<>> DiG 9.11.3-1ubuntu1.18-Ubuntu <<>> @10.100.251.99 m.emu.staging.corp aaaa
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 10062
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;m.emu.staging.corp. IN AAAA
;; AUTHORITY SECTION:
staging.corp. 1800 IN SOA ns.corp. dns-admin.corp 2022052303 10800 7200 2419200 3600
;; Query time: 109 msec
;; SERVER: 10.100.251.99#53(10.100.251.99)
;; WHEN: Fri Mar 31 09:46:48 PDT 2023
;; MSG SIZE rcvd: 127
pdns-recursor を再起動すると、1 つの要求に対して再び動作します。
問題を解決するためのいくつかのオプションが表示されます。
- アップストリームDNSサーバーがNXDOMAINなしで応答できるようにする
アップストリームDNSサーバーが正しく機能していない場合、この動作を説明するRFCはありますか?これまで私は何も見つかりませんでした。 「これが壊れたのにこれが理由です」という文書を指摘できたらと思います。
- AAAA クエリを削除するように PowerDNS を変更する
これを行う方法に関するドキュメントが見つかりません。これはシステムレベルでなければならず、私が提供したカールコマンドは単なる例であり、DNSクエリはどこからでも来ることができます。
ベストアンサー1
NXDOMAINは、その名前(およびその下のすべての名前)が存在しないことを意味します。したがって、PowerDNSは正常に動作していますが、特権DNSサーバーに問題があります。