さてそれでは、pingを使ってTCP/IPのトラブルシューティングを行う方法について見ていこう。例えばインターネットへのアクセスが全くできなくなった(メールサーバやWebサーバへアクセスできなくなった)とすると、以下のような順番でトラブルの場所(通信が不通になっている場所)を特定していくとよいだろう。
ネットワークがつながらないというトラブルを解決する場合、pingを使うよりも前に、少なくとも次のことを確認しておく(pingとはあまり関係ないので詳細な説明は割愛する)。
これらに起因するケースも意外と多いので、まずはネットワークインタフェースが正しく動作しているかどうかを確認することから始めるのが望ましい。
Windows OSのタスクマネージャを見れば、ネットワークインタフェースの状態を簡単に確認できる。
ネットワークインタフェースにIPアドレスが割り当てられていない状態だと、pingで送信することはできないし、外部からのpingに応答することもない。
コマンドプロンプト上でネットワークインタフェースの状態を確認するには、ipconfigコマンドを実行するとよい。
ネットワークインタフェースが正しく動作しているようならば、次は「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プロトコルスタックに何らかの深刻なダメージがある場合だろう。
本Tech TIPSでは、IPv4を前提としてpingコマンドの使い方を解説している。もし、IPv6のpingを利用したいなら、IPv6アドレスを指定するか、「-6」というオプションを付ける。例えば「ping ::1」「ping -6 mypc001」のようにする(「::1」はIPv6におけるループバックアドレス)。
IPv6については連載「Windows管理者のためのIPv6入門」も参照のこと。
ローカルループバックアドレスの次にチェックすべきことは、自分に割り当てられている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アドレスの割り当ては失敗するので、これらも確認する。
自分自身に正しくIPアドレスが割り当てられていることが分かったら、次はいよいよ他のPCとの通信をテストしてみる。
ping <LAN上のPC>
最初にpingすべき相手は、「同一のLAN(同一のイーサネット)上に存在している、同じネットワークアドレスを持つシステム」である。もちろん相手側ではpingに応答するように設定しておくこと(Windows OSでは下記のコラムのように応答の許可が必要なことが多い)。できることなら、現在稼働していることが確実で、IPアドレスが固定的に割り当てられているシステム、例えば全員で共有しているファイルサーバやルータなどが望ましい。
これが成功するようなら、IPアドレスの割り当てが正しく行われ、ハードウェアやデバイスドライバ、TCP/IPプロトコルスタックなども正しく動作しているということになる。
もし失敗するようならば(無応答ならば)、デバイスドライバなどが正しく動作していない/インストールされていないなど、ハードウェア的なトラブルである可能性が高い。
現在のWindows OSでは、デフォルトではpingパケットの受信を禁止していることが多く、pingに対して応答を返さないシステムも多い。その場合、pingに応答させるには、あらかじめping要求の受信や、それに対する応答の返信を許可しておく必要がある。
Windows 10の場合、「セキュリティが強化されたWindows Defenderファイアウォール」アプリで、「ファイルとプリンターの共有(エコー要求 - ICMPv* 受信)」という受信の規則を有効化する。その手順の詳細については、Tech TIPS「Windowsのファイアウォールで『ping』コマンドへの応答を許可する」を参照していただきたい。
LAN上の相手に対してpingが成功するようならば、次は(インターネットや社内の他のネットワークに接続するための)ルータや、そのルータの先にあるシステムに対してpingを実行してみる。
ping <ローカルネットワーク以外のIPアドレス>
これが失敗するようなら、デフォルトゲートウェイのIPアドレスや(サブ)ネットマスクの設定などがおかしい、もしくは設定するのを忘れている、などの理由が考えられる(Tech TIPS「Windows OSのデフォルトゲートウェイは1つのみ有効」が参考になるだろう)。
また逆に、ping先の機器から逆向きのルート設定がどこかで間違っていても、やはり応答が戻ってこなくなる。ルーティングの設定については、Tech TIPS「ネットワークのルーティングは双方向で設定する」も参照していただきたい。
ここまで成功するようなら、次は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への応答がなければ、ルーティングの設定などをチェックする。
以上のチェックを全てパスするようなら、通信できない理由は、インターネットのサービスに接続するための(社内の)ルータやDNSサーバ、Proxyサーバがダウンしているなど、プロバイダのネットワークがダウンしている、インターネット上の目的のサーバそのものがダウンしている、pingへの応答がファイルで禁止されている、などが考えられる。
あとはケースバイケースで、これらのホストに順次pingを実行したり、他のツール(そのホストが提供しているサービスに対応したツール)などで接続したりして、不通となっている場所やサービスを特定すればよい。
■関連記事(Windows Server Insider)
■更新履歴
【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)。
Copyright© Digital Advantage Corp. All Rights Reserved.