企業の情報システム部門のお手伝いをする機会が多い筆者が、実際に経験したトラブルをもとに、その原因特定と解消までをご紹介します。
◎主訴
・Webサイトにつながらないことがある(サーバーが見つからないと出る)
・同じ日時でもつながる端末とつながらない端末がある
・つながらない端末でも、日を改めるとつながるようになっている
・つながっていた端末でも、使用中に突然つながらなくなることがある
・リニューアルしてサーバーを移転してから発生するようになった
さて。
このような症状の場合、皆さんならどんな原因を疑いますか?
筆者は真っ先に「DNSが怪しい」と思いました。
しかし、単純なDNSの問題ではなさそうです。設定が根本的に間違っていると、100%つながりません。DNS情報の伝達タイムラグの問題だとすると、一度つながっていたものがつながらなくなることはありません。
DNSの問題で、このように再現性のとぼしい不安定な現象に直面した経験がなく、筆者は頭を抱えていました。
リニューアル後のサーバーには、負荷分散のためのロードバランサがついていました。このロードバランサの設定がおかしく、特定の条件を満たした場合に通信をブロックしているのではないかと疑いました。そこで、ロードバランサのログを確認しましたが、異常なし。
やはり、DNSを徹底的に調べるしかなさそうです。
こういうことは、最上流から確認するのがセオリーですね。そこで、ドメインの管理会社の情報から。
・ドメイン管理会社の情報
example.com
ネームサーバー1:ns.example.com
ネームサーバー2:ns.domain.ad.jp
まず、この情報を見て「おや?」と思いませんか?
example.com傘下のサブドメインの名前解決のために、example.com傘下のサブドメインが設定されているのです。そもそもns.example.comの名前解決は、どこに問い合わせればいいのでしょうか?
これではまるで、宝箱の鍵が宝箱自身の中に入っているようなものです。
ともあれ、nslookupコマンドを使って、どのような名前解決が行われるのか試してみましょう。
・nslookupの実例
nslookup
server ns.example.com
www.example.com
↓ 回答
Non-authoritative answer:
Name: www.example.com
Address: 123.123.123.123(リニューアル後のサーバー)
↓ さらに問い合わせ先サーバーを切り替えて
server ns.domain.ad.jp
www.example.com
↓ 回答
Non-authoritative answer:
Name: www.example.com
Address: 234.234.234.234(リニューアル前のサーバー)
2台のネームサーバーで、回答が違うことがわかりました。ドメイン管理会社のネームサーバーに登録されている情報が、古いままなのです。
なるほど、タイミングによってつながったりつながらなかったりする不規則な症状は、これが原因だったようです。
逆にほとんどの場合つながるということは、宝箱の鍵が宝箱の中、という状態でも多くの場合は問題がないということです。
一番手っ取り早いのは、ns.domain.ad.jpの情報を正しい情報に書き換えることですね。
そこで、管理会社に問い合わせしてみました。
その回答が、以下の内容。
・手動でns.domain.ad.jpの情報変更はできません
・ns.example.com上で稼働しているDNSの情報を自動で取得します
・お客様ご自身で、ns.example.comのDNSを適切に管理してください
・変更が反映されない場合の原因は、ほとんどの場合シリアルの変更忘れです
なるほど!
もともと、WEBサイトのコンテンツの管理は外注しており、DNSの情報変更もその外注先に依頼をしていました。
その部分はまったくのブラックボックスだったのですが、どうやら借りているサーバー上でDNSが動いていて、その設定情報を外注先が設定してくれていたようなのです。
外注先に連絡をして、現在の設定内容すべてを送ってもらいました。
・設定ファイルの中身(例)
$TTL 3600 @ IN SOA ns.example.com. ( 2008082603 ; Serial 3600 ; Refresh 900 ; Retry 3600000 ; Expire 3600 ) ; Minimum IN NS ns.example.com. www IN A 234.234.234.234
ありましたありました。
SOAレコード内のSerialの値が2008082603となっています。おそらく、2008年のサーバー設置当初のまま、ということなのでしょう。
外注先にSerialの値を今日の日付の01に変更してもらいました。
すこし待ってから、nslookupでns.domain.ad.jpに問い合わせをすると、正しい情報が返ってくることが確認できました。
解決。
◎今回の教訓
・複数のネームサーバーで情報の齟齬が発生すると、とっても不安定で再現性の低いトラブルが発生するのですね(^_^;)
・DNSのSerialを変更し忘れるような外注先を使うのはやめて、もっとちゃんとした業者を選びましょう。
・そもそも、今どきWEBインターフェースでDNS情報を自由に変更できないドメイン管理会社なんか、やめちゃいましょう。