中堅プログラマーの備忘録

忘れっぽくなってきたので備忘録として・・・

【PowerShell】通信相手のポートがリスニングされているか調べるには【test-netconnection】が便利

1.概要

ネットワークの疎通確認は、多くの場合【pingコマンド】を使うと思います。
新規システムを構築した、またはシステムの調子が悪い場合など

「とりあえずpingが通るか確認する」

という工程をふむはずです。

私は必ずと言っていい程とりあえずpingを打ってみます。

但し、これは通信相手までのネットワーク疎通確認にすぎません。

今回はポートを指定しての疎通確認について記事にしてみました。


2.ping(ピング)とは

通信相手までTCP/IPでネットワークの疎通が取れるか確認するコマンド
という解釈です。
厳密には応答速度を調べたりも出来ますが
実態はとりあえずの疎通確認に使われるのが一般的かと思います。


但しpingにはポートという概念がありません。

【ICMP】という通信状態の確認をするために使われるプロトコルなのです。
※ICMP(Internet Control Message Protocol)


3.test-netconnectionについて

Test-NetConnectionコマンドレットは、接続の診断情報を表示します。
pingテスト、TCPテスト、ルートトレース、およびルート選択診断をサポートします。
と公式文書にはあります。

このコマンドは【PowerShell】で実行可能なコマンドになります。


4.実際にやってみる

とりあえず【google.com】に対してオプションを指定せずコマンドを実行します。

>test-netConnection google.com


ComputerName           : google.com
RemoteAddress          : 172.217.31.142
InterfaceAlias         : イーサネット
SourceAddress          : 192.168.0.120
PingSucceeded          : True
PingReplyDetails (RTT) : 2 ms

オプション指定がない場合はpingと同じ動作になるようです。

次にポートを指定してみます。

>test-netConnection google.com -port 443


ComputerName     : google.com
RemoteAddress    : 142.250.196.142
RemotePort       : 443
InterfaceAlias   : イーサネット
SourceAddress    : 192.168.0.120
TcpTestSucceeded : True

HTTPSのポートを指定してみたところ、通信疎通確認に問題がないことが確認出来ました。

更に、適当なポートを指定してみます。

>test-netConnection google.com -port 5000
警告: TCP connect to (142.250.196.142 : 5000) failed


ComputerName           : google.com
RemoteAddress          : 142.250.196.142
RemotePort             : 5000
InterfaceAlias         : イーサネット
SourceAddress          : 192.168.0.120
PingSucceeded          : True
PingReplyDetails (RTT) : 3 ms
TcpTestSucceeded       : False

通信は出来るけど、そのポートはリッスンされてないという内容が確認出来ます。


5.まとめ

これでサーバーのポートが正常に解放されているか、リッスンされた状態か
簡単に調べることが出来ると思います。

pingで疎通確認出来てるのにサーバーの動作がおかしい時などに
【test-netConnection】でポートの状態を調べてみるのもいいかもしれません。