Windowsの「ping」コマンドでネットワークトラブルの原因を調査するTech TIPS(2/2 ページ)

» 2021年03月17日 05時00分 公開
前のページへ 1|2       

pingを使ってネットワークをチェックする

 さてそれでは、pingを使ってTCP/IPのトラブルシューティングを行う方法について見ていこう。例えばインターネットへのアクセスが全くできなくなった(メールサーバやWebサーバへアクセスできなくなった)とすると、以下のような順番でトラブルの場所(通信が不通になっている場所)を特定していくとよいだろう。

pingでネットワークトラブルの原因を調査する pingでネットワークトラブルの原因を調査する
近くのノード(ホスト)から順にpingで応答があるかどうかを確認する。こうすると、ルーティングが通らないなどの問題のある場所を特定しやすい。
  (1)ローカルループバックアドレスへpingを実行する。TCP/IPが正しくインストールされていれば、これは通るはず。
  (2)ネットワークインタフェースに割り当てられたIPアドレスにpingを実行してみる。IPアドレスが正しく割り当てられているかどうかが分かる。
  (3)同一のローカルネットワークセグメント上にあるホストに対してpingを実行してみる。ローカルのネットワーク上のクライアント同士で通信できるかどうかが分かる(この通信にはルータは関与しない)。
  (4)ルータ(デフォルトゲートウェイ)に対してpingを実行してみる。デフォルトゲートウェイと通信できるかどうかが分かる。
  (5)ルータの出口側のIPアドレスに対してpingを実行してみる。ルータが正しくルーティングしているかどうか、デフォルトゲートウェイやルーティング設定が正しいかどうかなどが分かる。
  (6)ルータを越えた先にあるサーバなどに対してpingを実行してみる。IPアドレスだけでなくサーバ名やFQDN名などでもpingすること。サーバと通信できるか、社内向けDNSサーバの設定が正しいかどうかなどが分かる。
  (7)インターネットにアクセスしてみる。インターネットアクセスが正しく行え、名前解決やファイアウォールなども正しく動作しているかどうかが分かる。

ネットワークインタフェースやドライバのチェック

 ネットワークがつながらないというトラブルを解決する場合、pingを使うよりも前に、少なくとも次のことを確認しておく(pingとはあまり関係ないので詳細な説明は割愛する)。

  • ケーブルが正しく接続されているか
  • ネットワークインタフェースやハブのリンクランプが正しく点灯しているか
  • 無線LANが正しく接続されているか
  • デバイスドライバが正しく導入されているか
  • IPアドレスが正しく割り当てられているか

 これらに起因するケースも意外と多いので、まずはネットワークインタフェースが正しく動作しているかどうかを確認することから始めるのが望ましい。

●タスクマネージャでネットワークインタフェースの状態を調べる

 Windows OSのタスクマネージャを見れば、ネットワークインタフェースの状態を簡単に確認できる。

ネットワークインタフェースとIPアドレス ネットワークインタフェースとIPアドレス
これはタスクマネージャのパフォーマンスタブでネットワークインタフェースの1つを選んだところ。ネットワークインタフェースの状態を簡単に把握できる。

 ネットワークインタフェースにIPアドレスが割り当てられていない状態だと、pingで送信することはできないし、外部からのpingに応答することもない。

 コマンドプロンプト上でネットワークインタフェースの状態を確認するには、ipconfigコマンドを実行するとよい。

ループバックテスト「ping 127.0.0.1」

 ネットワークインタフェースが正しく動作しているようならば、次は「ping 127.0.0.1」というコマンドを実行して、正しく応答があることを確認する。

