- PR -

DNSが特定の名前だけ解決できません

1
投稿者投稿内容
SO
会議室デビュー日: 2004/11/02
投稿数: 10
投稿日時: 2005-04-07 21:38
お世話になっております。

突然、特定のWebサイトにアクセスできなくなり、
使用しているDNSの名前解決が怪しいと考えています。

nslookupで確認すると、以下のようになります。

------------------------------
> example.com →解決したい名前
Server: DNS名
Address: DNSのIPアドレス
Aliases: DNSのエイリアス

DNS request timed out.
timeout was 2 seconds.
DNS request timed out.
timeout was 2 seconds.
*** Request to DNS名 timed-out
------------------------------

デバッグモードでも確認しましたが、SendRequest()に
対する応答がなく、timed outになりました。
# 「Send Request failed」という
# メッセージが出ていました。

また、以下のようなことも分かっています。
 ・他のDNSでこの名前解決は可能
 ・このDNSでその他の名前解決は可能

どのような調査、対処が有効でしょうか。
どなたかご存知でしたらご教授ください。
宜しくお願いします。
NAO
ぬし
会議室デビュー日: 2001/10/24
投稿数: 1256
お住まい・勤務地: 神奈川のはずれから東京の下町
投稿日時: 2005-04-08 09:04
お早うございます。
引用:

・他のDNSでこの名前解決は可能
・このDNSでその他の名前解決は可能


此処まで解っているなら当該サーバにレコードが存在しないだけだと思うんですけど…
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-04-08 11:48
DNSの委譲関係は結構グチャグチャなので、どこがトラブルの元かは特定し難いですね。
基本に立ち返って、DNSの名前解決をルートサーバから順にやってみるのはどうでしょう?
次のような感じで。

例:ここのサイト(www.atmarkit.co.jp)の名前解決のトレース
引用:

> server 自分のDNSサーバ
> a.root-servers.net     ← まずはルートサーバのアドレスを調べる
Name: a.root-servers.net
Address: 198.41.0.4
> server 198.41.0.4
> set norecurse
> www.atmarkit.co.jp    ← 調べたサーバに、目的のドメインのクエリーをぶつける
Name: www.atmarkit.co.jp
Served by:
- A.DNS.jp        → 参照が返ってきた
> server 自分のDNSサーバ
> set recurse
> a.dns.jp        ← 参照で示されたDNSサーバのアドレスを調べる
Name: a.dns.jp
Address: 203.119.1.1
> server 203.119.1.1
> set norecurse
> www.atmarkit.co.jp   ← 調べたサーバに、目的のドメインのクエリーをぶつける
Name: www.atmarkit.co.jp
Served by:
- ns1.i2ts.ne.jp        → 参照が返ってきた
> server 自分のDNSサーバ
> set recurse
> ns1.i2ts.ne.jp        ← 参照で示されたDNSサーバのアドレスを調べる
Name: ns1.i2ts.ne.jp
Address: 211.4.249.195
> server 211.4.249.195
> set recurse
> www.atmarkit.co.jp   ← 調べたサーバに、目的のドメインのクエリーをぶつける
Name: atmarkit-www.atmarkit.co.jp
Address: 211.4.250.170    → 調査終了
Aliases: www.atmarkit.co.jp


a.root-servers.net → a.dns.jp → ns1.i2ts.ne.jp の順にクエリーを投げて、
最終的に、www.atmarkit.co.jp が atmarkit-www.atmarkit.co.jp(A 211.4.250.170) のCNAME ということが分かりました。
※ 話に関係ない出力は極力省略していますので、ご注意を。
SO
会議室デビュー日: 2004/11/02
投稿数: 10
投稿日時: 2005-04-08 20:20
NAOさん、angelさんありがとうございます。
問題の件ですが、解決しました。

接続先のDNSのシリアル番号更新&再起動で
問題の環境からも接続できました。

問題発生時に、angelさんが指摘された、
ルートサーバからの名前解決をやってみた所、
正常に接続先のDNSにたどり着けました。

なお、問題発生時の「他のDNSで名前解決可能」というのは、
全てNon-authoritativeの結果だったため、
私としてはキャッシュの問題かと思っています。

ここからは推測になりますが、
以下のようなことは考えられますでしょうか?

・問題の環境のDNSクライアントのキャッシュが古く、破棄された。
・接続先のDNS情報が不正で、名前解決しようとしたが
 正しい情報として取得できなかった。
  →但し、これだと「タイムアウト」という事象になるのかが分かりません。
  →また、「DNS情報が不正」として具体的に考えられることは何でしょうか?
    ※例えば、シリアル番号が古い、などでしょうか?

もし何か思い当たる点ありましたら、ご教授ください。
よろしくお願いいたします。
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-04-09 07:48
おはようございます。
解決されたようで何よりです。

ちなみに、DNSがらみのトラブルはなかなか原因が特定しづらいと思います。
プロトコル自体が不要に難解ですし、サーバソフトとして一番普及している BIND にしても、非常に動作が怪しく、また設定が困難なものなので。
(SOさんの接続先はBINDを使っているのでしょうか?)

少し古い情報ですが、こんなのもあったりします。
(最新版のBINDならマシだと思いたいのですが、元々デキの悪いソフトはなかなか抜本的改善がされないものなので、今でも私は信頼していません)

DJBDNS関連のページをご存知でなければ、一度読まれることをお勧めします。
DNSに関する勉強になるサイトかと思います。
(結構キツめの文章なので抵抗を示す方もいるようですが…、話の妥当性はご自身でご判断されるのがよろしいかと存じます)
SO
会議室デビュー日: 2004/11/02
投稿数: 10
投稿日時: 2005-04-10 23:02
angelさん、ありがとうございます。

教えていただいた情報は、どちらも
知らないものでしたので、勉強します。

また何かありましたらお願いします。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)