chrislamothe/netscout
GitHub: chrislamothe/netscout
NetScout 是一个自托管的 Web 网络扫描工具,通过 ARP 发现、SNMP 交换机端口映射和无线客户端追踪,帮助家庭实验室用户全面可视化网络中的每台设备。
Stars: 0 | Forks: 0
# NetScout
NetScout 是一个自托管的 Web 工具,用于可视化家庭网络中的每台设备。它可以跨多个 VLAN 进行扫描,通过 SNMP 查询管理型交换机以将设备映射到物理端口,并通过您的 AP 识别无线客户端。

## 功能
- **支持 VLAN 的 ARP 扫描** — 自动检测每个子网的正确接口,同时扫描汇聚 VLAN
- **交换机端口映射** — 通过 SNMP 查询管理型交换机,识别每台设备插入的物理端口
- **无线客户端检测** — Aruba AOS10 AP 报告关联的客户端及其 SSID 和频段信息
- **IEEE OUI 厂商数据库** — 完整支持 40,000+ 家厂商的查询,可从 UI 下载
- **自定义标签和厂商覆盖** — 可为设备命名,修正错误的厂商信息,并将其应用到整个 OUI 前缀
- **设备分类** — 自动将设备分类为服务器、基础设施、IoT 或桌面设备,并带有颜色图例
- **端口扫描与操作系统指纹识别** — 可选的丰富化信息功能在后台运行
- **三种视图** — 带有可展开详情的紧凑列表、卡片网格、可排序表格
- **持久化存储** — 单个 JSON 文件,无需数据库
## 快速开始 (Docker)
```
git clone https://github.com/Chrislamothe/netscout.git
cd netscout
docker compose up -d
```
打开 `http://your-docker-host/` 并点击 **扫描网络 (Scan Network)**。
该容器使用主机网络,以便它可以查看 Docker 主机上配置的所有 VLAN 子接口。请参阅下方的 [VLAN 设置](#vlan-setup)。
## 快速开始 (Python)
需要 Python 3.10+ 以及用于 ARP 扫描的 root 权限。
```
pip install -r requirements.txt
sudo python run.py
```
然后打开 `http://localhost/`。
## VLAN 设置
要进行多 VLAN 扫描,您需要主机在每个 VLAN 上都有网络存在。在使用 netplan 的 Ubuntu 上,请创建 `/etc/netplan/99-vlans.yaml`:
```
network:
version: 2
vlans:
eth0.10:
id: 10
link: eth0
addresses: [192.168.10.250/24]
eth0.20:
id: 20
link: eth0
addresses: [192.168.20.250/24]
```
使用 `sudo chmod 600 /etc/netplan/99-vlans.yaml && sudo netplan apply` 应用配置。
还需要将上游交换机端口配置为允许这些 VLAN 标签通过的 Trunk 口。完成这些操作后,NetScout 的 UI 将自动检测每个 `eth0.N` 子接口,并将其用于匹配子网上的 ARP 扫描。
## SNMP 设置
### Aruba 交换机 (ArubaOS-CX)
```
snmp-server vrf default
snmp-server community YOUR_COMMUNITY
```
### Aruba AOS10 APs
SNMP 通过您的无线控制器或 Aruba Central 在每个 AP 组中进行配置。可以重复使用相同的 community 字符串。
### 在 UI 中配置
打开 **⚙ 设置** 面板,通过 IP 和 community 字符串添加您的交换机和 AP。在保存之前,请使用 **测试 (Test)** 按钮验证可达性。
## 配置
环境变量(主要用于 Docker):
| 变量 | 默认值 | 用途 |
|---|---|---|
| `NETSCOUT_PORT` | `80` | HTTP 监听端口 |
| `NETSCOUT_DATA_DIR` | 工作目录 | `devices.json` 和 `oui.txt` 的存放位置 |
| `NETSCOUT_ARP_TIMEOUT` | `3` | 每个子网等待 ARP 响应的秒数 |
| `NETSCOUT_EXTRA_SUBNETS` | 空 | 要扫描的额外子网的 CIDR 列表(以逗号分隔) |
| `NETSCOUT_DISABLE_AUTO_SUBNET` | `0` | 设置为 `1` 以仅扫描 `NETSCOUT_EXTRA_SUBNETS` |
大多数设置都可以通过设置面板进行配置,并持久化到 `devices.json` 中。
## 为什么不使用 WatchYourLAN/Pi-hole/Fing 等?
NetScout 专门针对运行管理型交换机和企业级 AP 的家庭实验室进行了优化。它假定您拥有支持 SNMP 的基础设施,并希望将每台设备映射到其物理交换机端口或无线 AP。如果您只想在扁平网络中进行状态检测,更轻量级的工具可能更合适。
## 项目结构
```
netscout/
├── netscout/
│ ├── app.py # Flask routes
│ ├── config.py # constants & env vars
│ ├── storage.py # devices.json persistence
│ ├── scanner.py # ARP scanning + interface detection
│ ├── snmp.py # switch + AP SNMP queries
│ ├── enrichment.py # port scan, OS fingerprint, latency
│ ├── scan_runner.py # high-level scan orchestration
│ └── oui.py # IEEE OUI database
├── templates/index.html
├── static/{app.js,style.css}
├── Dockerfile
├── docker-compose.yml
└── run.py
```
## 许可证
MIT — 请参阅 [LICENSE](LICENSE)。
标签:Docker, Home Lab, Python, 云存储安全, 占用监测, 安全防御评估, 无后门, 版权保护, 网络扫描, 请求拦截, 资产管理, 运维工具, 逆向工具