DNS【BIND】のresolvingエラーの対処「unexpected RCODE ・・・」
BINDのログに「unexpected RCODE ・・・」のようなログが大量に記録される
目次
環境
- Red Hat Enterprise Linux Server release 7.2 (Maipo)
- bind-chroot-9.9.4-51.el7_4.2.x86_64
問題
BINDのログに下記のようなログが大量に記録される
最悪の場合、ログがあふれる。
named[PID]: error (unexpected RCODE REFUSED) resolving
named[PID]: error (unexpected RCODE SERVFAIL) resolving
named[PID]: error (unexpected RCODE FORMERR) resolving
原因
自サーバのBINDが名前解決をしようとしたら予期しないメッセージが返ってきて「拒否しました / 失敗した / 形式が違う」という意味合いなのですが、
|
ネットワーク経路上でパケットが落ちていたり問い合わせ先のサーバでのクライアント制限数を超えたりということがあるようです。
つまり、ネットワークの経路上か問い合わせ先サーバが悪いんじゃないの?というところが原因となり、自サーバのリゾルバが悪いわけではない。ということのようです。
digコマンドを駆使して切り分けというのも大変だしということで下記の対処となります。
対処
キャッシュをクリアする。
rdnc flush
サーバーのキャッシュをフラッシュします。
rdnc flushname name [view]
指定された名前をサーバのDNSキャッシュからフラッシュし、必要に応じてサーバのネームサーバアドレスデータベースまたは不良サーバキャッシュからフラッシュします。
rdnc flushtree name [view]
サーバーのDNSキャッシュ、アドレスデータベース、および不良サーバーキャッシュから、指定された名前とすべてのサブドメインをフラッシュします。
ログを記録しないように抑制する
named.conf ファイルのログ設定の箇所に赤字の記述を差し込み「namedの再起動」を実施します。
logging { ...
category lame-servers { null; };
... };
DNSの切り分け時に利用するオンラインチェックツール
DNSSECの確認
DNS Delegationをトレース
- ローカルで動作するものも公開されてます。
# gem install dnstraverse
Fetching: dnsruby-1.52.gem (100%)
Fetching: dnstraverse-0.1.0.gem (100%)
Successfully installed dnsruby-1.52
Successfully installed dnstraverse-0.1.0
2 gems installed
Installing ri documentation for dnsruby-1.52...
Installing ri documentation for dnstraverse-0.1.0...
Installing RDoc documentation for dnsruby-1.52...
Installing RDoc documentation for dnstraverse-0.1.0...
# PATH=$PATH:/var/lib/gems/1.8/bin
# export PATH
# dnstraverse www.google.com