- PR -

ブラウザ+名前解決=OK、コマンドプロンプト+名前解決=NG??

投稿者投稿内容
Uchikoshi
@ITエディタ
会議室デビュー日: 2001/07/27
投稿数: 197
投稿日時: 2003-08-06 22:14
pingの応答がないだけなのか、それとも名前解決が失敗しているのかは、メッセージから判断することができます。

無応答の場合はこんな感じ:
C:\>ping -n 1 www.microsoft.com
Pinging www.microsoft.akadns.net [207.46.134.190] with 32 bytes of data:
Request timed out.

名前解決が失敗している場合はこんな感じ:
C:\>ping -n 1 www.maccrosoft.com
Ping request could not find host www.maccrosoft.com. Please check the name and try again.

これはWindowXPですが、Windows 2000だとこんな感じ:
C:\>ping -n 1 www.maccrosoft.com
Unknown host www.maccrosoft.com.

参考TIPS:
http://www.atmarkit.co.jp/fwin2k/win2ktips/101pingcommand/101pingcommand.html
未記入
大ベテラン
会議室デビュー日: 2003/06/28
投稿数: 219
投稿日時: 2003-08-06 23:51
引用:

Uchikoshiさんの書き込み (2003-08-06 22:14) より:
pingの応答がないだけなのか、それとも名前解決が失敗しているのかは、メッセージから判断することができます。
(途中省略)
参考TIPS:
http://www.atmarkit.co.jp/fwin2k/win2ktips/101pingcommand/101pingcommand.html


なぜ、メッセージから判断できるのでしょうか?
ご教示いただきました資料の「pingの引数におけるIPアドレスとホスト名」の
節に以下の内容があります。
引用:

 「Unknown host」とは、ホスト名が見つからないということを表している。つまり「名前解決(名前からIPアドレスを求めること)」が失敗しているわけであるが、その原因はIPアドレスなどの設定が間違っているからかもしれないし、DNSやWINS、NBTの名前解決などが何らかの原因(サーバのIPアドレス設定のミスとか、経路途中のルータのフィルタでブロックされているなど)でうまく動作していないなど、さまざまな要因が考えられる。逆にいうと、その原因を簡単に特定することはできない、ということでもある。せっかくpingを使ってトラブルシューティングを行おうとしているのに、これではさらに話が面倒になるだけだ。このようなトラブルを避けるため、pingを使うときは、最初はIPアドレスであて先を指定することが基本である。


# 歌うたい様のご質問からは、ブラウザでのネットサーフィンは問題なくできていたと
# 判断しましたので、名前解決そのものは恐らく問題ないのでは?と考えました。

[ メッセージ編集済み 編集者: Ken-Lab 編集日時 2003-08-07 00:12 ]
Uchikoshi
@ITエディタ
会議室デビュー日: 2001/07/27
投稿数: 197
投稿日時: 2003-08-07 00:47
引用:

Ken-Labさんの書き込み (2003-08-06 23:51) より:
なぜ、メッセージから判断できるのでしょうか?



ええーっと、pingはだいたい次のようにして動作するプログラムです。

 1.引数として与えられた名前文字列から、名前解決をして、IPを求めます。
 2.そのIPアドレスにパケットを送ります。
 3.応答を受け取って表示します。

1.で失敗すると、すぐに「Unknown ....」と表示して終了します。
  成功すれば、「pinging ...[IPアドレス]...」と表示します。
2.で失敗すると、パケットが送れません、という類のエラーメッセージを出力します。
3.で失敗すると、「Request timed out.」と表示します。
  成功すれば、「Reply from ...」と表示します。


ですので、「Unknown ...」となるなら、それは最初の「名前解決の失敗」であると判断できます。
なぜ「名前解決が失敗するのか」については、いろいろな原因が考えられますが(それがくだんのTIPS中に書いてあります)、いずれにしろ、それはすべて「名前解決の失敗」ということで一まとめにできると思います。

引用:

# 歌うたい様のご質問からは、ブラウザでのネットサーフィンは問題なくできていたと
# 判断しましたので、名前解決そのものは恐らく問題ないのでは?と考えました。


