• 締切済み

DNSサーバ(Bind 8x)の動作について

インターネットにDNSサーバを置いています。ともにSolaris 7+Bind 8.2.3です。  ns1.mydom.co.jp(自ドメインのマスター)  ns2.mydom.co.jp(自ドメインのスレーブ) 先日、ns1.mydom.co.jpが故障してそのサービスが停止した時、ns2.mydom.co.jpでも nslookupコマンドでFQDN名(自ドメインのものではありません)からIPアドレスがひけ なくなりました。逆引きは未確認です。Bindのマスタ/スレーブで、片方がダウンする と任意のホスト名解決は、他方でも停止するものなのでしょうか? なお、サーバの nsswitch.confは、hosts: files dnsとしています。 クライアントでは、上記2台をそれぞれプライマリ/セカンダリのDNSサーバとして指定 しているので、2台同時に名前解決できなくなると困るのですが…。 原因もしくは解決策をご存じの方、ヒントを与えていただける方、よろしくお願いします。

みんなの回答

noname#41381
noname#41381
回答No.7

あまりお役に立てずにすみません^ ^;; (#4補足から) named.confありがとうございました。 >自ドメインは200.40.60.0 これは例ですか?IPアドレスのような感じでドメインをつくられているのですか? 特に問題はないと思いますが、ちょっと変わっているなぁと思いました。 >zone "160.26.232.210.in-addr.arpa" in { >type slave; > これはns2自身の逆引きも含まれますか? >query-source address * port 53; と特権ポートからの問い合わせと合わせると ns2のホスト確認をされていてそれではじかれているとか(タイムアウト含む)。 ちょっと技術的な部分は調べていないので、全く根拠のない想像です。 なのでこれはとりあえずおいておいて... すみません、他の補足でも記載されていますが、一応確認です。 ns2上のnslookupで外部のDNSが引けなかったということですよね? で、ns1のOff以外でns2やファイアウォール等のまわりのネットワークで何の操作もしていないのに ns2がいつの間にか正常に外部問い合わせが出来るようになったということでいいですか? で、まずdebugでnslookupを引かれたようですが、正常時と障害時のログはありますか? また、ns1,2がDMZ上とかであれば、その時のファイアウォールのログ等はありますか? 外部へ接続できていないのか(ファイアウォール等問題) 問い合わせ結果が問題なのかの切り分けが出来ればいいですね。 素人ですみません...。

mod
質問者

補足

遅くなりました。 >IPアドレスのような感じでドメインをつくられているのですか? これは、ミスです。自ドメインは "mydom.co.jp."としています。 >ns2上のnslookupで外部のDNSが引けなかったということですよね?  : >ns2がいつの間にか正常に外部問い合わせが出来るようになったということでいいですか? その通りです。debugモードのnslookup、FireWallのログは、ありません。外部への接続はできていたはずです。ネットワークやFireWallの問題ではないと強く確信しています。 その後、ns1が修理から帰ってきて、messages等を見ていると、Feb 12未明からダウンしていたようです。ns2がlookupできなくなったのはFeb 14のお昼だから、その間はsecondaryとしてまともに動いていたんですよね。試しに、現在ns1のLANケーブルを抜いても、少なくとも2.5時間はまともに動いていましたから。 そうすると、ns1のSOAレコード(1234567890 10800 3600 604800 86400)が問題か?? ns2がlookupできなくなったきっかけは何だったのだろうか…?

noname#41381
noname#41381
回答No.6

わぁ~すみません! #2の補足にforwarders設定していないって書いてありましたね。

noname#41381
noname#41381
回答No.5

ちなみに#2の件ですが、 bindのforwardersでは、はじめにforwarders指定のサーバに再帰的問い合わせを行うだけであって 仮にforwardersが落ちていた場合でも、自分で通常の問い合わせが行われます。 ですが、「forwarders only」が設定されている時は、forwarders側が落ちていればアウトですね。 これは大丈夫でしょうか?

noname#41381
noname#41381
回答No.4

#3補足からですが、確かによくわからない現象ですね。 ちょっと確認ですが... PC側の話が出ていましたが、最終的にns2を直接指定しているリゾルバからDNSが引けなかった ということでいいですか?(=ns3,4は今障害とは関係ない) で、障害発生時ns2指定のリゾルバでは、引くことの出来るものと出来ないDNSが存在した、と。 この出来たものと出来なかったものの法則みたいなものは見つけましたか? よくわからないのが、#1の補足にある >ns1のメインスイッチをOffにすると、約1時間後にns2で全てのホストのLookupができるようになった > ですが、このOffとはどのような動作を行ったのでしょうか? すみませんが上記補足と、できればns2のnamed.confが欲しいです。

mod
質問者

補足

ご指摘の通り、ns3,4は本障害には関係ないと考えます。そこで、ns2のnslookupを使って確認したのです。ns2でひけたのと・ひけなかったのは、断定できていません。dns1の代替機作成に追われてしまったので。ただ、ns1のスイッチOff後、1時間ほどたって、ns2でひけてなかったホスト名がひけるようになったのは確かです。 障害時、ns1は画面がブラックアウトしていて、近所からtelnetにもpingにも反応しない、Stop+Aもきかないので、メインスイッチをOffにしました。 状況を再現したいのですが代替機で稼働中で、それ以前に運用中だから…、ってところなのです。 以下、ns2のnamed.confです。192.168.1.1がns1のIPアドレス、自ドメインは200.40.60.0としてます。 options { directory "/var/named"; query-source address * port 53; }; zone "." in { type hint; file "root.cache"; }; zone "localhost" in { type master; file "localhost.zone"; }; zone "0.0.127.in-addr.arpa" in { type master; file "localhost.rev"; }; zone "200.40.60.0" in { type slave; file "2nd/bind.zone"; masters { 192.168.1.1; }; }; zone "60.40.200.in-addr.arpa" in { type slave; file "2nd/bind.rev"; masters { 192.168.1.1; }; }; zone "160.26.232.210.in-addr.arpa" in { type slave; file "2nd/subdom.rev"; masters { 192.168.1.1; }; };

noname#41381
noname#41381
回答No.3

#1の補足より >nslookupのdebugモードの結果から、上位ドメインの >複数のネームサーバからの返答を得ると認識しています。 > これは単にそのゾーンで複数のNSが設定されているのが表示されているだけではないでしょうか? リゾルバの動きとしては自分が指定したNS(例えば/etc/resolv.confのnameserverディレクティブ) に問い合わせるだけです。 そこで2つのNSを指定していれば、1番目→1番目がダメなら2番目→2番目がダメならまた1番目... といった感じで問い合わせるということです。 で、#1 xjdさんが言われているのは、 nslookupのツールは自分でNSを複数指定していても1番目のNSにしか問い合わせをしない ということです。 つまり、masterが落ちて単純にnslookupで引けなくなった ということであれば、 nslookupは前述したとおり/etc/resolv.confの1番目のNSを見るので nslookupでserver指定等でslaveのNSを指定しないとダメということです。 ですが、  ns1.mydom.co.jpが落ちていた時にns2.mydom.co.jpをセカンダリで指定したリゾルバが  名前解決できなかったけどなんで? ということであれば、原因はいろいろありそうですが 例えばSOAのTTLの前の値 これがスレーブがマスターのでデータをして回答できる期限なので 仮にこれが1hならマスターが落ちてから1h経つとスレーブは回答しなくなります。

mod
質問者

補足

#1の補足は、私の勘違いでした。ご指摘ありがとうございます。 実は、DMZにns1とns2を設置、イントラネットにns3(master)とns4(slave)を設置しています。ns3のfowardersはns1, ns2です。イントラ内のクライアントPCはプライマリにns3、セカンダリにns4を指定。これで、PCからmydom.co.jp(自ゾーン)以外の名前解決が、一部できませんでした。 他ゾーンの検索なので、そちらのNSから受け取ったキャッシュのTTLに依存していると解釈していいのですかね? そうすると、なぜある時点からns2でもすべてのホスト名が解決できるようになったのかが、謎です。 もとい、キャッシュの期限が過ぎているなら、ns1に頼ることなくns2自身で再帰検索すると考えるのは、間違いでしょうか?

回答No.2

スレーブサーバということは,ns2のforwardersでns1を指定しているということでしょうか.その場合,ns2の名前解決はns1のサーバに依存してしまいますので,ns1が停止してしまうと,ns2ではキャッシュに入っている名前意外は解決が出来なくなってしまいます. こうならないために,DNSサーバはプライマリ,セカンダリとして立ち上げた方が良いと思います.

mod
質問者

補足

アドバイスの書き込み、ありがとうございます。 ns1もns2も、fowardersは定義していません。ns1は自ドメイン(mydom.co.jp)のzoneファイルとrevファイルを持ち、named.confで"type master"を定義、ns2はnamed.confで"type slave;"を定義して、"masters {ns1;};"としてzone/revファイルはns1から受け取っています。

  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.1

リゾルバと違って、nslookupコマンドは複数のDNSサーバに 問い合わせしないのでは?

mod
質問者

お礼

resolvの動作と、bindの動作をごっちゃにしてました。resolvは指定NS以上へ問い合わせませんね。ns2のresolv.confは『nameserver 127.0.0.1』なので、bindが聞いてきて答えているのですよね。失礼しました。 ご指摘、ありがとうございました。

mod
質問者

補足

nslookupのdebugモードの結果から、上位ドメインの複数のネームサーバからの返答を得ると認識しています。 ns1のダウンに気付いたのは、ns2のsendmailがHostname lookup failerをsyslogに出しはじめてから約33時間後です。その時、ns2ではほとんど全てのホストをLookupできませんでした。それからns1のメインスイッチをOffにすると、約1時間後にns2で全てのホストのLookupができるようになったのです。その、ns2が正しくLookupできなかった時間に何が起こっていたのかを解明したいのです。それとも、bind自体、そのような動作をするものなのでしょうか?

関連するQ&A