質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.40%
DNS

DNSとは、Domain Name Systemのことで、インターネットなどのTCP/IPネットワーク上でドメイン名やホスト名と、IPアドレスとの対応づけを管理するシステムです。DNSのデータベースは、IPアドレスの4つの数字を通知するDNSサーバーで構築されており、IPアドレスをドメイン名から引き出す機能やドメイン名に関するメールサーバ情報を取り扱っています。

Q&A

解決済

1回答

299閲覧

権威サーバ(nsd)がキャッシュサーバ(Unbound)からの問い合わせをbad notify reply opcode/flagsとして弾く

nekoy3

総合スコア6

DNS

DNSとは、Domain Name Systemのことで、インターネットなどのTCP/IPネットワーク上でドメイン名やホスト名と、IPアドレスとの対応づけを管理するシステムです。DNSのデータベースは、IPアドレスの4つの数字を通知するDNSサーバーで構築されており、IPアドレスをドメイン名から引き出す機能やドメイン名に関するメールサーバ情報を取り扱っています。

0グッド

0クリップ

投稿2024/05/02 09:21

実現したいこと

Unboundからnsdが持つゾーンの名前解決を行えるようにしたい。

発生している問題・分からないこと

キャッシュサーバをUnboundで動作させており、Unboundに対して特定のローカル用に使う名前の解決を求められたらnsdで動作している権威サーバに名前解決を求めるような構成にしたいと考えています。

しかし、digコマンドで独自ドメインとして用意したmynk.homeを名前解決しようとしてもSERVFAILが返され、NSD側のログでは「error: xfrd: zone mynk.home: received bad notify reply opcode/flags from <UnboundのIPアドレス>」が返ってくる状態です。

エラーメッセージ

error

1Unbound側でdigコマンドを実行した際の応答 2dns@dns:~$ dig www.mynk.home 3;; communications error to 127.0.0.1#53: timed out 4 5; <<>> DiG 9.18.18-0ubuntu0.22.04.2-Ubuntu <<>> www.mynk.home 6;; global options: +cmd 7;; Got answer: 8;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 26521 9;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1 10 11;; OPT PSEUDOSECTION: 12; EDNS: version: 0, flags:; udp: 1232 13;; QUESTION SECTION: 14;www.mynk.home. IN A 15 16;; Query time: 3 msec 17;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP) 18;; WHEN: Thu May 02 08:58:19 UTC 2024 19;; MSG SIZE rcvd: 42 20 21NSDのログ(systemctl) 22Apr 30 04:59:25 nsd nsd[73535]: [2024-04-30 04:59:25.856] nsd[73535]: error: Cannot open /var/log/nsd.log for appending (Read-only file system), logging to stderr 23Apr 30 04:59:25 nsd nsd[73535]: [2024-04-30 04:59:25.856] nsd[73535]: notice: nsd starting (NSD 4.3.9) 24Apr 30 04:59:25 nsd nsd[73536]: [2024-04-30 04:59:25.912] nsd[73536]: notice: nsd started (NSD 4.3.9), pid 73535 25Apr 30 04:59:25 nsd nsd[73535]: [2024-04-30 04:59:25.913] nsd[73535]: error: xfrd: zone mynk.home: received bad notify reply opcode/flags from 192.168.0.82 26Apr 30 04:59:25 nsd systemd[1]: Started Name Server Daemon. 27Apr 30 04:59:25 nsd nsd[73535]: [2024-04-30 04:59:25.914] nsd[73535]: error: xfrd: zone mynk.home: received bad notify reply opcode/flags from 192.168.0.82 28Apr 30 04:59:25 nsd nsd[73535]: [2024-04-30 04:59:25.914] nsd[73535]: error: xfrd: zone mynk.home: received bad notify reply opcode/flags from 192.168.0.82 29Apr 30 04:59:25 nsd nsd[73535]: [2024-04-30 04:59:25.915] nsd[73535]: error: xfrd: zone mynk.home: received bad notify reply opcode/flags from 192.168.0.82 30Apr 30 04:59:25 nsd nsd[73535]: [2024-04-30 04:59:25.915] nsd[73535]: error: xfrd: zone mynk.home: received bad notify reply opcode/flags from 192.168.0.82 31Apr 30 04:59:25 nsd nsd[73535]: [2024-04-30 04:59:25.915] nsd[73535]: error: xfrd: zone mynk.home: max notify send count reached, 192.168.0.82 unreachable

該当のソースコード

