PowerShellのTest-NetConnectionコマンドレットが登場する前、さまざまなネットワーク接続の問題をトラブルシューティングするために選択できる多くのコマンドラインツールがありました。
ICMPエコーと応答をテストするためのping;パケットがドロップされている可能性のある場所を確認するためのtracert;DNSサーバーに対してDNSクエリを実行するためのnslookup;オープンされているTCPポートを確認するためのtelnetなど、さまざまなユーティリティがありました。すべてのためのユーティリティがありました。
Windows 8.1およびWindows Server 2012 R2でPowerShell v4が導入されたことにより、この単一のユーティリティによる単一のタスクアプローチは時代遅れになりました。
新しい、強力なTest-NetConnectionコマンドレットをご紹介しましょう。PowerShellのTest-NetConnectionはping、tracert、nslookup、telnetなど、さまざまなユーティリティを1つのトラブルシューティングスイートにまとめたものです。
Test-NetConnectionでのトラブルシューティング
PowerShellのtest-netconnectionコマンドレットで何ができるかを見て、ネットワーク接続の問題をトラブルシューティングする際にどのように使用できるかを見てみましょう。
これを示すために、一般的な現実の問題である「XYZのウェブサイトにアクセスできない!」をトラブルシューティングするために、PowerShellのTest-NetConnection
を使用します。
ほとんどのユーザーが知らないことは、ウェブサイトをブラウザで正常に表示すること自体が、その実現には多くの要素がうまく連携する必要があるという驚くべきことです。最低限、このプロセスには以下の要素が含まれます:
- インターネット接続があること。
- DNSサーバーへの経路があること。
- URLの解決のためにDNSサーバーへの接触があること。
- URLが解決されるIPアドレスへの経路があること。
- TCPポート80が開いていること。
- その他、その他。
インターネット接続を確認する
トラブルシューティングを開始するには、まずインターネット接続があることを確認する必要があります。単にPowerShellのTest-NetConnection
をパラメータなしで実行することでこれを行うことができます。ただし、より詳細な情報が必要な場合は、InformationLevel
パラメータにDetailed
引数を使用することをおすすめします。
この単純なコマンドは、ローカルの接続性とインターネット接続性をチェックし、DNSクライアントがDNSサーバーに向けられた名前を解決できることを確認します。ネットワーク接続の一般的な健康チェックと考えてください。このコマンドは、ウェブサイトを表示するために必要な5つのプロセスのうち3つを一度にチェックします!
Test-NetConnectionを使用してウェブサイトホストへの接続をテストする
今度はトラブルシューティングをウェブサイトのホストに対して行う必要があります。例としてgoogle.comを使用しましょう。リモートコンピューターも使用できます。
Test-NetConnection
コマンドをComputerName
パラメーターとともに使用して、ウェブサイトのホストがDNSで解決できるか、名前が解決されるIPアドレスに到達するためのTCPルートが利用可能か、およびpingできるかを同時に確認できます。
このステップでは、厳密にはgoogle.comウェブサーバーへのルートが確認されていますが、パケットがgoogle.comウェブサーバーに到達するためにどのルーターを経由しているかの詳細な情報を見つけたいと思います。そのために、TraceRoute
パラメーターを使用してリストを取得します。
TCPポートが開いていることを確認する
最後のテストは、ウェブサーバーが実行されていると予想されるTCPポートが開いていることを確認することです。この場合、google.comを指定しているだけなので、TCPポート80と仮定します。それには、Test-NetConnection
に別のパラメーターを追加するだけです。 Test-NetConnection
はいくつかの異なるサービスの標準TCPポートを理解しているため、ポート番号を知る必要すらありません。HTTPをCommonTCPPort
パラメーターに渡すだけで動作します。
ただし、ウェブサイトが8080などの異なるポートで実行されている可能性がある場合は、Port
パラメーターを使用して直接TCPポートを指定できます。
この記事の最初に述べた接続要件の各項目をテストしました。現時点でウェブサイトが表示されない場合、クライアントに問題がないことが確認されたため、問題をGoogleや下流のDNSサーバーに引き継ぐことができます。