PowerShell で Test-NetConnection コマンドを実行することで、TCP/IP レベルの疎通を確認できます。
1. 対応OS
- サーバー OS: Windows Server 2012 R2 以降
- クライント OS: Windows 8.1 以降
Windows Server 2012 / Windows 8 以下の場合は telnet を使って確認できます。
※参考:Windows からtelnetコマンドでポートの応答を確認する
2. 方法
PowerShell を起動して Test-NetConnection コマンドを実行します。
※参考:「PowerShell」の開き方
実行例
例1
当サイト win2012r2.com の 443 番ポートが開放されているか調べる場合は…
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
TcpTestSucceeded が True になっているので 443 番ポートと通信できています。
例2
当サイトwin2012r2.com の 23 番ポートが開放されているか調べる場合は…
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
TcpTestSucceeded が False になっているので 23 ポートとの通信に失敗しています。
※PingSucceded が True になっているので、普通の ping (ICMP) には成功しています。
3. 補足
補足 1.
ポートが開放されているからといって、必ずしも Test-NetConnection が成功するわけではないので注意してください。
参考:ファイアウォールを開放しているのにTest-NetConnectionに失敗する
補足 2.
厳密にいうと Test-NetConnection はpingではありません。なぜなら ping はICMPというプロトコルを利用したプログラムであり、ICMPにはポート番号という概念がないからです。Test-NetConnection はその上位のトランスポート層レベルでの通信を確認しています。ポート番号とはトランスポート層に所属するプロトコルであるTCPやUDPに存在する概念です。
下の図はホストA からホストBに対して、ping と Test-NetConnection を実行したときのイメージです。
この程度のNWの基礎知識はNWエンジニアでなくても必須です。下記の本は分野に限らずすべてのITエンジニア必読です。
以上。
コメント