パケット解析レポート — CTI/CRM/CCX/DB 間通信
キャプチャファイル: cc-20260409-webapp.pcapng(CRM/Tomcat取得)・cc-20260409-client.pcapng(CTIクライアント取得)/ 解析日: 2026-04-09
解析サマリ:
CTIクライアント → CRM REST API (HTTP :80)
CTIクライアント → CCX HTTPS :8445 / XMPP :5222
CRM ↔ CCX XMPP :12028
CRM ↔ DB SQL Server :1433
1. システム構成図
2. 検出された接続一覧
| 送信元 | 宛先 | ポート | プロトコル | 目的・内容 | 確認ファイル |
|---|---|---|---|---|---|
CTIクライアント192.168.120.101 |
CRM192.168.120.41 |
:80 | HTTP/1.1 |
CRM REST API全般。画面ロード、ログイン、キュー統計ポーリング、着信時の顧客情報取得、履歴保存。 主要エンドポイント: /crm/api/dnis, /crm/api/caller, /crm/api/history, /qsc/rest/v1/queuestatistics
|
webapp・client 両方 |
CTIクライアント192.168.120.101 |
CCX192.168.120.21 |
:8445 | TLSv1.2 (HTTPS) |
Finesse REST API。ログイン認証・エージェント状態変更・通話操作命令. SNI: ccx01.mod.cisco.com。Client Hello〜Application Data を確認。
|
client |
CTIクライアント192.168.120.101 |
CCX192.168.120.21 |
:5222 | XMPP/XML |
Finesse イベント購読。SASL認証→BIND→Roster取得→PRESENCE→pubsub.ccx01.mod.cisco.com からの MESSAGE 受信(エージェント状態・キュー通知)。JID: myamagat@ccx01.mod.cisco.com/com.cisco.cticlient
|
client |
CRM192.168.120.41 |
CCX192.168.120.21 |
:12028 | TCP/XMPP (Openfire) |
CRM サーバーサイドから CCX Openfire への接続。約3秒周期で小パケット(18 byte 送→ 8+106 byte 応答)を繰り返す heartbeat / ping 通信。 | webapp |
DB192.168.120.42 |
CRM192.168.120.41 |
:1433 | SQL Server TDS | CRM ↔ DB 間のコネクションプール(10本前後を同時維持)。接続確立後は TCP Keep-Alive(約30秒周期)でプール保持。CRM API 呼び出し時に実クエリが流れる構成。 | webapp |
3. フェーズ別シーケンス図
キャプチャから読み取れる代表的なシーケンスです。TLS 暗号化区間の詳細(Finesse REST の具体的なリクエスト内容)は平文では確認できません。
| 秒 (相対) | CTIクライアント 101 |
CRM / Tomcat 41 |
CCX (Finesse) 21 |
DB (SQL Server) 42 |
|---|---|---|---|---|
| ── Phase A: 初期接続・認証 ── | ||||
| t≈0 (client: t≈27) |
→ TCP SYN → :8445 TLSv1.2 Client Hello SNI=ccx01.mod.cisco.com |
| | ← TLS HandShake Server Hello / Cert / Change Cipher Spec |
| |
| → TLS Application Data Finesse REST ログイン |
| | ← TLS Application Data (ログイン応答) |
| | |
| t≈27.56 | → TCP SYN → :5222 XMPP STREAM open |
| | ← XMPP STREAM (server features) | | |
| t≈27.61 | → XMPP AUTH (SASL) | | | | | |
| t≈27.62 | | | ← XMPP SUCCESS | | | |
| t≈27.62 | → XMPP IQ(set) BIND /com.cisco.cticlient |
| | ← IQ(result) BIND | | |
| t≈27.63 | → IQ(get) jabber:iq:roster | | | ← IQ(result) roster | | |
| t≈27.63 | → XMPP PRESENCE (available) | | | ← PRESENCE (myamagat / admin / finesse) | | |
| t≈27.95 (client: t≈27.95) |
→ GET /crm/api/dnis?csqName=TOKYO HTTP :80 |
← HTTP 200 (DNIS マッピング応答) | | | | |
| ── Phase B: 待機中 (定期ポーリング) ── | ||||
| t≈0 (webapp) |
| | → TCP :12028 (ping/heartbeat) 18 byte, 約3秒周期 |
← 8+106 byte 応答 (heartbeat ACK) | | |
| t≈5〜30 (webapp) |
| | | | ← TCP Keep-Alive :1433 (コネクションプール維持, 約30秒周期) |
|
| t≈28〜 (client: 3秒周期) |
→ POST /qsc/rest/v1/queuestatistics HTTP :80 (約3秒毎) |
← HTTP 200 (キュー統計) | | | | |
| t≈32.6 t≈37.3 |
| | ← XMPP IQ(get) version (Openfire → Client ping) |
| | |
| t≈37.3 (client) |
| | ← XMPP MESSAGE pubsub (キュー/エージェント状態通知) |
| | |
| ── Phase C: 着信 ── | ||||
| t≈37.3〜 (client) |
| | ← XMPP MESSAGE × 3 pubsub.ccx01.mod.cisco.com (着信イベント通知) |
| | |
| t≈37.63 (client) |
→ GET /crm/api/incomingNumber ?telNumber=8991901 |
← 200 (内線マッピング情報) | | | | |
| t≈37.69 | → GET /crm/api/additional?dnisId=33 | ← 200 → DB:1433 SELECT (追加情報) |
| | |
| t≈37.71 | → GET /crm/api/caller ?telNumber=009032130774&anonymous=false |
← 200 → DB:1433 SELECT (顧客情報) |
| | |
| ── Phase D: 応対中 ── | ||||
| 応対中 | → TLS App Data → :8445 Finesse REST (保留/転送など) |
| | ← TLS App Data (状態変更ACK) |
| |
| 応対中 | | | ← XMPP MESSAGE pubsub (通話状態変化通知) |
| | |
| t≈41.1〜 (client) |
| | ← XMPP MESSAGE × 複数 (AgentState: TALKING 等) |
| | |
| ── Phase E: ラップアップ・履歴保存 ── | ||||
| t≈41.29 (client) |
→ GET /crm/api/wrapup?dnisId=33 | ← 200 (ラップアップコード一覧) | | | | |
| t≈41.45 | → GET /crm/api/caller ... → GET /crm/api/wrapup ... → GET /crm/api/history?callerId=1&dnisId=33 |
← 200 (顧客情報・過去履歴) → DB:1433 SELECT |
| | |
| t≈52.8 (client) |
→ POST /crm/api/history 応対メモ・コード登録 |
← 200 → DB:1433 INSERT/UPDATE |
| | |
| ── Phase F: CRM 画面再ロード(ログイン含む) ── | ||||
| t≈91.7 (client) |
→ GET /crm/ → POST /crm/ ログイン → GET /crm/statics?first=true |
← 200(ログイン画面 / 静的リソース) | | | | |
| t≈100.6〜 (client) |
→ GET /crm/statics?first=true&dnisId=33 全 JS/CSS リソース取得 |
← 200 (statics ページ) | | | | |
4. ポート・プロトコルまとめ
| ポート | プロトコル | 方向 | 内容 | 備考 |
|---|---|---|---|---|
| :80 | HTTP/1.1 | CTI → CRM | CRM REST API (平文) | 本番では HTTPS 推奨 |
| :8445 | TLSv1.2 | CTI → CCX | Finesse REST API (HTTPS) | SNI=ccx01.mod.cisco.com |
| :5222 | XMPP/XML | CTI ↔ CCX | Finesse イベント購読 (平文) | Openfire 標準ポート; 本番では STARTTLS/5223 推奨 |
| :12028 | TCP/XMPP | CRM ↔ CCX | CRM サーバー内部の Openfire 接続 (heartbeat) | Openfire 非標準ポート; enableInsecureOpenfirePort 相当 |
| :1433 | SQL Server TDS | CRM ↔ DB | 顧客データ読み書き (コネクションプール ~10本) | DB は CRM からのみアクセス; CTI からの直接接続なし |
| :123 (UDP) | NTP | CRM → 192.168.100.51 | 時刻同期 | CRM から NTP サーバーへのポーリング |
5. 観察されたエンドポイント一覧
| エンドポイント | メソッド | 役割 |
|---|---|---|
GET /crm/ | GET | CRM ログイン画面の表示 |
POST /crm/ | POST | CRM ログイン処理 |
GET /crm/statics | GET | ログイン後メイン画面 (first=true / dnisId 指定) |
GET /crm/api/dnis | GET | CSQ名 → DNIS マッピング取得 (csqName=TOKYO) |
POST /qsc/rest/v1/queuestatistics | POST | キュー統計取得(約3秒周期ポーリング) |
GET /crm/api/incomingNumber | GET | 着信番号 → 内線マッピング (telNumber=8991901) |
GET /crm/api/caller | GET | 顧客情報取得 (telNumber=009032130774) |
GET /crm/api/additional | GET | DNIS 付加情報取得 (dnisId=33) |
GET /crm/api/wrapup | GET | ラップアップコード一覧取得 |
GET /crm/api/history | GET | 顧客応対履歴の取得 |
POST /crm/api/history | POST | 応対メモ・コードの保存(通話終了後) |
6. 気になる点・確認推奨事項
セキュリティ観点の注意点(キャプチャから確認)
- CRM API が HTTP (平文) :80 — CTIクライアント ↔ CRM 間はすべて暗号化なし。顧客の電話番号・氏名情報が平文でネットワーク上を流れている可能性あり。HTTPS 化を検討。
- XMPP :5222 が平文 — CTIクライアント → CCX の XMPP 接続が TLS なし(STARTTLS 未使用)。エージェント状態・着信イベントが平文で見える。OWN STARTTLS または :5223 (SSL) への切替を推奨。
- XMPP :12028 (Openfire 非 TLS) — CRM サーバー → CCX 側も非 TLS ポートを使用。
enableInsecureOpenfirePort true相当が有効な状態と推測。内部セグメントのみであれば許容範囲だが、セグメント分離の確認が必要。
その他の観察事項
- DB (192.168.120.42) は CRM からのみ接続されており、CTIクライアントからの直接 DB アクセスはなし(適切な分離)。
- コネクションプールは 10 本前後を常時維持。TCP Keep-Alive は約30秒周期で正常に動作。
- CRM → CCX :12028 の heartbeat は 3秒周期で安定しており、切断は観察されなかった。
- キャプチャ区間(約160〜230秒)の中で着信イベントが 1 件観察可能(
telNumber=8991901, 顧客番号009032130774)。 - CCX からの
pubsubMESSAGE は着信トリガーの前後で密度が上がるパターンを確認(約3〜4秒間隔から連続送信へ)。
本レポートは tshark (Wireshark) による自動解析をもとに作成。TLS 暗号化区間(Finesse REST :8445)の詳細内容は復号していません。