疎通確認
〜 UDP と TCP の通信をチェック 〜
2025-10-30 作成 福島
TOP > tips > conncheck
[ TIPS | TOYS | OTAKU | LINK | MOVIE | CGI | AvTitle | ConfuTerm | HIST | AnSt | Asob | Shell ]

0. 前置き

インターネット (TCP/IP) おけるネットワークの疎通確認として ping や telnet というツールをよく使用しますが、UDP の確認はあまりしません。
(ping と telnet が通る場合は UDP も通ることがほとんどのため)
しかし、各ノード (計算機) の計算能力が低かったり、低遅延や軽量データを目的とする場合には UDP がよく使用され、
最近のネットワークシステムはファイアウォールが組み込まれることが多いので UDP の確認も行う必要があります。
(TCP と UDP では設定が異なるため)

本稿は Linux サーバに対する UDP の疎通確認方法について記述します。(ついでに TCP も)

動作環境
項目内容IP アドレス備考
サーバ OSAlmaLinux release 10.0 (Purple Lion)192.168.11.20本稿記述時の最新版
サーバ&クライアントソフトsocat 1.7.4.1dnf でインストールできる最新版
現時点で本家の最新版は 1.7.4.4
本稿はポート番号に 10013 を使用する
クライアント基本ソフトWindows11 Pro 24H2192.168.11.40本稿記述時の最新版
クライアントのポート番号は動的とする
(動的: 固定されない値)
Windows 用クライアントソフトPacket Sender 8.9.1


1. Linux で疎通確認 [ Linux ⇔ Linux ]
1-1. socat をインストールする。
$ su
# dnf install -y socat
# socat -V | head | fold
socat by Gerhard Rieger and contributors - see www.dest-unreach.org
socat version 1.7.4.1 on Jun  4 2025 00:00:00
   running on Linux version #1 SMP PREEMPT_DYNAMIC Tue Oct 21 05:54:51 EDT 2025,
 release 6.12.0-55.40.1.el10_0.x86_64, machine x86_64
features:
  #define WITH_STDIO 1
  #define WITH_FDNUM 1
  #define WITH_FILE 1
  #define WITH_CREAT 1
  #define WITH_GOPEN 1
  #define WITH_TERMIOS 1

# exit
$ which socat
/usr/bin/socat
1-2. UDP サーバの起動と確認
1-2-1. daytime サーバの代わりを起動する。(UDP、本来は ポート 13)
$ socat -v UDP4-LISTEN:10013,fork SYSTEM:'date +UDP\:\\ %Y-%m-%d\\ %H\:%M\:%S' &
[1] 54321
PID: 毎回異なる数値 (下記 1-2-3 で使用する)
1-2-2. 接続と接続不能を確認する。(UDP / TCP)
$ echo | socat - UDP4:127.0.0.1:10013
> 2025/10/27 03:20:38.359070  length=1 from=0 to=0

< 2025/10/27 03:20:38.361209  length=25 from=0 to=24  
UDP: 2025-10-27 03:20:38
UDP: 2025-10-27 03:20:38  ← サーバからの応答

$ echo | socat - TCP4:127.0.0.1:10013
2025/10/27 03:32:47 socat[45598] E read(5, 0x55d6168ad000, 8192): Connection refused
起動しているのは UDP サーバだけなので、TCP で接続できたら何かがおかしい。
1-2-3. daytime サーバの代わりを停止する。
$ kill 54321
[1]+  Exit 143    socat -v UDP4-LISTEN:10013,fork SYSTEM:'date +UDP\:\\ %Y-%m-%d\\ %H\:%M\:%S'
1-3. TCP サーバの起動と確認
1-3-1. Web サーバを起動する。(TCP)
$ socat -v TCP4-LISTEN:10013,fork SYSTEM:'date +TCP\:\\ %Y-%m-%d\\ %H\:%M\:%S' &
[1] 65432
PID: 毎回異なる数値 (下記 1-3-3 で使用する)
1-3-2. 接続と接続不能を確認する。(TCP / UDP)
$ echo | socat - TCP4:127.0.0.1:10013
> 2025/10/27 04:29:40.131868  length=1 from=0 to=0

