2件のコメント

「インターネットに繋がらない」 – 初級編

「インターネットに繋がらない!」という発言をよく聞きます。テクノロジーを理解していないお客さんならともかく、プロとしてはこのような発言はしたくないものです。「インターネットに繋がらない」時には具体的にどのようなことが原因として考えられるのか考えてみます。

※ここでは「インターネットに繋がる」という言葉の正確さに関しては議論しないことにします。

大まかな流れとその確認確認ポイント

通常お客さんが「インターネットに繋がらない」と言ったときにはブラウザでWeb上のコンテンツを表示できなくなったときでしょうから、そのときの大まかな流れを見てみます。

  1. PCが起動する
  2. 有線または無線にてEthernetに接続する
  3. 固定またはDHCPにてTCP/IPの設定がなされる
  4. ブラウザにてURLが指定される
  5. DNSにホスト名に対応するIPアドレスを問い合わせ、回答を得る
  6. 該当のWeb Serverに接続する
  7. Web Serverからコンテンツを得る
  8. ブラウザにコンテンツを表示する

image

これはかなり大まかな流れであって、実際にはまだまだいくらでも細かく処理を記述することが可能ですが、最低この程度の粒度では事象を抑えてもらいたいです。

このレベルでの確認ポイントは以下です。

  • きちんとケーブルが刺さっているか
  • IPアドレス、サブネットマスク、デフォルトゲートウェイ、DNSの設定がきちんとなされているか
  • DNSでの名前解決(ホスト名からIPアドレスへの変換)がきちんとなされているか
  • 該当のWeb Serverに接続できているか
  • コンテンツを得られるか

それぞれ確認方法を紹介してみましょう。

きちんとケーブルが刺さっているか

これはどうやって確認すればいいかというと・・・・。目で見て確認してください(笑)。でも、せっかくなのでコマンドで確認する方法も紹介しましょう。

image

このように「ipconfig」というコマンドを使うとネットワークの状態を見ることができます。今、上の図ではきちんとIPアドレス等が表示されているので、この状態であれば「ケーブルがきちんと刺さっている」と言うことがわかります。ケーブルがきちんと刺さっていない場合にはここには「media disconnected」と表示されます。このように表示された場合にはケーブルが刺さっていない状態ですので、ケーブルの確認をしてください。

IPアドレス、サブネットマスク、デフォルトゲートウェイ、DNSの設定がきちんとなされているか

ケーブルが刺さっていることを確認したら次はIPアドレス、サブネットマスク、デフォルトゲートウェイ、DNS等のTCP/IPの設定がきちんとなされているかを確認します。これも先ほどと同じく「ipconfig」コマンドで確認できるのですが、「ipconfig」コマンドだけではDNSの設定が確認できないので「ipconfig /all」コマンドを実行することで確認します。

image

ここできちんとIPアドレス(IP Address)、サブネットマスク(Subnet Mask)、デフォルトゲートウェイ(Default Gateway)、DNS(DNS Servers)が設定されていることを確認します。

ここでこれらのパラメータを自分で設定している人(固定的に設定している人)と自動的に設定している人とで若干確認、修正方法が異なります。

固定になっているのか、自動になっているのかの判別は上記コマンド結果の「Dhcp Enabled」の部分がYesになっているかNoになっているかでわかります。上記のサンプルではDHCPが有効になっていて、DHCPサーバー(192.168.1.254)からTCP/IPの設定を自動取得していることがわかります。

固定で設定している場合には「インターネットプロトコル(TCP/IP)」のプロパティから手動で値を設定、修正します。

image

image

自動になっている場合にはDHCPサーバーがきちんと稼動して、正しい設定を配布してくれている必要があります。自動的に取得する設定になっているにもかかわらず「169.254.x.x」、あるいは「0.0.0.0」というアドレスになっている場合には正常にDHCPサーバーから設定を取得できていない状態です。DHCPサーバーの正常動作を確認するか、あるいは固定で設定してしまうかなどの対応が必要です。

参考:APIPA – Wikipedia

そもそもどんな値を設定すればいいのか、設定されていればいいのかわからない人はTCP/IPの基礎を勉強しなくてはいけないですね。後日書く予定です。

ここまでの設定の確認としては、「デフォルトゲートウェイまでのpingが通ることを確認する」という方法が有効です。

image

「ping デフォルトゲートウェイのIPアドレス」を実行して、Pingに対してReplyがあることを確認しましょう。

DNSでの名前解決(ホスト名からIPアドレスへの変換)がきちんとなされているか

