网络连接实时可视化利器TapMap

简介

什么是 TapMap ?

TapMap 是一个开源的实时网络连接可视化工具,它通过读取本机网络套接字数据,结合 IP 地理定位,在交互式世界地图上动态展示你的计算机正在与全球哪些地方建立连接。它帮助你发现那些平时完全看不见的网络活动——哪些服务在联网、连到了哪里、哪些是新出现的。

主要特点

  • 实时世界地图可视化:基于 DashPlotly 构建的交互式地图,连接点动态展示在全球地图上,支持悬停查看和点击获取详细信息
  • 30 天活动洞察:自动构建滚动 30 天历史记录,识别新出现的应用、ASN 提供商、国家和端口,区分常规连接和异常活动
  • 每日活动报告:生成应用连接模式分析(一次性、偶尔、重复、稳定)、提供商集中度、国家活动时间线等综合报告
  • 多维度展示:不仅显示互联网连接,还展示内网(LAN/LOCAL)服务和本地开放端口(TCP LISTEN/UDP bound
  • 键盘快捷操作:支持 D(每日报告)、I(洞察面板)、U(未映射服务)、L(内网服务)、O(开放端口)等快捷键
  • 隐私安全:所有数据本地处理,不发送任何连接数据到外部服务,无需注册或账户
  • 开源免费:基于 MIT 协议开源,可免费使用和修改

应用场景

  • 个人网络透明度:了解自己电脑上哪些应用在联网、连到了哪里,发现意想不到的后台连接
  • 安全异常检测:当有新应用、新国家或新端口出现时及时察觉,可能意味着配置错误、后台服务或潜在的恶意软件
  • 网络行为分析:通过 30 天历史数据洞察网络活动模式,区分日常连接和异常行为
  • 开发测试环境:开发人员可以快速了解应用的网络行为,验证网络请求的目标地址是否符合预期

TapMap 是一个帮助你看清电脑网络连接全貌的轻量级工具,让不可见的网络活动变得一目了然。

安装

在群晖上以 Docker 方式安装。

TapMap 本身支持主流操作系统平台,

Docker 版需要读取宿主机网络栈和进程信息,必须以 host 网络模式和 pid 模式运行。

准备工作

使用 TapMap 需要准备 MaxMind GeoLite2 地理定位数据库文件:

  1. 访问 MaxMind 官网 免费注册账号

  1. 下载 GeoLite2-City.mmdbGeoLite2-ASN.mmdb 两个文件
  2. 将这两个文件放到数据卷映射目录中

如果这一步没做,打开首界面会提示 Missing GeoIP databases

docker cli 安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 新建文件夹 tapmap 和 子目录
mkdir -p /volume1/docker/tapmap/data

# 进入 tapmap 目录
cd /volume1/docker/tapmap

# 运行容器
docker run -d \
--network host \
--pid host \
--name tapmap \
-v $(pwd)/data:/data \
-e TAPMAP_IN_DOCKER=1 \
-e TAPMAP_PORT="8060" \
olalie/tapmap:latest

文件夹 装载路径 说明
docker/tapmap/data /data 存放 GeoIP 数据库和活动数据

端口

TapMap 使用 host 网络模式,直接绑定到宿主机网络,端口映射独立设置。

参数
默认端口 8050
可通过环境变量修改 TAPMAP_PORT

环境

可变
TAPMAP_IN_DOCKER 1
TAPMAP_DATA_DIR /data
TAPMAP_PORT 8050

环境变量说明

  • TAPMAP_IN_DOCKER 启用 Docker 运行模式
  • TAPMAP_DATA_DIR 指定数据目录路径,默认为 /data
  • TAPMAP_PORT 指定服务端口,默认为 8050

docker-compose 安装

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
version: '3.8'

services:
tapmap:
image: olalie/tapmap:latest
container_name: tapmap
restart: unless-stopped
network_mode: host # 必须:使用宿主机网络栈
pid: host # 必须:读取宿主机进程信息
volumes:
- ./data:/data # 存放 GeoIP 数据库和活动数据
environment:
- TAPMAP_IN_DOCKER=1 # 启用 Docker 模式
- TAPMAP_DATA_DIR=/data # 数据目录
- TAPMAP_PORT=8060 # 可选:修改默认端口
# - TAPMAP_HOST=0.0.0.0 # 可选:绑定地址

注意network_mode: host 是必须的,因为 TapMap 需要读取宿主机真实的网络套接字数据。这也意味着端口映射直接在宿主机上生效,无需 ports 配置。

然后通过 SSH 登录到您的群晖,执行下面的命令:

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 tapmap 和 子目录
mkdir -p /volume1/docker/tapmap/data

# 进入 tapmap 目录
cd /volume1/docker/tapmap

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

要启用进程名可见性(Linux 上),可以添加以下配置:

1
2
3
4
cap_add:
- SYS_PTRACE
security_opt:
- apparmor=unconfined

运行

在浏览器中访问 http://<群晖IP>:8060 即可进入 TapMap 交互式世界地图界面。

首次使用需要:

  1. 启动后 TapMap 会自动打开数据目录设置向导
  2. 将下载好的 GeoLite2-City.mmdbGeoLite2-ASN.mmdb 两个文件复制到数据目录
  3. 点击 Recheck GeoIP databases 按钮确认数据库加载成功

启用后,地图上会实时显示你的电脑当前建立的网络连接位置

快捷键操作:

  • D — 打开每日活动报告
  • I — 切换洞察面板
  • U — 查看未映射的公共服务
  • L — 查看内网/本地服务
  • O — 查看开放端口
  • R — 重新检查 GeoIP 数据库
  • ESC — 关闭当前窗口

注意事项

  1. 仅支持 Linux 宿主机TapMapDocker 模式需要 --network host--pid host,不支持 Docker Desktop for Windows/macOS。群晖 DSM 基于 Linux,可以正常使用
  2. GeoIP 数据库必需:没有 GeoLite2 数据库文件,地图上将不显示任何连接位置信息,需要免费注册 MaxMind 账号下载
  3. 进程可见性Docker 模式下进程名可能不可见,取决于宿主机安全策略。可通过 SYS_PTRACE 权限和 apparmor=unconfined 改善
  4. 定期更新数据库:建议每月更新一次 GeoLite2 数据库文件,以获得准确的地理定位信息
  5. 数据持久化:所有历史活动数据存储在数据卷中,建议定期备份

参考文档

olalie/tapmap: Watch your computer connect across the internet in real time. Discover the world behind your apps.
地址:https://github.com/olalie/tapmap

olalie/tapmap - Docker Hub
地址:https://hub.docker.com/r/olalie/tapmap

TapMap 官方文档
地址:https://olalie.github.io/tapmap/

MaxMind GeoLite2 Free Geolocation Data
地址:https://dev.maxmind.com/geoip/geolite2-free-geolocation-data