server: port: 53 interface: 0.0.0.0 access-control: 127.0.0.0/8 allow access-control: 192.168.0.0/24 allow verbosity: 3 logfile: /var/log/unbound.log use-syslog: no #do-not-query-localhost: no #Allow private IPs in the answers private-domain: "mynk.home." #Skip DNSSEC validation fo this domain domain-insecure: "mynk.home." remote-control: control-enable: yes control-interface: 127.0.0.1 control-port: 953 server-key-file: "/etc/unbound/unbound_server.key" server-cert-file: "/etc/unbound/unbound_server.pem" control-key-file: "/etc/unbound/unbound_control.key" control-cert-file: "/etc/unbound/unbound_control.pem" stub-zone: name: "mynk.home." stub-addr: 192.168.0.86 forward-zone: name: "." forward-addr: 8.8.8.8 ※mynk.home以外への応答は8.8.8.8に流すようにしており、正常に解決できます。
server: port: 53 ip-address: 127.0.0.1 do-ip4: yes logfile: "/var/log/nsd.log" zonesdir: "/etc/nsd/zones" remote-control: control-enable: yes zone: name: "mynk.home" zonefile: "mynk.home.zone" notify: 192.168.0.82 MYKEY # ゾーン転送で送る側の設定 provide-xfr: 192.168.0.82 MYKEY key: name: "MYKEY" algorithm: hmac-sha256 secret: "<鍵>"
$TTL 1 $ORIGIN mynk.home. @ IN SOA ns.mynk.home. root.mynk.home. ( 2024041501 ; serial number 10800 ; Refresh 3600 ; Retry 604800 ; Expire 1 ; Min TTL ) IN NS ns.mynk.home. pve01 IN A 192.168.0.xx www IN A 192.168.0.xx scriptsrv IN A 192.168.0.xx ts IN A 192.168.0.xx db IN A 192.168.0.xx ups IN A 192.168.0.xx unbound IN A 192.168.0.xx nsd IN A 192.168.0.xx

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

・nsdが自身に対してmynk.homeの解決を求めるとゾーンファイルで記述した通りの結果が得られるので、ローカルの場合正常に動いているのは確認しています。
・unboundもローカルでyahoo.co.jpなどの解決を求めると8.8.8.8を経由して名前解決できます。
・unbound側からdigコマンドでmynk.homeを解決しようとするとstub-zoneの設定でnsdに対して名前解決を求める動作は、nsd側のログを見る限り出来ているようです。
・nsdが名前解決のリクエストを「error: xfrd: zone mynk.home: received bad notify reply opcode/flags from 192.168.0.82」をして弾く点について、DNSメッセージのパケットがおかしいのか?と思いつつも、調べても情報が見つけられず、解決が出来ない状態です。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ikedas

2024/05/02 12:11

実際に実行したコマンドを全て省略せずに記して、「これを実行したらこのメッセージが出離された」というように説明してください。 ちなみに、このコメント欄に書くのではありません。質問文を編集して書いてください。
ikedas

2024/05/02 22:11

あと、操作を実施してから問題が発生するまでの間のUnboundのログも提示してください (質問文に追記してください)。
guest

回答1

0

ベストアンサー

設定ファイルのファイル名が書いてないのでわかりにくいのですが、unbound.conf、nsd.conf、ゾーンファイルの順に並んでいるということですね。

問題のメッセージ

nsd[73535]: error: xfrd: zone mynk.home: received bad notify reply opcode/flags from 192.168.0.82

は、NSDがUnbound側にゾーン転送を開始させようとしてnotifyを投げたが正しい応答が返ってこなかったということを報告しています (Unbound側から問い合わせがあってそれをNSDが拒否しているのではありません)。

権威サーバからのゾーン転送でキャッシュサーバのキャッシュを更新しようと考えたのでしょうか。もしもそうならばそういうことはできません。ゾーン転送は基本的に権威サーバ間でゾーンの更新を伝播させる仕組みで、キャッシュを更新するためのものではありません (通常、キャッシュサーバのキャッシュをサーバ外から操作することはありません)。

つまり、NSDでキャッシュサーバに対してnotifyとprovide-xfrの設定をしても機能しません。それにこの2行の設定がなくてもキャッシュサーバは期待通りの動作をするはずです。

ゾーン転送によってゾーンの更新を伝播させたい場合は、Unbound側もそのゾーンの権威サーバとして設定する必要があります。

投稿2024/05/02 23:00

編集2024/05/03 00:50
ikedas

総合スコア4441

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nekoy3

2024/05/03 15:23

調べながら参考に設定しており、意味をあまり理解しないまま設定していたためゾーン転送に関する設定が入ってしまっていました。(セカンダリサーバも用意しないのでゾーン転送を使うつもりはなかったです。) 2行を削除することでこのエラーは解消されました。 言葉足らずで申し訳なかったのですが、Unboundがnsdに問い合わせて、nsdが持つゾーンファイルの情報をもとに名前解決を行いたい、というのが目的で、 結果としてnsdが待ち受けるアドレス(ip-address: 127.0.0.1)をnsd自身のIPアドレスに変更したら解決できるようになりました。 よく分からんエラーを勝手に目的が達成できない理由として紐づけてしまったり、設定が適当だったり、説明不足だったり、とても拙い質問になってしまいましたが、回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.40%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問