BINDで他のホストから名前解決ができなかった

1. bindで他のホストから名前解決ができなかった

とある事情で現行のDNSサーバを移行することになった。
これまで長らく一台だけで運用を続けてきたんだけれど、冗長化をして耐障害性を高めようという理由だ。
で、バージョンアップもしてなかったりしたので最新版のbindを利用し、さらに二重化して運用しようとしてた。
一台目のマスタになるべきDNSサーバのセットアップは順調に進んだ。
さて自分自身で名前解決ができるようになり、スレーブ側のセットアップ中に問題が発覚した。

2. よそのホストから名前解決できない

スレーブのDNSはほとんどのクエリをマスタに問い合わせに行くのだけれど、それがうまくいかない。

手動で問い合わせ先DNSをマスタのDNSサーバにしてもうまく行ってなかった。

slave.l2tp.org> nslookup hoge.l2tp.org master.l2tp.org
;; connection timed out; no servers could be reached

かなりいろいろと悩んでみた。特にマスタ側のnamed.conf で削ってしまった設定の allow-query など、その辺を中心に確認したのだけれど、他のホストからの接続を弾くような設定は見当たらなかった。

3. しばらく悩んで

いろいろと悩んだあげく、今回の移設で新たに設定した項目があることを思い出した。
named.conf で listen-on {127.0.0.1;}; としていたのだ。
これが原因ではないかと疑ってみる。

master.l2tp.org> sockstat | grep 53
bind     named      97626 20 tcp4   127.0.0.1:53          *:*
bind     named      97626 21 tcp4   127.0.0.1:953         *:*
bind     named      97626 22 tcp6   ::1:953               *:*
bind     named      97626 512 udp4  127.0.0.1:53          *:*

思った通り、ローカルループバックアドレスでしか待ち受けをしてなかった。
listen-on に割り当てられてるアドレスを書こうかとも思ったけど、利用してるすべてのインタフェースで待ち受ければ問題ない、ということでコメントアウトした。
そうするとすべてのアドレスで待ち受けてくれるようになった。

master.l2tp.org> /etc/rc.d/named restart
Stopping named.
Waiting for PIDS: 97485.
Starting named.
master.l2tp.org> sockstat | grep 53
bind     named      97485 20 tcp4   192.168.xxx.mmm:53      *:*
bind     named      97485 21 tcp4   127.0.0.1:53          *:*
bind     named      97485 22 tcp4   127.0.0.1:953         *:*
bind     named      97485 23 tcp6   ::1:953               *:*
bind     named      97485 512 udp4  192.168.xxx.mmm:53      *:*
bind     named      97485 513 udp4  127.0.0.1:53          *:*

ちゃんと待ち受けてくれるようになり、他のホストからの問い合わせにも応答するようになった。

4. なんでループバックアドレスが

そもそもデフォルトでなんで listen-on でループバックアドレスが有効なんだろう、と思ってみた。
設定をみてて何となく思ったのは、ほとんどのFreeBSDでnamedをたてて、自身をキャッシュみたいに利用するのかな、って。
それだとセキュリティ的に外からの接続をデフォルトで弾くのは自然かな、って思った。
Mac Book Airを開発機にしたいな、って思ってるけど、LANにつないだり外したり、っていう環境なので、自分でスレーブのDNSを立てて、LANの時はマスタからゾーンファイルをもらって、外されたときは自分自身に参照をさせて・・・、っていう妄想を前からしてたけど、そんな運用を対象にしてるのかな、って思ってみた。

とにかく、よそから繋がらないときには注意しないと。

  1. pingは届くか
  2. ローカルホストでtelnetできるか
  3. そとからtelnetできるか
  4. サービスは立っているか

注意すべし

コメントを残す