🌐 This page is also available in English. Read in English →

Widemap

Where Is Data Exiting? Map All Paths. — 家庭・SOHOのLAN内デバイスが「何と通信しているか」をリアルタイムに可視化。自動脅威検出とSlackアラート対応。追加ハードウェア不要。

License: AGPL-3.0 Node.js 18+

🔒 家庭・SOHOのセキュリティ対策として

現代の家庭・SOHOネットワークには、スマートTV・IPカメラ・NAS・Wi-Fiスピーカー・IoT機器など20〜40台以上が接続されています。これらの多くはファームウェア更新が不定期で、どこに通信しているか把握されていません。一度侵害されると、C2サーバーへのデータ流出やボットネット加担が静かに進みます。

パッシブ・ゼロインパクト

ルーターのNATセッションテーブルをSSHで読み取るだけ。通信の中継・傍受なし、スループット低下なし、レイテンシ追加なし。

デバイス単位の可視性

どのIoT機器・PCがどこに通信しているかを把握。OUI・mDNS・SSDP・NetBIOS・Appleモデル辞書でデバイスを自動識別。

自動脅威検出

Feodo Tracker・ThreatFox・URLhaus・Spamhaus DROPとリアルタイムに全接続を照合。C2サーバー・ボットネット・マルウェア配布元を検出。

即時アラート

LAN内の任意のデバイスが既知の脅威に接続した瞬間にSlack DM通知。宛先ごとのクールダウン設定で通知スパムを防止。

ハードウェア変更不要

既存のYamaha RTXルーターと共存。Mac・PC・Raspberry Piにインストールするだけ。通信経路の変更なし。

完全ローカル・プライバシー重視

全処理はローカルで完結。通信データをクラウドに送信しません。エンリッチメント(GeoIP・RDAP・逆引DNS)は接続先IPのみ使用。

機能

リアルタイム世界地図

全ての外向き接続をインタラクティブな地図上にプロット。設置場所から接続先へのアニメーションアーク表示。

Yamaha RTX 連携

Yamaha RTXルーターにSSH接続し、NATセッションテーブルを60秒ごとに取得。[INSPECT] syslog で短命 TCP セッションを補完。RTX1200〜RTX1300、RTX810/830対応。

ASUS WiFi AP 対応

L2クライアント情報を取得 — WiFi帯域、信号強度、トラフィック量、AiMeshトポロジー。

スマートデバイス識別

OUI、mDNS/Bonjour、SSDP、NetBIOS、Appleモデル辞書(200機種以上、「iPhone 15 Pro」レベルまで特定)。

📡 DNS ベース宛先名解決

ローカルの dnsmasq クエリログを監視し、デバイスごとの DNS 解決結果(例: data.meethue.com)を宛先名に反映。PTR 逆引きより優先して表示。

IPエンリッチメント

全接続先に対して逆引きDNS、RDAP組織名検索、GeoIP(都市レベルの緯度経度)を自動付与。

接続履歴保存(SQLite)

接続履歴をSQLite(WALモード、クラッシュセーフ)で永続保存。保持期間は最大2年まで設定可能。時系列チャート・接続先別統計で分析。

🛡️ 脅威検出

Feodo Tracker、ThreatFox、URLhaus、Spamhaus DROP と全接続を自動突合。3段階の信頼度で推奨アクションを表示。

🔔 Slack通知

脅威検出時に Slack DM で即時通知。宛先ごとのクールダウン設定でスパムを防止。UI言語に連動して日本語/英語で送信。

📋 通信ログ

ソート・検索可能な全セッション一覧。カラム別フィルター(テキスト、正規表現、日付範囲)。脅威行クリックで詳細ポップアップ。

デモ

UI言語: 英語 / 日本語 切り替え可能

収集したNATセッション情報をもとに、ネットワークグラフ・世界地図上の通信アーク・時系列トレンドチャートをリアルタイムに表示します。