< 2025/10/27 04:29:40.133453  length=25 from=0 to=24
TCP: 2025-10-27 04:29:40
TCP: 2025-10-27 04:29:40  ← サーバからの応答  

$ echo | socat - UDP4:127.0.0.1:10013
2025/10/27 04:34:07 socat[45528] E connect(5, AF=2 127.0.0.1:10013, 16): Connection refused
起動しているのは TCP サーバだけなので、UDP で接続できたら何かがおかしい。
1-3-3. Web サーバを停止する。
$ kill 65432
[1]+  Exit 143    socat -v TCP4-LISTEN:10013,fork SYSTEM:'date +TCP\:\\ %Y-%m-%d\\ %H\:%M\:%S'


2. Windows で疎通確認 [ Windows ⇔ Linux ]

2-1. PacketSender をインストールする。
Windows で作業する

2-1-1. PacketSender のインストーラをダウンロードする。
ここから Installer for Windows をクリックし PacketSender をダウンロードする。
(今回は PacketSender_x64_v8.9.1.exe だった)
2-1-2. インストーラを実行する。
PacketSender_x64_v8.9.1.exe を実行する。

UAC (User Account Control) の確認。
ボタンをクリックする。
 ⇓
 インストールフォルダの選択。
ボタンをクリックする。
 ⇓
 スタートメニューへの登録。(Windows10 用)
 Windows11 のスタートにはピン留めされない。
ボタンをクリックする。
 ⇓
 デスクトップにショートカットを作成する選択。
ボタンをクリックする。
 ⇓
 インストール条件の確認。
ボタンをクリックする。
 ⇓
 待つ。
 ⇓
 インストール完了の確認。
ボタンをクリックする。
 ⇓
 初回起動時の画面。
 メッセージの言語を選択する。日本語は存在しない。
 • English を選択して ボタンをクリックする。
 ⇓
 週次の更新確認の選択。
ボタンをクリックする。
 ⇓
 インストールと初期設定の完了。
2-2. Linux でサーバを用意する。
Linux で作業する
Well known (システムポート) を使わないので、通常ユーザで起動可能。

$ socat -v UDP4-LISTEN:10013,fork SYSTEM:'date +UDP\:\\ %Y-%m-%d\\ %H\:%M\:%S' &
[1] 76543
PID: 毎回異なる数値 (下記 2-4 で使用する)

$ socat -v TCP4-LISTEN:10013,fork SYSTEM:'date +TCP\:\\ %Y-%m-%d\\ %H\:%M\:%S' &
[1] 87654
PID: 毎回異なる数値 (下記 2-4 で使用する)
2-3. PacketSender で疎通確認する。
Windows で作業する

2-3-1. UDP を確認する。
下記条件を記入し ボタンをクリックする。
Name(空欄)
ASCII(空欄)
HEX(空欄)
Address192.168.11.20
Port10013
Resend Delay(空欄)
(Method)

ログ (一番下のペイン) で以下の表示を確認する。
(あまり重要視しない箇所は背景を暗くした)
Time     ^From IPFrom Port To Address To PortMethodErrorASCIIHex
2025-10-29 23:39:13.313192.168.11.2010013You53768UDPUDP: 2025-10-29 23:39:14\n55 44...
2025-10-29 23:39:13.302You53768192.168.11.2010013UDP
2-3-2. TCP を確認する。
下記条件を記入し ボタンをクリックする。
Name(空欄)
ASCII(空欄)
HEX(空欄)
Address192.168.11.20
Port10013
Resend Delay(空欄)
(Method)

ログ (一番下のペイン) で以下の表示を確認する。
(あまり重要視しない箇所は背景を暗くした)
Time     ^From IPFrom Port To Address To PortMethodErrorASCIIHex
2025-10-29 23:40:48.289192.168.11.2010013You48599TCPTCP: 2025-10-29 23:40:49\n54 43...
2-4. Linux でサーバを停止する。
Linux で作業する

$ kill 76543
[1]+  Exit 143    socat -v UDP4-LISTEN:10013,fork SYSTEM:'date +UDP\:\\ %Y-%m-%d\\ %H\:%M\:%S'

$ kill 87654
[1]+  Exit 143    socat -v TCP4-LISTEN:10013,fork SYSTEM:'date +TCP\:\\ %Y-%m-%d\\ %H\:%M\:%S'