papingを使ったTCPポートの疎通確認(Windows・Linux・macOS対応)

ICMPではなくTCPを使って対象ポートへの接続可否を確認できるネットワーク調査ツール
- paping -

papingは、指定したホストのTCPポートに接続できるかを確認できる便利なツールです。一般的なpingとは確認できる内容が異なるため、ネットワークやサーバーのトラブルシューティングにも活用できます。

本記事では、papingとはどのようなツールなのか、pingと何が違うのかを整理したうえで、ダウンロード・インストール方法やpapingコマンドの使い方を解説します。さらに、正常時だけでなく、ポートが閉じている場合や名前解決に失敗した場合など、さまざまなケースで実際にpapingを実行した結果も掲載しています。

この記事を読むことで、pingとpapingを状況に応じて使い分け、ネットワークの疎通状況をより詳しく確認できるようになります。

本記事で紹介するpapingコマンドを実行する際は、自身が管理する環境、または管理者から許可を得た環境でのみ実施してください。

目次

papingとは

papingは、指定したホストのTCPポートに対して接続確認を行うためのコマンドラインツールです。

一般的なpingは、主にICMPを使用して対象ホストとの疎通を確認します。一方、papingではポート番号を指定して接続を試行できるため、「ホストに到達できるか」だけでなく、「特定のポートへの接続が成立するか」を確認できます。

セキュリティ上の観点から、ICMPによる通信を制限している環境も少なくありません。「pingが通らない = 対象ホストへ通信できない」と早合点しないためにも、TCPベースで到達性を確認する手段を持っておく価値は高いと言えます。

主な特長

  • TCPポート単位の接続確認ができる
  • IPv4およびIPv6に対応
  • TCP接続確立時間を測定できる
  • 接続成功数や失敗数などの統計情報を表示する
  • クロスプラットフォーム(Windows、Linux、macOSに対応)
  • ARMアーキテクチャに対応
  • C++で実装されており、軽量かつ高速

特に重要なのが、特定のポートを指定して疎通確認できる点です。ネットワーク機器や接続先ホストの設定によってICMP通信が制限されている環境でも、TCPによるサービスへの接続は可能な場合があります。

また、papingはクロスプラットフォームに対応しており、Windows、Linux、macOS、およびARMアーキテクチャをネイティブにサポートします。単一の実行ファイルで動作し、インストーラーやランタイムを必要としない点は、実行環境を汚さずに済むという意味でも実務的なメリットです。

papingの歴史

オリジナル版papingは、Mike Lovell氏が開発したTCPポート疎通確認ツールです。初期リリース(v1.0.0)が2010年に公開され、2011年にv1.5.5がリリースされました。当初はGoogle Codeで公開していましたが、2016年のGoogle Codeのサービス終了に伴いソースコードはGitHubへ移行しました。現在はメンテナンスを終了しており、アーカイブとして管理されています。

2024年にOliver Kryński氏による暫定的な修正版「Paping-fixed」が公開されましたが、これも現在はアーカイブ扱いとなっています。

こうした経緯を受けて登場したのが、本記事で扱う「Paping-NG」です。オリジナル版papingの思想を継承する後継ツールで、現在のOSやCPUアーキテクチャに対応するよう設計されています。

Paping-NGは一般的に「paping」と呼ばれているため、本記事でも「paping」という表記を使用しています。

一般的なpingとの違い

papingとpingでは、「確認できる範囲」と「使用するプロトコル」が異なります。

