とあるお客様のサーバーのメンテナンスを行っていたところ、一部のDNS情報で名前の解決できない状態になっている事がわかりました。
調べてみると、TCP/IP上は問題なし、NSLOOKUPやDigでも問題無いのですが、サーバー内部のSMTPサーバーから発信しようとするメールの一部(全てではない)が相手に届けられず、メールエラーとしてログに記載されていた。
ログを調べてみると、どうも名前が解決できない為に起きていることがわかった。
最初とても不思議な現象に思えたのですが、どうもそのサーバーにはActive Directryで組まれたDNSサーバーが存在した。
もしかして…
良くしらべていくうちに見えてきた事は…
そのDNSサーバはLAN上で稼働しているホストに関するレコードしか持っていないから、インターネット側の名前解決はできない。
そこで登場するのがDNSフォワーダという機能。
これは、自分が解決できない名前の情報を、別のDNSサーバに転送して問い合わせるものである。
LAN上のホストに関するレコードしか持っていないのであれば、それ以外の知らないホスト名の問い合わせが来たときには、それをインターネット側のDNSサーバに丸投げする理屈だ。
したがって、DNSフォワーダを利用するには、インターネット接続に利用しているプロパイダが用意しているDNSサーバを、DNSフォワーダの転送先に指定する必要がある。
ただし、DNSリレーの機能を備えているルータがLANとインターネットの境界にあり、そのルータがインターネット側のDNSサーバアドレスを知っているのであれば、LAN側のDNSサーバはフォワーダの転送先としてルータのLAN側IPアドレスを指定すればよい。ワンクッション余計に入ることになるが、DNSの名前解決要求をプロバイダのDNSサーバに中継するのは同じである。
この設定を変更したら見事に解決。
しかし、いままで一定時間蓄積されていたメールが一気に流れたので、その会社のお客様にも古いデータが流れてしまうことに…
しかし、外部からDNSの問い合わせを兼ねているサーバーのため、再帰問い合わせはちと問題かもしれませんね。
構築方法を少し考えなければならないようです。