chrislamothe/netscout

GitHub: chrislamothe/netscout

NetScout 是一个自托管的 Web 网络扫描工具,通过 ARP 发现、SNMP 交换机端口映射和无线客户端追踪,帮助家庭实验室用户全面可视化网络中的每台设备。

Stars: 0 | Forks: 0

# NetScout NetScout 是一个自托管的 Web 工具,用于可视化家庭网络中的每台设备。它可以跨多个 VLAN 进行扫描,通过 SNMP 查询管理型交换机以将设备映射到物理端口,并通过您的 AP 识别无线客户端。 ![截图占位符](https://raw.githubusercontent.com/chrislamothe/netscout/main/docs/screenshot.png) ## 功能 - **支持 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, 云存储安全, 占用监测, 安全防御评估, 无后门, 版权保护, 网络扫描, 请求拦截, 资产管理, 运维工具, 逆向工具