Khaledak74/SDN_Topology_Visualizer

GitHub: Khaledak74/SDN_Topology_Visualizer

一款基于POX控制器和React的SDN网络实时监控仪表盘,集成拓扑可视化、流量分析、威胁检测和攻击模拟功能。

Stars: 0 | Forks: 0

# SDN 网络拓扑可视化工具 ![License](https://img.shields.io/badge/license-MIT-blue) ![Python](https://img.shields.io/badge/python-2.7-yellow) ![React](https://img.shields.io/badge/react-18-61DAFB) ![POX](https://img.shields.io/badge/controller-POX%200.3.0-orange) ![Platform](https://img.shields.io/badge/platform-Ubuntu%2022.04-E95420) ## 截图 ## 仪表盘 ![Dashboard](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/66a39184bb070806.png) ### 实时拓扑图 ![Topology](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/905271f0af070809.jpg) ### SIEM 告警仪表盘 ![Alerts](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/751de0f0a5070811.jpg) ### Wireshark 风格数据包捕获 ![Packets](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/bcca9e48ec070813.jpg) ## 功能特性 ### 网络监控 - 支持缩放、平移和路径追踪的实时拓扑图 - 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, 互联网扫描, 入侵检测系统, 可视化仪表盘, 威胁检测, 安全数据湖, 抓包工具, 拓扑发现, 插件系统, 攻击模拟, 数据统计, 无后门, 服务管理, 端口扫描, 网络安全, 网络模拟, 脆弱性评估, 自定义脚本, 软件定义网络, 速率限制, 配置错误, 防火墙管理, 隐私保护, 驱动签名利用