暫定的な回避方法
named(8)の振る舞いは理解できていないのですが、以下の方法で回避できることを確認しました。
IPv4だけの使用
named(8)のコマンド行のオプションに-4
を指定してIPv4だけを使用するようにします。こうすると、AAAAレコードの問い合わせ自体を行わなくなり、結果としてAAAAレコードが届いた時点でSERVFAIL
のエラーが起きなくなります。
IPv4だけにできない場合
MacのOS Xでは(有償の)サーバー(Server.app)をインストールすることで、DNSのネームサーバーとして利用できます。ところが、Server.appでははnamed(8)の制御に使用するコマンドrndc(8)はIPv6のloopback経由で使用するように設定されています。
- IPアドレス:
[::1]
- ポート番号:
54
これはServer.appのGUIから設定の変更はできませんし、直接named(8)の設定ファイルを変更したとしても何かのタイミングで戻ってしまう可能性もあります。
今回の問題が起きていた環境では、IPv4だけにできるホスト(Linuxのサーバー)があったため、こちらをforwarders
にすることで回避できました。