1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

TCPポートの疎通確認をする(WindowsでTest-NetConnectionがない環境向け)

Last updated at Posted at 2024-03-22

Windows PowerShell v4以降ではTest-NetConnectionコマンドレットが提供されているため、こちらを利用してTCPポートの疎通確認が簡単に確認できますが。

たまにWindows PowerShell v4より前の環境をさわることがあるため、そんなときに確認する方法をまとめておきます。

telnetコマンドを利用する

telnet

# telent [対象のIPアドレスまたはホスト名] [ポート番号] で確認できる
telnet 192.0.2.100 3389

上記のコマンドで疎通できる場合はブランク画面になります。

ブランク画面から抜けるにはエスケープ文字CTRL+]でコマンドモードに戻るのでそこでquitを実行すれば抜けられます。

image.png

なお上記コマンドで疎通失敗する場合は下記のようになります。

image.png

以下、メモ

Windows Server 2003の場合はtelnetコマンドが標準でインストールされているため、デフォルトでtelnetコマンドを利用でき疎通確認を行える。

Windows Server 2008 以降はtelnetコマンドが標準でインストールされなくなったため、Windowsの機能と追加からtelnet クライアントを追加してからtelnetコマンドを利用する。

ちなみにWindows Server 2008はデフォルトのWindows PowerShellのバージョンが1.0。
Windows Server 2008 R2はデフォルトのWindows PowerShellのバージョンが2.0。

となっており、デフォルトでインストールされているWindows PowerShellではTest-NetConnectionはない。

PortQryコマンドを利用する

Download Center - PortQry Command Line Port Scanner Version 2.0

PortQry コマンド ライン ツールの使用

別途インストールが必要となりますが、マイクロソフトが提供しているツールとしてPortQryを利用してポートの確認ができます。

ダウンロードセンターからPortQryV2.exeをダウンロードして実行すると、ライセンスの確認とファイルの展開がされます。

image.png

image.png

展開先のフォルダにPortQry.exeがあるためこちらを利用して下記のようにポートチェックを実施できます。

cmd.exe
# portqry -n [対象のIPアドレスまたはホスト名] -e [ポート番号]
PortQry.exe -n 192.0.2.100 -e 3389

#-nオプションでIPアドレスを指定すると、デフォルトでは逆引きを行うのでこれをスキップしたい場合は -nrオプションを指定
PortQry.exe -n 192.0.2.100 -e 3389 -nr

-nrオプションなしのケース

image.png

-nrオプションありのケース

image.png

PsPingコマンドを利用する

Sysinternalsで提供されいてるPsPingを使ってもポートチェックを行う事ができる。

Sysinternalsについて と Sysinternals Suiteのインストールについては 以前書いた下記記事参照(Sysinternals SuiteをインストールするとPsPingもインストールされます)

Sysinternalsについて

Sysinternals Suiteをwinget(msstore)からインストールしてみる

cmd.exe
# psping [対象のIPアドレスまたはホスト名]:[ポート番号]
psping 192.0.2.100:3389

image.png

.Net frameworkのSystem.Net.Sockets.TcpClientを利用する

Windows PowerShell 4.0より前はTest-NetConnectionはありませんが、.Net frameworkのTcpClientクラスを利用してポートのチェックを実施できます。

.Net framework 2.0 TcpClient クラス

上記のようにWindows PowerShell 2.0などで使われる.Net framework 2.0にもTcpClientは用意されているのでこちらを利用します。

# ipアドレスとポートを指定
$target = "192.0.2.100"
$port = 3389

# TcpClientインスタンス初期化
$client = New-Object System.Net.Sockets.TcpClient
# TcpClient.Connect メソッドで接続
$client.Connect($target,$port)
# ConnectedがTrueかFalseでリモートホストに接続できたか判断
$client.Connected
# TcpClientインスタンス破棄 
$client.Close()

上記コマンドで疎通確認ができます。
実態としては $client.Connect($target,$port) 部分で疎通できなければエラーが発生して接続できない事に気が付きますが、一応Connected でTrueだったら疎通OK、Falseだったら疎通NGと結果を確認しています。

総評

たまにWindowsでTest-NetConnectionがない環境をさわる。 そんなときにどうぞ。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?