DNSサーバ


概要

ルータにしろ、ファイルサーバにしろ、実はDNSに関連してちょっと厄介な問題があります。
試しに他のマシンから telnet でサーバに接続するとわかると思いますが、接続で結構待たされます。
これは、アクセス元マシン(192.168.0.???)をDNS逆引きしているためです。
/etc/resolv.conf にプロバイダのDNSサーバのアドレスが登録されていると思います。
このプロバイダのDNSにわざわざ 192.168.0.??? という自宅のアドレスを問い合わせてしまいます。
当然DNS側ではそんな物は登録されていないので応答してくれなくて遅くなっています。
メールサーバ(sendmail)の起動時に待たされる問題というのも同様です。
これを解決するにはローカルでネームサーバ(named)をあげれば良いことになります。
そこで、ここではその設定をやってみましょう。


解決

本題に入る前に、アドレスの逆引きの順番を考えてみます。
普通 /etc/hosts を参照して、無かったら /etc/resolv.conf のネームサーバに問い合わせます。
(この辺は /etc/nsswitch.conf と /etc/host.conf が関係してくるわけですが。)

今回の問題は「内部のアドレスが逆引きできないため、ネームサーバで待たされる」ということでした。
逆に言えば、内部のアドレスが逆引きできちゃえば、ネームサーバは不要ってことになります。

家庭内で使う場合、192.168.0.xxx のアドレスなんて多くても10個くらいなもんでしょう。
というわけで、こんなことをしてみます。
/etc/hosts
127.0.0.1       localhost
192.168.0.1     libretto.localnet libretto

192.168.0.2     192-168-0-2
192.168.0.3     192-168-0-3
192.168.0.4     192-168-0-4
192.168.0.5     192-168-0-5
192.168.0.6     192-168-0-6
192.168.0.7     192-168-0-7
192.168.0.8     192-168-0-8
192.168.0.9     192-168-0-9

librettoというのが自分自身のアドレスです。
その後に、とにかく可能性のあるアドレスをひたすら列挙します。
もちろん右側は数字無くて全部にホスト名を割り当ててもいいですよ。
DHCPで動的に割り当てているならば、その分だけ必要です。
といっても全部じゃなくても大体若いアドレスから振られるので10個くらいでも大丈夫でしょう。
(その前にDHCPサーバでアドレス範囲変えるというのが普通でしょうが)

この設定をするだけで、telnet接続とかで待たされることもなく、問題解決!
DNSサーバなんてたてなくてもいいじゃないかってことに気がつきました。
ややこしい設定に悩まされず、セキュリティホールも関係なく、常駐しないからメモリ消費も無い
というわけで、いいことばっかりです。


BIND

under construction.

そのうちやると思うけど。。。
/etc/hostsの解決が何とも明快だったので書く気力が(^^;)


戻る