次にDNSでの名前解決がきちんとなされているかの確認方法です。「nslookup」というコマンドをつかって「nslookup ホスト名」とすることで調べられます。「ホスト名」というのはURLのうち下の例で言うとxxxx.xxx.xxの部分です。
「http://xxxx.xxx.xx/yyy/xxx/」
http://の直後からはじめの「/」の前までの部分ですね。

image

このようにホスト名からIPアドレスへの変換がうまくいっている必要があります。そもそもここでスペルミスなどをすると以下のように答えが返ってきません。

image

ここがうまくいかない場合には以下の2つの可能性があります。

  • TCP/IPの設定でDNSの設定を間違えている(正しいDNSサーバーを利用していない)
  • 接続しようとしている先のサイトの情報を保持しているDNSサーバーに障害が起きている

どちらなのかを判断するためには、その他のホスト名の名前解決ができるかどうかを調べましょう。私はいつも「www.google.com」が解決できるかどうか試しています。

ここまでのこと(ケーブル、TCP/IP設定、DNS)を一度に試す方法があります。それは「ping www.google.com」を実行することです。

image

ケーブルが繋がっていなければPingに応答があるわけはありませんし、TCP/IPの設定がただしいからgoogleのサーバーまで通信できています。また、www.google.comをDNSをつかってIPアドレスに変換できているからPingが打てているのです。www.google.comのホストはきちんとpingのReplyを返してくれるので確認が取れるわけです。

該当のWeb Serverに接続できているか

ここまでの確認でクライアント側のTCP/IPおよびDNSの設定は問題ないことがわかりました。もう少し上の層に視点を切り替えていきます。まずは、該当のWeb Serverに接続できているかどうかです。

これを試すには「telnet ホスト名 http」を実行します。

image

上記のようにコマンドプロンプトが真っ黒になれば接続は成功です。うまくいかない場合には「接続中: ホスト名…」としばらく表示された後で「ホストへ接続できませんでした。 ポート番号 http: 接続に失敗しました」と表示されるはずです。

これは何をしているのかというと、まさに該当のホスト(Web Server)にTCPの80番(HTTP)で接続をしているのです。サイトが見えるためにはこの接続が成功しないといけません。

DNSの確認まで成功していて、ここで失敗する場合には以下の3つの可能性があります。

  • ホスト名(URL)を間違えている
  • 該当のWeb Serverがダウン中、あるいは接続を拒否している
  • HTTPで接続できないようにネットワーク上のどこかでブロックされている

1番目に関しては正しいものを確認すればいいですし、2番目に関してはしばらく時間を置けばよいです。1番、2番に関してはいくつかのサイトに対して接続を試してみて、成功するものがあるかどうかで判別がつくと思います。

問題は3番の場合です。どこにも接続できないという場合にはかなりの確立で自分の存在しているネットワークからインターネットに出る途中の段階でブロックされている可能性が高いです。こうなってくると一筋縄ではいかないのでそれ相応の対応を取らなければいけないでしょう。素直にネットワーク管理者に状況を伝えるべきです。

コンテンツを得られるか

ここまでの段階で接続が成功したのであれば、あとはもうブラウザでの確認ができるはずなのでブラウザを単純に使います。そうすると正常に表示されないのであればブラウザにエラーが表示されるはずです。代表的なエラーメッセージを挙げておきます。

  • 404 – Not Found
    • 指定されたURLが存在しない。きっとURLをまちがえたか、そのページが本当にないかのどちらかでしょう。
  • 401 – Unauthorized
    • 認証が必要なページで認証に失敗した。ID、パスワードが間違っているのでしょう。
  • 500 – Internal Server Error
    • サーバー内部のエラー。おそらく何かのプログラムがサーバー側で動作して、それがエラーになっています。サーバー側の不具合なので、直るまで待ちましょう。しばらくたってからまたアクセスしましょう。

参考:RFC2068・HTTPエラーコード表 – 山崎はるかのメモ

ここまでの確認がすべてうまくいっているにもかかわらずブラウザに表示も何もされない、という場合にはWeb Serverがきちんと応答を返していない可能性が非常に高いです。この場合ブラウザ側で「応答がない」などのエラーメッセージが出されるでしょう。

余談

細かい話はすべて省いて書いたつもりですが、かなり長くなってしまいました。このほかにも考慮事項や原因はまだまだあるので後日別エントリにて・・・・。

子供3人。家族優先。都内SIer勤務。Windows系中心のインフラよりの何でも屋。脱原発。 Microsoft MVP for System Center and Datacenter Management.

2件のコメント

コメントを残す

メールアドレスが公開されることはありません。