右側のサイドバーにはLAN内の全デバイスが一覧表示され、IPアドレスやMACアドレスに加えてホスト名・ベンダー名・機種名などを自動収集して表示します。デバイスを選択すると、そのデバイスの通信先だけにフィルタされ、地図やグラフに反映されます。

スクリーンショット

Widemap 世界地図ビュー — LANデバイスからグローバル接続先への通信を表示 Widemap グラフビュー — ネットワークトポロジー表示 Widemap 統計ビュー — 接続履歴チャート

アーキテクチャ

┌─────────────────┐  SSH(NAT)   ┌──────────────────────┐
│  Yamaha RTX     │◄───────────►│                      │
│  [INSPECT] log  │  syslog/UDP │   Widemap Server     │  WebSocket
│  [DHCPD] log    │────────────►│   (Node.js)          │◄──────────► ブラウザ
└─────────────────┘             │                      │
┌─────────────────┐  HTTP       │  ポーラー:            │
│  ASUS WiFi AP   │◄───────────►│  • yamaha (SSH)      │
│  (クライアント)   │             │  • asus (HTTP)       │
└─────────────────┘             │  • inspect-syslog    │
┌─────────────────┐  tail -F    │  • dhcpd-syslog      │
│  dnsmasq        │────────────►│  • dnsmasq-log       │
│  クエリログ      │             └──────────┬───────────┘
└─────────────────┘                        │
                       ┌───────────────────┼───────────────┐
                       │                   │               │
                 ┌─────┴──────┐  ┌─────────┴───┐  ┌───────┴───┐
                 │エンリッチ   │  │ 脅威インテル  │  │  SQLite   │
                 │ • dnsmasq  │  │ • Feodo      │  │  履歴     │
                 │ • 逆引DNS  │  │ • ThreatFox  │  │  (WAL)    │
                 │ • RDAP     │  │ • URLhaus    │  └───────────┘
                 │ • GeoIP    │  │ • DROP       │
                 │ • OUI      │  └─────────────┘
                 │ • mDNS     │
                 └────────────┘

クイックスタート

Step 1 — 事前準備

Mac / PC / Raspberry Pi に Node.js 18以上をインストール nodejs.org →
Yamaha RTX ルーターの SSH を有効化 設定ガイド →
(任意)ASUS WiFi AP の Web 管理画面を有効化 設定ガイド →

Step 2 — インストールと起動

git clone https://github.com/yo1t/widemap.git
cd widemap
npm install
npm start

Step 3 — ブラウザを開いて管理トークンを入力

初回起動時にコンソールにトークンが表示されます:

══════════════════════════════════════
  Widemap admin token (initial):
  a1b2c3d4e5f6...
  → ブラウザ初回アクセス時に入力
══════════════════════════════════════

http://localhost:3000 を開いてトークンを入力してください。

Step 4 — 設定パネル(⚙)でルーター情報を入力

Yamaha RTX の IP ルーターの LAN 側 IP(例: 192.168.1.1
SSH ユーザー名 / パスワード Yamaha 設定ガイドで設定したもの
NAT ディスクリプタ番号 ルーターで show nat descriptor を実行 — 通常は 100
ASUS AP の IP / パスワード AP の LAN 側 IP と管理者パスワード(ASUS 設定ガイド

数秒後にデバイスと接続先が地図に表示されはじめます。

対応ハードウェア

Yamaha RTX(L3/L4)

RTX1200, RTX1210, RTX1220, RTX1300, RTX810, RTX830, NVR500, NVR510, NVR700W — SSH+NATディスクリプタ対応の全モデル。

ASUS WiFi AP(L2)

RT-AXシリーズ、RT-ACシリーズ、ZenWiFi(AiMesh) — 標準Web管理画面を持つ全モデル(APモード/AiMesh使用)。

Issues & フィードバック

バグ報告や機能リクエストはGitHubのIssueからお願いします。

全てのIssueを見る 新しいIssue