ping 127.0.0.1



 「127.0.0.1」というIPアドレスは「ローカルループバックアドレス」といい、TCP/IPプロトコルスタックの内部には必ずこのIPアドレスが用意されている(Tech TIPS「ローカルループバックアドレス(127.0.0.1)とは?」参照)。このアドレスは、常に自分自身を表すことになっているので、127.0.0.1へpingを行うということは、自分自身に対してpingを行うということになる。

 もしこのコマンドの実行が失敗するようならば、TCP/IPプロトコルスタックが正しくインストールされていないことになる。現在のWindows OSでは必ずTCP/IPプロトコルがインストールされているので、このコマンドの実行が失敗するのは、ネットワークが使えないセーフモードの場合か、(OSの復元や再インストールが必要なほど)TCP/IPプロトコルスタックに何らかの深刻なダメージがある場合だろう。

IPv6のpingを利用する

 本Tech TIPSでは、IPv4を前提としてpingコマンドの使い方を解説している。もし、IPv6のpingを利用したいなら、IPv6アドレスを指定するか、「-6」というオプションを付ける。例えば「ping ::1」「ping -6 mypc001」のようにする(「::1」はIPv6におけるループバックアドレス)。

 IPv6については連載「Windows管理者のためのIPv6入門」も参照のこと。


ローカルIPテスト「ping <自分のIPアドレス>」

 ローカルループバックアドレスの次にチェックすべきことは、自分に割り当てられているIPアドレスに対するpingの実行である。例えば、自分のPCに「192.168.0.123」という固定IPを割り当てている(はず)なら、次のように実行してみる。

C:\>ping 192.168.0.123



 IPアドレスをDHCPで自動割り当てしている場合は、ipconfig.exeコマンドで確認してもよいだろう。DHCPでのIPアドレスの取得に失敗していると、「0.0.0.0」というアドレスか、APIPAで割り当てられる「169.254.〜.〜」になっているはずである。

 このpingコマンドにより、自分自身に正しくIPアドレスが割り当てられているかどうかを確認できる。もし失敗するようならば、IPアドレスの設定方法(手動割り当てやDHCPによる割り当て方法)に問題があることが分かる。

 またネットワークケーブルが外れているなど、正しく接続できていない場合にも(クロスケーブルとストレートケーブルを間違えたり、他のPCと固定IPが衝突したりした場合など)、IPアドレスの割り当ては失敗するので、これらも確認する。

pingが失敗する例 pingが失敗する例
IPアドレスの割り当てが失敗している場合のエラーの例(Windows 10上で実行)。ローカルループバック以外のIPアドレスがない場合にpingを実行しようとすると、このようなメッセージが表示される。

ルーティングなしの通信テスト「ping <LAN上のPC>」

 自分自身に正しくIPアドレスが割り当てられていることが分かったら、次はいよいよ他のPCとの通信をテストしてみる。

ping <LAN上のPC>



 最初にpingすべき相手は、「同一のLAN(同一のイーサネット)上に存在している、同じネットワークアドレスを持つシステム」である。もちろん相手側ではpingに応答するように設定しておくこと(Windows OSでは下記のコラムのように応答の許可が必要なことが多い)。できることなら、現在稼働していることが確実で、IPアドレスが固定的に割り当てられているシステム、例えば全員で共有しているファイルサーバやルータなどが望ましい。

 これが成功するようなら、IPアドレスの割り当てが正しく行われ、ハードウェアやデバイスドライバ、TCP/IPプロトコルスタックなども正しく動作しているということになる。

 もし失敗するようならば(無応答ならば)、デバイスドライバなどが正しく動作していない/インストールされていないなど、ハードウェア的なトラブルである可能性が高い。

Windows OSでpingコマンドへの応答を許可するには?

 現在のWindows OSでは、デフォルトではpingパケットの受信を禁止していることが多く、pingに対して応答を返さないシステムも多い。その場合、pingに応答させるには、あらかじめping要求の受信や、それに対する応答の返信を許可しておく必要がある。

 Windows 10の場合、「セキュリティが強化されたWindows Defenderファイアウォール」アプリで、「ファイルとプリンターの共有(エコー要求 - ICMPv* 受信)」という受信の規則を有効化する。その手順の詳細については、Tech TIPS「Windowsのファイアウォールで『ping』コマンドへの応答を許可する」を参照していただきたい。


