にしし ふぁくとりー(西村文宏 個人サイト)

Presented by Nishishi via Movable Type. Last Updated: 2016/07/21. 11:06:58.

「Cannot Resolve Hostname」とは

「Cannot Resolve Hostname」というエラーメッセージは、「ホスト名(ドメイン名)をIPアドレスに変換できなかった」というエラーメッセージです。このメッセージが出た場合、ネットワーク接続はできません。原因は、ネット接続の設定に問題があると考えられますが、特定のソフトウェアでだけこのエラーメッセージがでる場合は、セキュリティソフト(≒Firewallソフト)の設定を疑いましょう。

昨夜、某ネット友達からヘルプが飛んできました。
IRCクライアント(※チャットソフト)を入れたんだけど、「Cannot Resolve Hostname」というエラーが出て、一向に繋がらない…というもの。
Windows Messengerで語りかけられたんだけど、メッセンジャーはその問題のPC上で起動してるとのこと。(つまり、PC自体のネット接続の設定は、おかしくない。)

「Cannot Resolve Hostname」というエラーは、ホスト名が解決できませんでしたという意味です。ホスト名というのは、まあここでは、"yahoo.co.jp"みたいなドメイン名のことです。そして、「ホスト名を解決(変換)する」というのは、「"yahoo.co.jp"みたいなドメイン名を"203.141.35.113"みたいなIPアドレスに変換する」という意味です。

つまり、「Cannot Resolve Hostname」というエラーは、「指定されたドメイン名に対応するIPアドレスが分かんなかったよ」という意味のエラーです。
TCP/IPでは、IPアドレスを使ってコンピュータを特定して通信を行います。だから、ホスト名(ドメイン名)をIPアドレスに変換できない限り、通信はできないわけです。

さて、ここでの問題(=ホスト名をIPアドレスに変換できない)を解決するには、その原因を特定する必要があります。ぱっと思いつく原因としては、(1)DNSサーバが落ちている、(2)DNSサーバに接続できない、(3)DNSサーバでは解決できない(=ホスト名がおかしい)…くらいでしょうか。

ホスト名を解決する仕事をしているのは、「DNSサーバ」と呼ばれるサーバです。「DNS」は、Domain Name Systemの略。(Domain Name Serverの略という場合もあるけど、まあ意味は一緒。)
このDNSサーバが、ホスト名とIPアドレスの変換を行ってくれるから、ホスト名を指定するだけで、望みのコンピュータにアクセスできるわけです。

(1) DNSサーバが落ちていると考えると、そのPC上で動いているすべてのソフトウェアでネットワーク接続ができなくなる可能性が高いです。(IPアドレスを直接指定すればDNSがなくても接続可能ですが。)
ここでは、Windows Messengerなど、他のソフトウェアでネット接続が正常に可能なので、DNSサーバは生きてることになります。

DNSサーバは生きてるんだけど、DNSサーバに接続ができない…という可能性も考えられますが、その場合も同様に、そのPC上で動いているすべてのソフトウェアでネット接続ができなくなるので、この場合は違います。(DNSサーバが生きてるのにDNSサーバに接続できない場合、TCP/IPの設定で、DNSサーバのIPアドレスの設定をミスっている可能性があります。)

(2) 次に、DNSサーバに特定のアプリケーションが接続できないと考えると、セキュリティソフトが怪しいです。Norton Internet Securityなどのセキュリティソフトには、怪しいプログラムが勝手にネット接続を行わないように、ソフトウェア単位で通信をブロックするファイアウォール機能があります。(Norton Personal Firewallとか、単体でも売ってたような気がします。あんまり見かけないけど。)
このファイアウォール機能が、そのアプリケーションの通信をブロックしていると、当然、DNSサーバにも接続できないので、「Cannot Resolve Hostname」というエラーを出してもおかしくありません。

というわけで、原因はこれだ!…と言ってみたところ、どうやら正解だったようです。^^;
Nortonの設定で、そのアプリケーションの通信を許可するようにすると、接続できたらしいです。

Norton Internet Securityは、接続を許可するか禁止するかを決めていない状態のソフトウェアが通信をしようとしたときには、「許可しますか?禁止しますか?」という質問ダイアログを表示してくれます。ですから、設定は楽です。ところが、一度決めてしまうと、二度とダイアログは表示してくれません。だから、一度誤った設定をしてしまうと、それを修正するのが大変なんですよね。^^;
各アプリケーションの通信を許可するか拒否するかを設定する箇所が、ずいぶんと奥まった位置にあるので…。(しかも、バージョンによって設定場所が異なるから、説明しにくい…。^^;;;)

まあとにかく、「Cannot Resolve Hostname」というエラーは、ホスト名(ドメイン名)をIPアドレスに変換できなかったという意味で、すべてのソフトウェアでこのエラーが出るならDNSサーバ(またはネット接続設定)を、特定のソフトウェアだけでこのエラーが出るならセキュリティソフトを疑いましょう、というお話でした。

ちなみに、DNSサーバに手動で直接問い合わせるには、nslookupというコマンドが使えます。UNIXにもWindowsにもあります。(古いWindowsにはなかったけど)
コマンドプロンプトを開いて、

nslookup www.yahoo.co.jp

とか入力すると、「www.yahoo.co.jp」に対する名前解決結果(IPアドレス)を教えてくれます。ホスト名ではなくIPアドレスを与えれば、そのIPアドレスに対するホスト名も教えてくれます。前者を「正引き」、後者を「逆引き」といいます。
ネットワーク系の試験には、良く出ます。(笑)

ちなみ2、「IPアドレス」と「ホスト名」は、1対1の関係にはありません。1つのIPアドレスに複数のホスト名が付く場合もあるし、その逆もあります。だから、nslookupを使って、あるホスト名に対するIPアドレスを調べた後、そのIPアドレスに対するホスト名を調べても、必ずしも最初に与えたホスト名が返ってくるとは限りません。
レンタルサーバ会社の比較的安いコースを使って運用してるWebサイトのドメイン名なんかで実験すると、そういう結果になることが多いです。(笑)

ちなみ3、上記の方法を使うと、どこのレンタルサーバを利用しているかが分かる可能性があります。^^;

コメント

すごくよく、分かりやすく書いてあって、参考になりました!有難うございます。(´∀`*)

投稿者 ママ : 2016年07月21日 03:35

10年半前の記事でもお役に立ったようで嬉しいです。(笑)

投稿者 にしし : 2016年07月21日 11:06

コメント数: 2件

コメント投稿欄 この日記に対するコメント投稿を歓迎します。

保存しますか?



※本文中にURLは書けません。(書くと投稿が拒否されますのでご注意下さい。)

※投稿内容は、実際にページ上に掲載される前に、管理者によって確認される設定にしている場合があります。その場合は、投稿後にその旨が表示されます。たいてい1~2日以内には表示されるはずですので、気長にお待ち願います。m(_ _)m

トラックバック

このエントリーへのトラックバックURLを表示するにはここをクリック
※スパム防止のため、トラックバックURLは別ウインドウで表示します。(JavaScriptが有効でないと表示されません。)

--- 当サイト内を検索 ---