Windowsには、ネットワーク通信のトラブルが発生したときに、調査などで役立つ以下のようなコマンドが用意されています。
- ping
- tracert
- pathping
- netstat
- nslookup
- route
そこでここでは、これらのネットワーク通信の調査に役立つコマンドの使い方を紹介します。
目次
疎通の確認(ping)
Pingコマンドは、指定した宛先とのネットワーク疎通や応答時間を確認できるコマンドで、基本的な使い方は以下のようにコマンドを実行します。
> ping <宛先のIPアドレスやホスト名>
pingコマンドで利用できるオプションは、次のとおりです。
pingコマンドを実行すると、指定した宛先に32バイトのパケットを4回を送信して、応答時間やパケットの損失がないかなどを確認することができます。
なお、pingコマンドを実行する際、初めの1回目はARPによる名前解決(MACアドレスとIPアドレスの紐づけ)が行われるため、若干の遅延が発生するため、より正確な測定を行いたい場合は、はじめに1回だけpingを実行して名前解決を済ませてから、改めてpingコマンドを実行することで、比較的正確な測定ができます。
送信回数を指定して実行
pingコマンドはデフォルトで宛先に4回だけパケットを送信します。ですが、ネットワークの遅延やパケットの消失を調べる場合、4回では足りない場合が多々あります。
そのようなときは、「-n」オプションでパケットの送信回数を指定でき、たとえば、10回送信したい場合は、次のように実行します。
> ping -n 10 <宛先のIPアドレスやホスト名>
回数を指定せず実行
-nオプションでは回数を指定して実行できますが、回数を指定せず実行し続けたい場合は「-t」オプションを利用します。
実行方法は、次のとおりです。
> ping -t <宛先のIPアドレスやホスト名>
なお、コマンドの実行を終了するには「Ctrl」+「C」キーを押し、途中経過の情報を表示するには「Ctrl」+「Break」キーを押します。
通信経路の確認(tracert)
tracertコマンドは、指定した宛先に到達するまでに経由したルーター(ホスト)と応答時間を確認できるコマンドで、基本的な使い方は以下のようにコマンドを実行します。
> tracert <宛先のIPアドレスやホスト名>
tracertコマンドで利用できるオプションは、次のとおりです。
tracertコマンドを実行すると、指定した宛先に到達するまでに経由したルーター(ホスト)が一覧表示され、経由したルーターごとの応答時間(3回分)を確認することができます。
以下の画面では、宛先に到達するまでに9台のルーターを経由していることが分かります。
tracertコマンドは、ローカルネットワーク上ではあまり利用することはないコマンドですが、インターネット上のホストととの通信でトラブルが発生した場合は、tracertコマンドを利用することで、経路の途中でトラブルが発生しているのかなどを確認することができます。
なお、経路上のルーターの応答時間が大きい場合がありますが、最終的な宛先との通信には影響しない場合がほとんどです。
疎通と経路の一括確認(pathping)
pathpingコマンドは、指定した宛先との疎通や経由したルーター(ホスト)と応答時間を一度に確認できるコマンドで、基本的な使い方は以下のようにコマンドを実行します。
> pathping <宛先のIPアドレスやホスト名>
pathpingコマンドで利用できるオプションは、次のとおりです。
pathpingコマンドを実行すると、指定した宛先に到達するまでに経由したルーターの一覧と、経路の状況が表示されます。
210.XXX.XXX.XXX へのルートをトレースしています。経由するホップ数は最大 30 です
0 192.168.XXX.XXX
1 192.168.XXX.XXX
2 192.168.XXX.XXX
3 211.XXX.XXX.XXX
4 211.XXX.XXX.XXX
5 118.XXX.XXX.XXX
6 153.XXX.XXX.XXX
7 60.XXX.XXX.XXX
8 60.XXX.XXX.XXX
9 118.XXX.XXX.XXX
10 210.XXX.XXX.XXX
統計を 250 秒間計算しています...
ソースからここまで このノード/リンク
ホップ RTT 損失/送信 = Pct 損失/送信 = Pct アドレス
0 192.168.XXX.XXX
0/ 100 = 0% |
1 2ms 0/ 100 = 0% 0/ 100 = 0% 192.168.XXX.XXX
0/ 100 = 0% |
2 2ms 0/ 100 = 0% 0/ 100 = 0% 192.168.XXX.XXX
0/ 100 = 0% |
3 3ms 0/ 100 = 0% 0/ 100 = 0% 211.XXX.XXX.XXX
0/ 100 = 0% |
4 5ms 0/ 100 = 0% 0/ 100 = 0% 211.XXX.XXX.XXX
0/ 100 = 0% |
5 7ms 0/ 100 = 0% 0/ 100 = 0% 118.XXX.XXX.XXX
0/ 100 = 0% |
6 8ms 0/ 100 = 0% 0/ 100 = 0% 153.XXX.XXX.XXX
0/ 100 = 0% |
7 7ms 0/ 100 = 0% 0/ 100 = 0% 60.XXX.XXX.XXX
0/ 100 = 0% |
8 6ms 0/ 100 = 0% 0/ 100 = 0% 60.XXX.XXX.XXX
0/ 100 = 0% |
9 7ms 0/ 100 = 0% 0/ 100 = 0% 118.XXX.XXX.XXX
1/ 100 = 1% |
10 6ms 1/ 100 = 1% 0/ 100 = 0% 210.XXX.XXX.XXX
トレースを完了しました。
結果画面の見方
pathpingコマンドの結果画面は、大きく2つのパートに分かれており、前半部分には、宛先までの経路上にあるルーターのIPアドレス一覧が表示されます。
以下の結果では、宛先に到達するまでに9台のルーターを経由したことが分かります。
210.XXX.XXX.XXX へのルートをトレースしています。経由するホップ数は最大 30 です
0 192.168.XXX.XXX …自分のマシン
1 192.168.XXX.XXX
2 192.168.XXX.XXX
3 211.XXX.XXX.XXX
4 211.XXX.XXX.XXX
5 118.XXX.XXX.XXX
6 153.XXX.XXX.XXX
7 60.XXX.XXX.XXX
8 60.XXX.XXX.XXX
9 118.XXX.XXX.XXX
10 210.XXX.XXX.XXX …宛先のマシン
後半部分には、経路上のルーターごとの応答時間(RTT)やパケットの損失率、ルーター間のパケット損失率といった統計情報が表示されます。
統計を 250 秒間計算しています...
ソースからここまで このノード/リンク
ホップ RTT 損失/送信 = Pct 損失/送信 = Pct アドレス
0 192.168.XXX.XXX
0/ 100 = 0% |
1 2ms 0/ 100 = 0% 0/ 100 = 0% 192.168.XXX.XXX
0/ 100 = 0% |
2 2ms 0/ 100 = 0% 0/ 100 = 0% 192.168.XXX.XXX
0/ 100 = 0% |
3 3ms 0/ 100 = 0% 0/ 100 = 0% 211.XXX.XXX.XXX
0/ 100 = 0% |
4 5ms 0/ 100 = 0% 0/ 100 = 0% 211.XXX.XXX.XXX
0/ 100 = 0% |
5 7ms 0/ 100 = 0% 0/ 100 = 0% 118.XXX.XXX.XXX
0/ 100 = 0% |
6 8ms 0/ 100 = 0% 0/ 100 = 0% 153.XXX.XXX.XXX
0/ 100 = 0% |
7 7ms 0/ 100 = 0% 0/ 100 = 0% 60.XXX.XXX.XXX
0/ 100 = 0% |
8 6ms 0/ 100 = 0% 0/ 100 = 0% 60.XXX.XXX.XXX
0/ 100 = 0% |
9 7ms 0/ 100 = 0% 0/ 100 = 0% 118.XXX.XXX.XXX
1/ 100 = 1% |
10 6ms 1/ 100 = 1% 0/ 100 = 0% 210.XXX.XXX.XXX
トレースを完了しました。
上の結果では、9番目のルーターと最終的な宛先の間で若干のパケットの損失を確認できますが、最終的な宛先に対する応答時間(RTT)は6msのため、特に問題ないと判断できます。
最終的な宛先の応答時間が大きい場合や、ルーター間の損失率が大きい場合は、ネットワークの混雑が予想されます。
なお、デフォルト設定では、経路上の各ルーターに対してICMPのEchoパケットを0.25秒間隔で100回送信し、応答時間(RTT)やパケットの損失率を算出するため、ルーターごとに25秒(0.25秒間隔×100パケット分)必要となり、上の例では結果が表示されるまでに250秒(25秒×10台分)かかりますが、コマンドにオプションを指定することで、送信間隔や送信パケット数は変更することができます。
通信の接続状態を確認(netstat)
netstatコマンドは、TCP/IP通信の接続状態を確認できるコマンドで、利用できるオプションは、次のとおりです。
netstatコマンドを利用すれば、現在どの宛先と通信しているのかや、サーバーソフトウェアなどが稼働している環境では、待ち受けポートの状態を確認することができます。
> netstat -a
名前解決の確認(nslookup)
nslookupコマンドは、DNSのサーバと正しく通信できているかや、名前解決などができるかを調査するときに役立つコマンドで、利用できるオプションは、次のとおりです。
たとえば「www.google.co.jp」の名前解決ができるか確認したいときは、以下のように実行します。
> nslookup www.google.co.jp ←正引き:ドメイン名からIPアドレスを調べる
> nslookup 8.8.8.8 ←逆引き:IPアドレスからドメイン名を調べる
また、デフォルトではネットワークインターフェースに設定されているDNSサーバーと通信が行われますが、接続するDNSサーバーを指定することもできます。
たとえば、DNSサーバーとして「1.1.1.1」を使用して調査したいときは、以下のように実行します。
> nslookup www.google.co.jp 1.1.1.1
ルーティングテーブルの確認(route)
routeコマンドは、宛先ネットワークへの経路の情報を管理するコマンドで、現在保存されている経路情報を確認したり、経路情報を登録したりできます。
routeコマンドで利用できるオプションは、次のとおりです。
現在の経路情報を確認したいときは、以下のように実行します。
> route print
静的な経路(スタティックルート)を新たに登録したいときは、以下のように実行します。
> route -p add <ネットワーク> mask <サブネット> <ゲートウェイ> [if <インターフェース番号>]
たとえば、宛先ネットワーク(172.16.1.0/24)へのゲートウェイとして192.168.0.254を指定したいときは、以下のように実行します。
> route -p add 172.16.1.0 mask 255.255.255.0 192.168.0.254
あとがき
Windows環境でネットワーク通信関連のトラブルシューティングをするなら、上のコマンドを押さえておけば、ほとんどンケースで対応できるでしょう。
ご活用あれ。