Powershellでは特定のTCPポートに疎通確認することが可能です。
「Test-NetConnection」というコマンドを利用します。
今回はそのコマンドを利用してインターネット向けのポート接続確認を行ってみました。
また、接続ができないときにはどのような表示がされるのかについても調べてみました。
ICMPで疎通はできないが、TCP接続の正常性は試したいときにおすすめの確認方法です。
KMSホストへの疎通を確かめる
Azure上の仮想マシンでは以下のKMSホストを利用しています。
- ホスト名:kms.core.windows.net
- IPアドレス:23.102.135.246
- ポート番号:1688
なので今回はこの宛先に対して「Test-NetConnection」コマンドを利用して疎通を確認していきます。
ホスト名とポート番号を利用する場合
ホスト名とポート番号を利用する場合には以下のように記載します。
Test-NetConnection -ComputerName kms.core.windows.net -Port 1688
コマンドの引数として「-ComputerName」にホスト名を、「-Port」にポート番号を記載します。
実行途中に以下のような緑の表示が出ますが、「コマンド実行中」の表示なので気にしないでください。
コマンド実行結果は以下のようになります。
正常に疎通が取れる場合、「TcpTestSucceeded」が「True」となります。
IPアドレスとポート番号を利用する場合
ホスト名とポート番号を利用する場合には以下のように記載します。
今度は「-ComputerName」にIPアドレスを記載します。
Test-NetConnection -ComputerName 23.102.135.246 -Port 1688
こちらも正常に疎通が取れる場合、「TcpTestSucceeded」が「True」となります。
誤ったポート番号を指定した場合
最後に誤ったポート番号を指定した場合にどうなるのかを試してみました。
今回は、KMS ホストの宛先を指定して、1677 というポートでアクセスしてみます。
もちろんポートが異なるので接続はできず、
接続できない場合には「TcpTestSucceeded」は「False」と表示されます。
また、「Test-NetConnection」コマンドでは TCP の疎通確認ができなかった時点で ping の確認もしてくれます。
ですが、今回は ping の疎通も確認できなかったので、「PingSucceeded」も「False」となっていますし、画面上部の「警告」という黄色い文字の欄にも「TCP接続も ping もダメでした」と表示されます。
さいごに
過去、私自身も ping が通らない宛先に対して、TCP レベルで疎通確認する必要なことがあって、その時はまさにこのコマンドを利用して確認を取りました。
有用性は高いと思いますので、「powershell で TCP 接続確認できるコマンドがあったな」くらいでも覚えておくといいのかなと思います。^^