特定の名前やドメインについてだけ名前解決が失敗するとか、一時的に名前解決がおかしくなる、などというのはそう珍しいことではありません。

いずれにしろ、このような問題は、パケットをキャプチャして覗けば、すぐに分かるんですけど、それができないのがもどかしいです(^^;;)。
cu
会議室デビュー日: 2003/06/08
投稿数: 4
投稿日時: 2003-08-07 04:09
うーん。。
ブラウザではOK。pingではダメ。
で、それは名前の解決に問題があるのではないだろうか?
と思われたのなら、それをpingの応答メッセージでどうこう、
っていうのがそもそもナンセンスな気がしますが。
(名前の解決は、pingが行うのではなく、その引数がドメイン名だった場合に、リゾルバライブラリに渡されるわけですから)

純粋に名前の解決が出来るのか、をまず確認しては?
www.yahoo.co.jpのような、メジャーなホストなら、そこいらの
キャッシュサーバに問い合わせればすぐAレコードが引けるでしょう。
そうしたら、そのIPにpingしてみれば、それで問題がおおむね絞り込まれる
と思いますが。

それと。
どなたか、pingを実行時に名前の解決が伴う場合、それもICMPを通して行うようなこと
をおっしゃってますが、それは誤りです。
名前の解決は、言うまでもなく、DNSを使用します(Windowsの場合、WINS等、NETBIOS名の解決となる場合もあります)
DNSサーバに問い合わせて名前が解決されるわけですから、それをICMPを通じて行うことはできません。DNSはアプリケーションプロトコルですから。

ICMPを使用した経路、相手ホストへの到達性の確認と、名前の解決の問題をキッチリ分けてお考えになるといいかと思います。

[ メッセージ編集済み 編集者: cu 編集日時 2003-08-07 04:19 ]

[ メッセージ編集済み 編集者: cu 編集日時 2003-08-07 04:21 ]
きょ〜じゅ
ベテラン
会議室デビュー日: 2003/07/31
投稿数: 66
投稿日時: 2003-08-07 08:07
引用:

cuさんの書き込み (2003-08-07 04:09) より:
pingの応答メッセージでどうこう、っていうのがそもそもナンセンスな気がしますが。



判断材料の一つにはなると思いますよ。
確かにそこで全て判断するものでも無いと思いますが。

引用:

cuさんの書き込み (2003-08-07 04:09) より:
純粋に名前の解決が出来るのか、をまず確認しては?
http://www.yahoo.co.jpのような、メジャーなホストなら、そこいらの
キャッシュサーバに問い合わせればすぐAレコードが引けるでしょう。
そうしたら、そのIPにpingしてみれば、それで問題がおおむね絞り込まれる
と思いますが。



キャッシュサーバに問い合わせるのですか?DNSサーバでなく?

少なくとも"Unknown host"のメッセージが帰ってきている以上、pingを打ったときにはDNSが正常に引けなかったことは事実でしょう。
どなたかが、ブラウザのProxy設定について触れていましたがまず調べるべきはココの様に感じます。
スレッドのタイトルにある"ブラウザ+名前解決=OK "の前提が間違いないのか調べ、その上で調べない限り、スレッドタイトルにある疑問は解決しないかも知れませんから。
外部接続をProxyを介してのみ許可しているような環境である場合、DNSサーバが内部のサーバの名前解決しか行えない様になっていても不思議ではないですね。私の知っている環境でもありますよ。そういうトコ。

引用:

Ken-Labさんの書き込み (2003-08-05 17:31) より:
通常のHTTPアクセスにおいてはTCPを使っています。
Pingの場合はICMP(インターネット制御プロトコル)を使います。それぞれOSIで
第4階層であると解釈しています。
Pingにホスト名を引数として与えた場合はまず名前解決を行います。(DNS、Wins等を
参照します。)しかし、名前解決もICMPを通して行うため、これが繋がらない以上は
名前解決もできない。したがってUnknown hostと表示されていると考えます。



