ntopng:Docker 部署网络流量分析
本文属于「自托管 Docker 部署实战」系列(共 35 篇),第 6 篇。 示例中的 IP(192.0.2.10)、域名(example.com)、密码均为占位符,请按实际环境替换。
它是什么
ntopng 是老牌开源流量监控工具:按网卡抓包,实时展示每台设备、每个协议、每个会话的流量排行,能定位「谁在偷偷跑满上行」。
它需要一个 Redis 存时序数据,抓包需要 NET_ADMIN 权限和 host 网络。
前置条件
- 一台 Linux 服务器(2C2G 起,抓包吃 CPU);
- 已安装 Docker 与 Compose v2;
- 知道要抓的网卡名(
ip -br link查看,如ens18、eth0)。
curl -fsSL https://get.docker.com | sh
mkdir -p /srv/docker/active/ntopng && cd /srv/docker/active/ntopng
镜像地址
ntop/ntopng:latest
redis:7-alpine
国内拉取慢可用镜像前缀:
docker.1ms.run/ntop/ntopng:latest
目录结构
/srv/docker/active/ntopng/
├── docker-compose.yml
├── data/
│ ├── redis/
│ └── ntopng/
└── logs/
部署步骤
# docker-compose.yml
services:
redis:
image: redis:7-alpine
container_name: ntopng-redis
restart: always
command: redis-server --appendonly yes
ports:
# 只监听回环,供 host 网络的 ntopng 访问
- "127.0.0.1:6379:6379"
volumes:
- ./data/redis:/data
ntopng:
image: ntop/ntopng:latest
container_name: ntopng
restart: always
network_mode: host
cap_add:
- NET_ADMIN
depends_on:
- redis
environment:
- NTOPNG_REDIS_HOST=localhost
- NTOPNG_REDIS_PORT=6379
volumes:
- ./logs:/var/log/ntopng
- ./data/ntopng:/var/lib/ntopng
command: >
-i <网卡名>
--local-networks "192.168.0.0/16"
--http-port 6532
--dns-mode 1
# 查网卡名后替换 <网卡名>
ip -br link
docker compose up -d
docker compose logs -f --tail=100
浏览器打开 http://<SERVER_IP>:6532。
关键配置
| 项 | 说明 |
|---|---|
-i <网卡名> |
抓包网卡,写错会启动失败,ip -br link 查 |
--http-port 6532 |
Web 端口,host 网络下直接访问 |
--local-networks |
内网网段,决定「本地主机」分组 |
network_mode: host |
抓包必需 |
cap_add: NET_ADMIN |
抓包必需 |
| Redis | 时序数据后端,必须与 ntopng 通 |
注意事项
- Redis 必须能被 host 网络的 ntopng 访问:示例里把 Redis 发布到
127.0.0.1:6379;如果不发布端口,localhost:6379会连不上,时序图空白; - host 网络会占用宿主端口,6532 别和别的服务冲突;
- 抓包在交换网络下只能看到本机流量,想看全网需要镜像端口/TAP;
- 长时间运行 Redis 会持续增长,
./data/redis定期清理或设上限; - 需要流量留存/审计时再加 ClickHouse,CPU 和磁盘成本会明显上升;
- 公网暴露前加认证,ntopng 能看到内网全部流量细节。
备份与升级
# 主要备份配置与 Redis 数据(可按需)
tar czf "ntopng-$(date +%F).tar.gz" ./data/redis
# 升级
docker compose pull
docker compose up -d
- 升级后如果启动失败,先看
docker compose logs ntopng里的网卡/权限报错。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果