Windowsからポートを指定してpingを打つ

スポンサーリンク

PowerShell で Test-NetConnection コマンドを実行することで、TCP/IP レベルの疎通を確認できます。

TEST

1. 対応OS

  • サーバー OS: Windows Server 2012 R2 以降
  • クライント OS: Windows 8.1 以降

Windows Server 2012 / Windows 8 以下の場合は telnet を使って確認できます。
※参考:Windows からtelnetコマンドでポートの応答を確認する

2. 方法

PowerShell を起動して Test-NetConnection コマンドを実行します。
※参考:「PowerShell」の開き方

書式

Test-NetConnection <ホスト名 or IPアドレス> -port <ポート番号>

実行例

例1

当サイト win2012r2.com443 番ポートが開放されているか調べる場合は…

PS> Test-NetConnection win2012r2.com -port 443                                                                                                                                                                                                                                                                                                           ComputerName     : win2012r2.com
RemoteAddress    : 49.212.180.105
RemotePort       : 443
InterfaceAlias   : イーサネット
SourceAddress    : 192.168.1.7
TcpTestSucceeded : True

TcpTestSucceededTrue になっているので 443 番ポートと通信できています。

2

当サイトwin2012r2.com23 番ポートが開放されているか調べる場合は…

PS> Test-NetConnection win2012r2.com -port 23
警告: TCP connect to (49.212.180.105 : 23) failed

ComputerName           : win2012r2.com
RemoteAddress          : 49.212.180.105
RemotePort             : 23
InterfaceAlias         : イーサネット
SourceAddress          : 192.168.1.7
PingSucceeded          : True
PingReplyDetails (RTT) : 10 ms
TcpTestSucceeded       : False

TcpTestSucceededFalse になっているので 23 ポートとの通信に失敗しています。
PingSuccededTrue になっているので、普通の ping (ICMP) には成功しています。

3. 補足

補足 1.

ポートが開放されているからといって、必ずしも Test-NetConnection が成功するわけではないので注意してください。

参考:ファイアウォールを開放しているのにTest-NetConnectionに失敗する

補足 2.

厳密にいうと Test-NetConnection はpingではありません。なぜなら ping はICMPというプロトコルを利用したプログラムであり、ICMPにはポート番号という概念がないからです。Test-NetConnection はその上位のトランスポート層レベルでの通信を確認しています。ポート番号とはトランスポート層に所属するプロトコルであるTCPやUDPに存在する概念です。

下の図はホストA からホストBに対して、ping と Test-NetConnection を実行したときのイメージです。

参考:ping にポート番号はありません

この程度のNWの基礎知識はNWエンジニアでなくても必須です。下記の本は分野に限らずすべてのITエンジニア必読です。

以上。

コメント