比較項目pingpaping
確認対象ホストへの到達性指定したポートへの接続
プロトコルICMPTCP
OSI階層ネットワーク層(L3)トランスポート層(L4)
対象の粒度ホスト単位ホスト+ポート単位
ポート指定不可必須(-p
測定できる時間RTT(往復応答時間)TCP接続確立時間

一般的なpingは、主にICMP Echo Requestを宛先へ送信し、ICMP Echo Replyが返ってくるかを確認します。対象ホストと通信できるかを確認する用途に適しています。一方、papingではTCPを利用して、指定したポートへの通信が成立するかを確認します。例えば、WebサーバーのTCP/443を指定することで、当該ポートへのTCPコネクションが確立できるかを確認します。

papingで確認できるのは、L4レベルで該当ポートが待ち受け状態にあることまでです。そのポート上で動作するアプリケーションやサービスが正常に稼働しているかどうかまでは判断できません。

papingのダウンロード

papingは公式GitHubリポジトリにて、GPL-3.0ライセンスの下で「ビルド済みバイナリ」と「ソースコード」が公開されています。

公式GitHubのReleasesページ:https://github.com/arch3rek/Paping-NG/releases

2026年8月10日時点では、v1.0.3が最新リリースです。同バージョンでは、大量のTCPプローブ実行時に発生し得るバッファオーバーフローが修正され、Windows環境におけるWinsockのディスクリプタ上限の扱いも見直されています。過去のバージョンを利用する特別な理由がなければ、最新版を選択してください。

ダウンロード可能なビルド済みバイナリ

実行環境ファイル名
Windows (x86-64)paping-windows-amd64.exe
Linux (x86-64)paping-linux-amd64
macOS (Intel)paping-macos-amd64
macOS (Apple Silicon)paping-macos-arm64

papingは古くから流通しているツールであるため、出所不明のバイナリがインターネット上に数多く存在します。必ず公式GitHubリポジトリのReleasesページから取得して下さい。

またGitHubのReleasesページでは、上記のバイナリに加えてソースコードも配布しています。CMakeおよびC++20に対応したコンパイラ(GCC / Clang / MSVC)があれば、ソースコードからビルドできます。

なお、本記事ではビルド済みバイナリを前提にインストール手順を解説しています。

papingのインストール

papingのビルド済みバイナリは、各プラットフォーム向けに自己完結型の実行ファイルとして提供されています。単一の実行ファイルで動作し、ランタイムの依存関係もありません。

したがって「インストール」といっても、実体はビルド済みバイナリをPATHの通ったディレクトリに置くだけです。

Linux/macOSの場合

LinuxおよびmacOSでは、ダウンロードしたビルド済みバイナリをpapingへリネームし、実行権限を付与したうえでPATHの通ったディレクトリへ配置します。

ここでは、Linux(AMD64)向けバイナリであるpaping-linux-amd64を例に取り上げます。

macOSの場合も手順は同じです。ファイル名だけ環境に合わせて読み替えてください。

STEP

実行環境に適したビルド済みバイナリをダウンロードする

$ curl -L -O https://github.com/arch3rek/Paping-NG/releases/download/v1.0.3/paping-linux-amd64
  • -L:リダイレクトを追跡する
  • -O:URL末尾のファイル名で保存する

上記コマンドでは、2026年8月10日時点の最新バージョン(1.0.3)を指定しています。

STEP

バイナリファイルを「paping」にリネームする

$ mv paping-linux-amd64 paping
STEP

実行権限を付与する

$ chmod +x paping
STEP

「/usr/local/bin」へ配置する

$ sudo mv paping /usr/local/bin/
STEP

インストール後の確認

# 実行パス
$ command -v paping
/usr/local/bin/paping

# ヘルプ情報
$ paping -h
Paping-NG v1.0.3 - Copyright (c) 2026 Oliver (arch3r.eu)

Usage: paping <host> -p <port> [options]

Options:
  -p, --port N      TCP port to probe (required)
  -c, --count N     stop after N probes (default: run forever)
  -t, --timeout N   connection timeout in ms (default: 1000)
  -h, --help        show this help

ヘルプが表示されれば、インストール完了です。

本記事の検証環境において、以下のLinuxディストリビューションで動作確認済みです。

  • Debian系:Kali Linux 2026.2、Ubuntu 26.04 LTS
  • RHEL系:AlmaLinux 10.2

Windowsの場合

ダウンロードしたpaping-windows-amd64.exepaping.exeへリネームし、PATHの通ったディレクトリへ配置します。

公式GitHubでは、C:\Windows\System32へ配置する方法も案内されていますが、System32はWindowsの重要なシステムディレクトリです。ツール管理のしやすさを考えると、サードパーティ製バイナリ用のディレクトリを作成し、そのディレクトリをPATHへ追加する方法が分かりやすいでしょう。

コマンドが認識されない場合は、次の点を確認してください。

  • paping.exeが指定したディレクトリに存在するか
  • paping.exe.exeなど、拡張子が重複していないか
  • バイナリを配置したディレクトリが環境変数Pathに登録されているか
  • PATHの変更後にコマンドプロンプトやPowerShellを開き直したか

アンインストール

papingのアンインストールは、配置した実行ファイルを削除するだけです。レジストリも設定ファイルも作成しないため、実行ファイルの削除で完結します。

papingの使い方

papingコマンドの基本構文は、次のとおりです。

$ paping <対象ホスト> -p <ポート番号> [オプション]
  • 対象ホスト:ホスト名またはIPアドレス
  • -p:接続先のポート番号(--portでも可)

本記事の検証環境でpapingコマンドを実行した結果は、以下のとおりです。

$ paping 192.168.10.106 -p 80
Paping-NG v1.0.3 - Copyright (c) 2026 Oliver (arch3r.eu)

Connecting to 192.168.10.106 on TCP port 80:

Connected to 192.168.10.106: time=0.98ms protocol=TCP port=80
Connected to 192.168.10.106: time=1.51ms protocol=TCP port=80
Connected to 192.168.10.106: time=0.73ms protocol=TCP port=80
Connected to 192.168.10.106: time=0.78ms protocol=TCP port=80
Connected to 192.168.10.106: time=0.84ms protocol=TCP port=80
Connected to 192.168.10.106: time=0.75ms protocol=TCP port=80
Connected to 192.168.10.106: time=0.76ms protocol=TCP port=80
Connected to 192.168.10.106: time=0.63ms protocol=TCP port=80
^C
Connection statistics:
  Probed = 8, Connected = 8, Failed = 0 (0.00%)
Approximate connection times:
  Minimum = 0.63ms, Maximum = 1.51ms, Average = 0.87ms

この例では、対象ホストのTCP/80に対して接続を試行します。実行中は、各プローブの結果(接続先のIPアドレスやTCP接続確立時間、プロトコル、ポート番号)が1行ずつ表示されます。

プローブ結果のメッセージ
  • TCP接続が成立した場合:Connected
  • TCP接続に失敗した場合:Connection failed
  • 指定された時間内に接続結果を確認できない場合:Connection timed out

-cオプション(試行回数)を指定しない場合、コマンドは自動的に終了しません。終了する場合は、Ctrl+Cを押してください。終了後には、試行回数、成功回数、失敗回数、最小・最大・平均のTCP接続確立時間も確認できます。

【参考】オプション一覧

オプション概要コマンド例省略時のデフォルト値
-p, --port接続先のTCPポートpaping <対象ホスト> -p <ポート番号>※必須
-c, --countプローブの実行回数(試行回数)paping <対象ホスト> -p <ポート番号> -c <回数>無制限(Ctrl+Cで停止するまで継続実行)
-t, --timeoutTCP接続のタイムアウト時間(単位:ミリ秒)paping <対象ホスト> -p <ポート番号> -t <ミリ秒>1,000ミリ秒(1秒)

papingを実行してみた

ここからは、VirtualBox上に構築した仮想環境を使用して、パターンごとにpapingの挙動を確認していきます。

使用する検証環境
  • 送信元ホスト
  • 宛先ホスト
    • Ubuntu(192.168.10.106)、Debian(192.168.30.107)など

いずれもVirtualBox上で稼働している仮想マシンです。

学習や検証を目的とする場合、第三者の環境ではなく、必ずご自身が管理している環境で実施してください。

ポートに接続できる(正常系)

Webサーバーが稼働しているホストのTCP/80に対して、papingを実行します。

$ paping 192.168.10.106 -p 80 -c 3
Paping-NG v1.0.3 - Copyright (c) 2026 Oliver (arch3r.eu)

Connecting to 192.168.10.106 on TCP port 80:

Connected to 192.168.10.106: time=0.47ms protocol=TCP port=80
Connected to 192.168.10.106: time=0.76ms protocol=TCP port=80
Connected to 192.168.10.106: time=0.73ms protocol=TCP port=80

Connection statistics:
  Probed = 3, Connected = 3, Failed = 0 (0.00%)
Approximate connection times:
  Minimum = 0.47ms, Maximum = 0.76ms, Average = 0.65ms

Probed = 3, Connected = 3, Failed = 0 (0.00%)となっているため、3回のTCP接続がすべて成功したことが確認できます。

ただし、Webアプリケーションなどのサービスが正常に稼働しているかまでは確認できません。papingが判定するのは、あくまで指定したTCPポートへ接続できるかどうかです。

ポートが閉じている(異常系)

対象ホストで使用していないTCPポート(例.TCP/23)に対して、papingを実行します。

$ paping 192.168.10.106 -p 23 -c 3
Paping-NG v1.0.3 - Copyright (c) 2026 Oliver (arch3r.eu)

Connecting to 192.168.10.106 on TCP port 23:

Connection failed
Connection failed
Connection failed

Connection statistics:
  Probed = 3, Connected = 0, Failed = 3 (100.00%)
Approximate connection times:
  Minimum = 0.00ms, Maximum = 0.00ms, Average = 0.00ms

TCP接続が成立しなかったため、Connection failedとなりました。詳細な理由は出力されないため、この結果から「対象ホストが停止している」「ファイアウォールで拒否された」「サービスが待ち受けていない」といった原因まで特定することはできません。

宛先ホストに到達できない(異常系)

次に、宛先ホストに到達できないケースを確認します。

例えば
  • 宛先ホストが存在しない、起動していない
  • ルーティングの問題によって通信経路が確立されていない
  • 通信経路上のルーターが停止している など
$ paping 192.168.10.100 -p 80 -c 3
Paping-NG v1.0.3 - Copyright (c) 2026 Oliver (arch3r.eu)

Connecting to 192.168.10.100 on TCP port 80:

Connection timed out
Connection timed out
Connection timed out

Connection statistics:
  Probed = 3, Connected = 0, Failed = 3 (100.00%)
Approximate connection times:
  Minimum = 0.00ms, Maximum = 0.00ms, Average = 0.00ms

-tまたは--timeoutを指定しない場合、papingはデフォルトで1000ミリ秒(1秒)接続を待ちます。上記の場合、この時間内に接続の成功または失敗が確定しなかったため、papingはタイムアウトと判断し、Connection timed outと表示されました。

$ paping 192.168.10.100 -p 80 -c 3 -t 5000
Paping-NG v1.0.3 - Copyright (c) 2026 Oliver (arch3r.eu)

Connecting to 192.168.10.100 on TCP port 80:

Connection failed
Connection failed
Connection failed

Connection statistics:
  Probed = 3, Connected = 0, Failed = 3 (100.00%)
Approximate connection times:
  Minimum = 0.00ms, Maximum = 0.00ms, Average = 0.00ms

一方、-t 5000を指定すると、接続成否を最大5000ミリ秒(5秒)待ちます。上記の実行結果では、その間に接続エラーの応答が届き、接続失敗が確定したため、Connection failedと表示されました。

  • Connection timed out:指定したタイムアウト時間内にTCP接続の成否が確定しなかった
  • Connection failed:タイムアウトになる前にTCP接続の失敗が確定した

名前解決ができない(異常系)

DNSに登録されていないホスト名を指定します。

$ paping server01.labo.test -p 80
Paping-NG v1.0.3 - Copyright (c) 2026 Oliver (arch3r.eu)

Cannot resolve host: server01.labo.test

papingを実行すると、はじめに指定されたホスト名の名前解決が行われます。上記では、名前解決に失敗したため、Cannot resolve hostを出力して処理を終了しました。

経路上のルーターがICMPを遮断(正常系)

宛先ホストへのTCP通信は許可されているものの、通信経路上でICMPが遮断されているケースを確認します。

前提条件

中継ルーターにICMPパケットを破棄する設定を適用済み。

まず、通常のpingコマンドを実行します。

ping実行結果

$ ping -c 3 192.168.30.107
PING 192.168.30.107 (192.168.30.107) 56(84) bytes of data.

--- 192.168.30.107 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2038ms

pingはICMPを利用するため、ICMPが遮断されている環境では応答を得られません。100% packet loss(パケットロス100%)となり、この結果だけを見ると宛先ホストがダウンしているように見えます。

しかし、同じホストに対してpapingを実行すると結果は変わります。TCP接続が許可されていれば、ICMPに応答しない環境であっても次のように接続を確認できます。

paping実行結果

$ paping 192.168.30.107 -p 22 -c 3
Paping-NG v1.0.3 - Copyright (c) 2026 Oliver (arch3r.eu)

Connecting to 192.168.30.107 on TCP port 22:

Connected to 192.168.30.107: time=1.50ms protocol=TCP port=22
Connected to 192.168.30.107: time=1.85ms protocol=TCP port=22
Connected to 192.168.30.107: time=1.94ms protocol=TCP port=22

Connection statistics:
  Probed = 3, Connected = 3, Failed = 0 (0.00%)
Approximate connection times:
  Minimum = 1.50ms, Maximum = 1.94ms, Average = 1.76ms

これがpapingを使う最大の理由です。pingで応答がない場合でも、必ずしも対象ホストが停止しているとは限りません。papingを利用すれば、TCPポート単位での疎通確認が可能です。

デフォラボ

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
目次