WindowsでTCPポートへの接続を確認する:Test-NetConnectionの使い方

WindowsでTCPポートへの接続を確認する:Test-NetConnectionの使い方

サーバーへpingは通るのに、SSHやWeb画面にはつながらない。そんなときは、目的のサービスが使うTCPポートへの接続を調べると、次に見る場所を絞れます。Windows PowerShellのTest-NetConnectionを使い、結果の読み方と確認の順番を見ていきましょう。


接続先とポートを指定する

スタートメニューからWindows PowerShellを開き、接続したいサーバーとTCPポートを指定します。

Test-NetConnection -ComputerName server.example.com -Port 22

server.example.comは自分の接続先へ置き換えます。22はSSHでよく使う番号ですが、サーバー側で変更している場合はその番号を使います。調べる相手は、自分が利用・管理している接続先です。

結果ではRemoteAddress、RemotePort、TcpTestSucceededが手がかりになります。まず宛先とポートが意図した値かを見てから、TcpTestSucceededを読みます。コマンドの引数と出力例はMicrosoftのTest-NetConnection解説にも掲載されています。

Trueならアプリ側の接続結果を調べる

TcpTestSucceededがTrueなら、その時点で指定したTCPポートへ接続できています。次は普段使うSSHクライアントやブラウザーで接続し、表示されるエラーを手がかりにします。

ポートに届くことと、ログインできることは別の段階です。SSHで認証エラーが出るならユーザー名や鍵の設定、Web画面で証明書エラーが出るならアクセス先のホスト名など、アプリが示す内容に沿って調べる方が近道になります。

Falseなら宛先・サービス・経路を順に見る

TcpTestSucceededがFalseでも、それだけでファイアウォールが原因とは決まりません。接続先やポートの入力違い、サービスの停止、VPNなど必要な接続経路が使えていない場合も考えられます。

最初に普段の接続設定と宛先・ポートを照らし合わせます。次にサーバー側のサービスが動いているか、どのアドレスとポートで待ち受けているかを確認できると、調べる範囲が狭まります。管理されたサーバーなら、接続元・宛先・ポートと試した時刻を管理者へ伝えると状況を共有しやすくなります。

pingの成功とTCPの成功を別々に読む

pingの応答があっても、目的のTCPサービスが動いているとは限りません。手元のWindows PowerShell 5.1で同じローカルポートを調べたところ、待ち受け中はTcpTestSucceededがTrue、停止後はFalseになり、停止後もPingSucceededはTrueでした。

この結果は、PCへのping応答と、指定したポートの待ち受けが別であることを示しています。pingだけで判断せず、使いたいサービスのポートを指定すると状況を捉えやすくなります。

-PortはTCPの接続テストです。UDPを使う機能の確認には、そのアプリの診断機能やログを使います。

SSHの踏み台を経由する構成では、どのPCからどの宛先へ接続するかも大切です。RLoginのローカルポートフォワード手順では、手元の待ち受けと踏み台からの転送先を操作画面とともに説明しています。

このブラウザからの自分のアクセスを解析から除外できます。