ルーティングありの通信テスト「ping <ローカルネットワーク以外のIPアドレス>」

 LAN上の相手に対してpingが成功するようならば、次は(インターネットや社内の他のネットワークに接続するための)ルータや、そのルータの先にあるシステムに対してpingを実行してみる。

ping <ローカルネットワーク以外のIPアドレス>



 これが失敗するようなら、デフォルトゲートウェイのIPアドレスや(サブ)ネットマスクの設定などがおかしい、もしくは設定するのを忘れている、などの理由が考えられる(Tech TIPS「Windows OSのデフォルトゲートウェイは1つのみ有効」が参考になるだろう)。

 また逆に、ping先の機器から逆向きのルート設定がどこかで間違っていても、やはり応答が戻ってこなくなる。ルーティングの設定については、Tech TIPS「ネットワークのルーティングは双方向で設定する」も参照していただきたい。

名前解決のテスト「ping <名前>」

 ここまで成功するようなら、次はIPアドレスではなく、ホスト名を指定してpingを実行してみる。

ping <名前>



 <名前>としては、ローカルのLAN上にあるシステム名(ドメイン名を含まないホスト名)や、FQDN形式のホスト名(社内にあるファイルサーバやDNSサーバ、Webサーバ、メールサーバなど)など、いろいろ試してみる。これに失敗するようなら、名前解決のための設定が正しく行われていないことが分かる。

 ただしセキュリティ上の理由によって、外部からのpingコマンドを受け付けないようにファイアウォールやシステムなどが設定されている場合もある。そのため、pingコマンドに対する応答がないからといって、必ず相手先との通信ができなくなっていると結論付けることはできない。

 もし単純なホスト名(FQDN形式でないホスト名)に対するpingが失敗するようならば、WINSサーバの設定などをチェックする。Windows系OSでは、NetBIOS名による名前の登録や解決が自動的に行われるので、Windows OS搭載PCに対するpingが失敗することはそう多くないだろう。

 しかしWINSとhostsファイルlmhostsファイルで互いに異なるようなホスト定義が行われていると、名前解決の優先度の問題によって、間違ったホストに対してpingを実行してしまう可能性がある(また、NetBIOSの名前解決方法を強制的にブロードキャスト以外に設定しているなどすると失敗する可能性がある)。

 非Windows OS系PCに対しては、hostsファイルやDNSなどで対応しなければならないので、その設定を間違えるとやはりpingできないことがあるので注意したい。

 またFQDN形式のホスト名に対するpingが失敗するようならば、DNSサーバのアドレスやTCP/IPのドメイン名の設定などに問題がある。

 ルータを越えた先にあるホストからpingへの応答がなければ、ルーティングの設定などをチェックする。

一般的な通信テスト「ping <インターネット上のサーバ>」

 以上のチェックを全てパスするようなら、通信できない理由は、インターネットのサービスに接続するための(社内の)ルータやDNSサーバ、Proxyサーバがダウンしているなど、プロバイダのネットワークがダウンしている、インターネット上の目的のサーバそのものがダウンしている、pingへの応答がファイルで禁止されている、などが考えられる。

 あとはケースバイケースで、これらのホストに順次pingを実行したり、他のツール(そのホストが提供しているサービスに対応したツール)などで接続したりして、不通となっている場所やサービスを特定すればよい。

■更新履歴

【2021/03/17】最新情報を反映しました。

【2017/12/07】最新Windows OSに合わせて、内容を更新しました。

【2014/12/19】Windows Vista/7/8/8.1およびWindows Server 2003/2008/2008 R2/2012/2012 R2向けの記述を追記しました。

【2002/04/26】Windows XPに関する情報を加筆・修正しました。

【2000/12/01】初版公開(対象はWindows 9x/Me/Windows 2000)。


「Tech TIPS」のインデックス

Tech TIPS

前のページへ 1|2       

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。