PowerShellで特定TCPポートの接続可否を確認する方法

Powershell Powershell
この記事は約4分で読めます。

Windowsでサーバーやサービスの特定TCPポートに接続できるか確認したいときはPowerShellのTest-NetConnectionコマンドレットが便利です。

今回はそのコマンドを利用してインターネット向けのポート接続確認を試してみました。
また、接続ができないときにはどのような表示がされるのかについても調べてみました。

ICMPで疎通はできないが、TCP接続の正常性は試したいときにおすすめの確認方法です。

広告

1.Powershellで特定TCPポートの接続可否を確認する

1-1.Test-NetConnection コマンドの基本構文

基本的な構文は以下です。

Test-NetConnection -ComputerName <ホスト名またはIP> -Port <ポート番号>

-ComputerName : 接続先ホスト名またはIPアドレス

-Port : 確認したいTCPポート番号

1-2. 【実例】KMSホストへの疎通を確かめる

今回は例として、MicrosoftのKMSサーバーに疎通確認を実施してみます。

KMSサーバーの情報は以下です。

  • ホスト名:kms.core.windows.net もしくは azkms.core.windows.net
  • IPアドレス:23.102.135.246, 20.118.99.224, 40.83.235.53 のいづれか
  • ポート番号:1688

1-1-1.ホスト名とポート番号を利用する場合

ホスト名とポート番号を利用する場合には以下のように記載します。

Test-NetConnection -ComputerName kms.core.windows.net -Port 1688

コマンドの引数として -ComputerName にホスト名を、-Port にポート番号を記載します。

実行途中には以下のような緑の表示が出ます。

Test-NetConnection実行後に表示される「コマンド実行中」の緑の表示

コマンド実行結果は以下のようになります。

Test-NetConnectionコマンド実行結果(ホスト名・ポート)

正常に疎通が取れる場合、TcpTestSucceeded「True」となります。

1-1-2.IPアドレスとポート番号を利用する場合

ホスト名とポート番号を利用する場合には以下のように記載します。

今度は -ComputerNameIPアドレスを記載します。

Test-NetConnection -ComputerName 23.102.135.246 -Port 1688

こちらも正常に疎通が取れる場合、TcpTestSucceeded「True」となります。

Test-NetConnectionコマンド実行結果(IPアドレス・ポート)

2.誤ったポート番号を指定した場合

存在しないポートや通信不可の場合、出力は以下のようになります。

  • TcpTestSucceeded : False
  • PingSucceeded : 環境により True/False
  • 画面上部に「TCP接続が失敗した」と警告表示

TCP接続→ping の順でテストする仕様のため、ICMPが無効でも問題なく診断可能です。

今回は試しにKMS ホストの宛先を指定して、1677 というポートでアクセスしてみます。

Test-NetConnectionコマンド実行結果(ポート番号が誤っている場合)

もちろんポートが異なるので接続はできず、TcpTestSucceeded「False」と表示されます。

また、「Test-NetConnection」コマンドでは TCP の疎通確認ができなかった時点で ping の確認もしてくれます。

ですが、今回は ping の疎通も確認できなかったので、PingSucceeded「False」となっていますし、画面上部の「警告」という黄色い文字の欄にも「TCP接続も ping もダメでした」と表示されます

3.さいごに

過去、ping が通らない宛先に対して TCP レベルで疎通確認する必要なことがあり、その時はまさにこのコマンドを利用して確認を取りました。

利用する機会は多いと思いますので、「powershell で TCP 接続確認できるコマンドがあったな」くらいでも覚えておくといいのかなと思います。