谁在干坏事偷偷联网?给NAS装上TapMap,IP、端口、进程一目了然
我们的NAS,或者VPS,基本都是 24 小时开着。并且除了我们主动访问文件、看电影、跑下载任务的同时,其实后台还有不少应用会一直和外部服务器通信。
例如Docker 镜像、系统服务、影音应用、备份软件……到底连接到了哪里?用了什么端口?哪些是局域网连接,哪些又跑到了公网?以威联通NAS为例,单看自带的资源监控,其实很难直观判断。
本次要介绍的 TapMap 项目就挺有意思。它可以直接读取 Linux 主机当前的网络连接,然后把远程 IP、国家、运营商、应用程序等信息画到一张世界地图上。除此之外,它还能查看开放端口、局域网服务,并记录一段时间内出现过的网络活动。

TapMap 是什么?
完整项目名:olalie/tapmap。TapMap 是一个开源的网络连接可视化项目(并非防火墙或IDS)。Linux 环境下,TapMap 主要通过psutil获取当前网络连接,再配合 GeoIP 数据库完成地理位置解析,最后使用 Dash 和 Plotly 生成交互式地图。
目前主要可以看到:
• 当前 NAS 对外建立的网络连接
• 远程服务器所在国家或地区
• 网络服务商 / ASN
• 对应应用程序信息
• NAS 当前开放的 TCP / UDP 端口
• LAN / LOCAL 局域网连接
• 无法定位的公网连接
• 最近出现的新连接
• 常见国家、Provider、应用和端口
• Daily Activity Report 网络活动报告
部署流程
以威联通NAS为例,通过Docker Compose的方式进行部署。
IMG_4958.JPG部署代码如下:
services:
tapmap:
image: olalie/tapmap:latest
container_name: tapmap
restart: unless-stopped
network_mode: host
pid: host
cap_add:
- SYS_PTRACE
environment:
TAPMAP_IN_DOCKER: "1"
TAPMAP_PORT: "8050"
TAPMAP_HOST: "0.0.0.0"
TAPMAP_DATA_DIR: "/data"
TAPMAP_LAUNCH_BROWSER: "false"
volumes:
- /share/Container/tapmap/data:/data
打开威联通的Container Station,创建新的应用程序。

使用介绍
部署完毕后,浏览器输入NAS_IP:8050即可访问服务。如下图界面。直接选右边这个最省事「DB-IP Lite」:Install DB-IP database files。如果后面你想要更高的定位准确率,再换左边的 MaxMind GeoLite2。它需要注册免费 MaxMind 账号,再填入Account ID和License Key。

我这里直接安装的基础版,如下图为安装成功。

选择「Close」,便会出现网路地图,是这台 QNAP 的真实网络活动。

地图是可以通过鼠标拖动和转动的。鼠标悬停,即可查看使用各个网络运营商的应用程序。点击标记可查看更多应用程序详情。

关于右侧的内容:
• wget / python2 / lucky / python3:今天新识别到的进程
• China Unicom / Amazon / Cloudflare:访问到的网络服务商
• Canada:GeoIP 定位到加拿大多伦多的 Cloudflare 节点
• 443:HTTPS
• 123:NTP 时间同步
• 底部 STATUS: OK 说明运行正常。
随着时间推移,有新的记录也会显现。因为我这台NAS没有对外网开放,连接少也是正常的。

在我的海外VPS也部署了一个看看。

关于左上角:
• INSIGHTS:看统计和历史。看最近一段时间 NAS 的联网趋势,比如新出现的应用、国家、运营商、端口,以及哪些连接最频繁。
• NETWORK:看当前具体连接,能查远程 IP、端口、协议、进程、PID 等。你前面查 python3、某个公网节点,就是主要用这里。
• TOOLS:管理 GeoIP 数据库、重新检测数据库、缓存等。之前装 DB-IP、切 MaxMind 都是在这一类功能里。
• INFO:看 TapMap 版本、快捷键、帮助说明,平时用得很少。

查看每日活动报告。

查看本地TCP/UDP 绑定或监听的端口。

最后
如果你想直观看看 NAS 每天都在和哪些服务器通信、哪些应用在联网、有没有陌生连接,那可以装个 TapMap 来试试,比较有趣的一个项目。
感谢观看,本文完。
