Khaledak74/SDN_Topology_Visualizer
GitHub: Khaledak74/SDN_Topology_Visualizer
一款基于POX控制器和React的SDN网络实时监控仪表盘,集成拓扑可视化、流量分析、威胁检测和攻击模拟功能。
Stars: 0 | Forks: 0
# SDN 网络拓扑可视化工具





## 截图
## 仪表盘

### 实时拓扑图

### SIEM 告警仪表盘

### Wireshark 风格数据包捕获

## 功能特性
### 网络监控
- 支持缩放、平移和路径追踪的实时拓扑图
- Wireshark 风格的数据包捕获(最多缓冲 10,000 个数据包)
- 每个交换机的实时带宽图表
- 活跃 TCP/UDP 会话追踪器
- 按字节交换量排名的主要通信主机
### 安全 (SIEM / EDR)
- 10 条检测规则:SYN flood、ICMP flood、端口扫描、ARP flood、MAC 欺骗、UDP flood、SSH 暴力破解、DNS 放大...
- 单主机威胁评分(0-100,随时间自动衰减)
- 每条告警上的 MITRE ATT&CK 技术标签
- 一键封锁主机(在交换机上安装 drop 规则)
### 管理
- OpenFlow 流表查看器,添加和删除规则
- QoS 带宽限制和 DSCP 标记
- 30 种带有正确 Mininet 命令的网络测试类型
- 7 种攻击模拟场景
- 导出:支持所有数据的 JSON、CSV、SVG、TXT 格式
- 子网 / CIDR 计算器
## 架构
```
Mininet (virtual network)
OpenFlow 1.0
v
POX Controller + topology_api.py (REST on :8000)
HTTP /topo/
v
React.js Dashboard (dev server on :3000, proxied to :8000)
```
## 系统要求
| 组件 | 版本 | 备注 |
|-----------|---------|-------|
| OS | Ubuntu 22.04 LTS | VirtualBox 虚拟机即可 |
| Python | 2.7.x | POX 要求 — 切勿使用 Python 3 |
| POX | 0.3.0 (dart) | `git clone https://github.com/noxrepo/pox` |
| Node.js | 16+ (推荐 v20) | 通过 nvm 安装 |
| Mininet | 2.x | `sudo apt install mininet` |
| Open vSwitch | 任意 | `sudo apt install openvswitch-switch` |
| hping3 | 任意 | `sudo apt install hping3` |
| nmap | 任意 | `sudo apt install nmap` |
## 安装说明
### 1. 克隆仓库
```
git clone https://github.com/Khaled74/sdn_topology_visualizer.git
cd sdn-topology-visualizer
```
### 2. 安装系统依赖
```
sudo apt update
sudo apt install -y mininet openvswitch-switch hping3 nmap arp-scan
```
### 3. 安装 POX 控制器
```
cd ~
git clone https://github.com/noxrepo/pox.git
```
### 4. 复制控制器模块
```
cp controller/topology_api.py ~/pox/pox/topology_api.py
cp controller/qos_topo.py ~/Desktop/qos_topo.py
```
### 5. 安装 Node.js (通过 nvm)
```
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install 20 && nvm use 20
```
### 6. 安装 React 依赖
```
cd dashboard
npm install
```
## 使用方法
打开三个终端窗口,并在每个窗口中运行一条命令。
**终端 1 — 启动 POX**
```
cd ~/pox
./pox.py forwarding.l2_learning openflow.discovery \
openflow.spanning_tree --no-flood --hold-down \
host_tracker web.webcore topology_api \
samples.pretty_log log.level --DEBUG
```
**终端 2 — 启动 Mininet**
```
sudo mn --custom ~/Desktop/qos_topo.py --topo custom \
--controller=remote,ip=127.0.0.1,port=6633 \
--switch=ovs,protocols=OpenFlow10
# 然后生成流量:
mininet> pingall
```
**终端 3 — 启动仪表盘**
```
cd dashboard && npm start
# 打开浏览器访问 http://localhost:3000
```
## 仪表盘标签页
| 标签页 | 描述 |
|-----|-------------|
| Dashboard | KPI、主要威胁、最近告警、流量概览 |
| Topology | 支持缩放和路径追踪的交互式 SVG 网络地图 |
| Alerts | 带有 MITRE ATT&CK 标签的 SIEM 告警 |
| Threats | 单主机威胁评分和风险等级 |
| Packets | Wireshark 风格的实时数据包捕获表 |
| Sessions | 活跃 TCP/UDP 会话追踪器 |
| Hosts | 主机情报:MAC、IP、字节、协议 |
| Flows | OpenFlow 流表 — 查看、添加、删除规则 |
| QoS | 带宽限制和 DSCP 标记 |
| Graphs | 带宽历史迷你图和告警时间线 |
| Tests | 30 种带有 Mininet 命令的网络测试类型 |
| Cmd Log | 所有控制器/操作员命令的时间线 |
| Events | POX 系统事件日志 |
| Reports | 自动生成的安全和性能报告 |
| Export | 将所有数据下载为 JSON、CSV、SVG、TXT |
| Simulate | 7 种带有分步命令的攻击场景 |
| Net Calc | 子网/CIDR 计算器 + OpenFlow 端口参考 |
## 故障排除
**仪表盘显示“已断开连接”**
请确保 POX 正在运行,并且 `dashboard/package.json` 中的代理指向 `http://localhost:8000`。
**SyntaxError: Non-ASCII character in topology_api.py**
POX 使用 Python 2.7。该文件必须是 100% ASCII。
运行:`python -c "open('topology_api.py','rb').read().decode('ascii')"`
**拓扑中出现幽灵主机**
这是启动时的正常现象。在 Mininet 中运行 `pingall` 以稳定状态。
**npm start 失败:cannot find module**
请先运行 `cd dashboard && npm install`。
**Mininet 无法启动**
运行 `sudo mn -c` 清除所有残留状态,然后重试。
## 贡献
欢迎提交 Pull Request。对于重大更改,请先开启一个 issue。
请在提交前在 Ubuntu 22.04 和 POX 0.3.0 上进行测试。
## 许可证
MIT 许可证 - 详情请参阅 [LICENSE](LICENS E)。
标签:AMSI绕过, Cloudflare, DDoS检测, EDR, Mininet, MITM代理, MITRE ATT&CK, OpenFlow, PE 加载器, POX控制器, Python, QoS, React, SDN, SYN Flood, Syscalls, 互联网扫描, 入侵检测系统, 可视化仪表盘, 威胁检测, 安全数据湖, 抓包工具, 拓扑发现, 插件系统, 攻击模拟, 数据统计, 无后门, 服务管理, 端口扫描, 网络安全, 网络模拟, 脆弱性评估, 自定义脚本, 软件定义网络, 速率限制, 配置错误, 防火墙管理, 隐私保护, 驱动签名利用