既に指摘されていますが、名前解決はTCP/UDPのPort:53であるDNS(Domain)が使用されますので、ICMPで名前解決は行われません。
って言うか第3層だし。 <ICMP
未記入
大ベテラン
会議室デビュー日: 2003/06/28
投稿数: 219
投稿日時: 2003-08-07 09:48
おはようございます。
各識者の方々よりご指摘されていますが、明確にアイタタタ!な点がありましたので、
訂正させていただきます。
○ICMPの階層は第3層(ネットワーク層)に位置づけされ、ARP,IPと同一です。
TCPは前途の通り第4階層です。
○DNSは最上階層でポート53を使っています。
従ってICMPそのものが名前解決するわけではないです。しかし自分はWin2KのPingの名前解決に
おいてはその下層で使われているプロトコルがICMPである、と誤解しておりました。

話は若干ズレますが、ひとつ勉強させていただきたい点がありまして
引用:

きょ〜じゅさんの書き込み (2003-08-07 08:07) より:
外部接続をProxyを介してのみ許可しているような環境である場合、DNSサーバが内部のサーバの名前解決しか行えない様になっていても不思議ではないですね。私の知っている環境でもありますよ。そういうトコ。


このような環境下にある場合、ブラウザから外部ネットワークに対しての名前解決は
どのようにして行われるのでしょうか?
# この場合、Pingで名前解決しようとした場合、何か戻りそうな気がするのですが・・・?

[ メッセージ編集済み 編集者: Ken-Lab 編集日時 2003-08-07 09:49 ]

[ メッセージ編集済み 編集者: Ken-Lab 編集日時 2003-08-07 10:02 ]
Astmild
常連さん
会議室デビュー日: 2003/06/09
投稿数: 30
お住まい・勤務地: 大田区
投稿日時: 2003-08-07 21:16
引用:

Ken-Labさんの書き込み (2003-08-07 09:48) より:
話は若干ズレますが、ひとつ勉強させていただきたい点がありまして
引用:

きょ〜じゅさんの書き込み (2003-08-07 08:07) より:
外部接続をProxyを介してのみ許可しているような環境である場合、DNSサーバが内部のサーバの名前解決しか行えない様になっていても不思議ではないですね。私の知っている環境でもありますよ。そういうトコ。


このような環境下にある場合、ブラウザから外部ネットワークに対しての名前解決は
どのようにして行われるのでしょうか?
# この場合、Pingで名前解決しようとした場合、何か戻りそうな気がするのですが・・・?


確認はしてませんが、Proxyが名前解決からコンテンツ取得まで行っているのだと思います。
きょ〜じゅ
ベテラン
会議室デビュー日: 2003/07/31
投稿数: 66
投稿日時: 2003-08-07 21:32
あまり詳しいわけではないのですが。

引用:

Ken-Labさんの書き込み (2003-08-07 09:48) より:
話は若干ズレますが、ひとつ勉強させていただきたい点がありまして
引用:

きょ〜じゅさんの書き込み (2003-08-07 08:07) より:
外部接続をProxyを介してのみ許可しているような環境である場合、DNSサーバが内部のサーバの名前解決しか行えない様になっていても不思議ではないですね。私の知っている環境でもありますよ。そういうトコ。


このような環境下にある場合、ブラウザから外部ネットワークに対しての名前解決は
どのようにして行われるのでしょうか?
# この場合、Pingで名前解決しようとした場合、何か戻りそうな気がするのですが・・・?



HTTPのプロトコルにはURIというフィールドがあり、この中にURLを含む情報を入れることにより、目的の情報を得る事ができます。
バーチャルドメインが可能なのはこの為です。
さて、本題ですがBrowserにProxyサーバが設定されている場合、Proxyサーバに対し、取得したいURLの情報を含むURIを指定し取得要求を行います。この為、クライアントの端末はWebサーバと直接やり取りする必要も無く、IPアドレスを知っている必要も無い(URLを知っていれば良い)為、名前解決も行いません。
# 行うとしたら、Proxy設定で除外したサーバとProxyサーバに対してだけです;-P

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