Test-NetConnection を使用した接続のトラブルシューティング

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引数を使用することをおすすめします。

Test-NetConnection -InformationLevel Detailed

この単純なコマンドは、ローカルの接続性とインターネット接続性をチェックし、DNSクライアントがDNSサーバーに向けられた名前を解決できることを確認します。ネットワーク接続の一般的な健康チェックと考えてください。このコマンドは、ウェブサイトを表示するために必要な5つのプロセスのうち3つを一度にチェックします!

Test-NetConnectionを使用してウェブサイトホストへの接続をテストする

今度はトラブルシューティングをウェブサイトのホストに対して行う必要があります。例としてgoogle.comを使用しましょう。リモートコンピューターも使用できます。

Test-NetConnectionコマンドをComputerNameパラメーターとともに使用して、ウェブサイトのホストがDNSで解決できるか、名前が解決されるIPアドレスに到達するためのTCPルートが利用可能か、およびpingできるかを同時に確認できます。

Test-NetConnection -ComputerName google.com

このステップでは、厳密にはgoogle.comウェブサーバーへのルートが確認されていますが、パケットがgoogle.comウェブサーバーに到達するためにどのルーターを経由しているかの詳細な情報を見つけたいと思います。そのために、TraceRouteパラメーターを使用してリストを取得します。

Test-NetConnection -ComputerName google.com -TraceRoute

TCPポートが開いていることを確認する

最後のテストは、ウェブサーバーが実行されていると予想されるTCPポートが開いていることを確認することです。この場合、google.comを指定しているだけなので、TCPポート80と仮定します。それには、Test-NetConnectionに別のパラメーターを追加するだけです。 Test-NetConnectionはいくつかの異なるサービスの標準TCPポートを理解しているため、ポート番号を知る必要すらありません。HTTPをCommonTCPPortパラメーターに渡すだけで動作します。

Test-NetConnection -ComputerName google.com -CommonTCPPort HTTP

ただし、ウェブサイトが8080などの異なるポートで実行されている可能性がある場合は、Portパラメーターを使用して直接TCPポートを指定できます。

Test-NetConnection -ComputerName google.com -Port 80

この記事の最初に述べた接続要件の各項目をテストしました。現時点でウェブサイトが表示されない場合、クライアントに問題がないことが確認されたため、問題をGoogleや下流のDNSサーバーに引き継ぐことができます。

Source:
https://adamtheautomator.com/test-netconnection/