説明なし

Your Name a7e51c5bea feat: 优化拓扑匹配策略,使用12字符MAC前缀提高匹配精度 4 週間 前
cmd 2a97f458a9 prod 4 週間 前
internal a7e51c5bea feat: 优化拓扑匹配策略,使用12字符MAC前缀提高匹配精度 4 週間 前
pkg 2a97f458a9 prod 4 週間 前
web 07adc3ac5c feat: 修复网络拓扑匹配逻辑,使用双向LLDP对称匹配策略 4 週間 前
.gitignore 44f7fef1f8 v1.0.1: 多拓扑管理、Web SSH终端、扫描进度修复、拓扑连线优化 1 ヶ月 前
FIX_NEIGHBOR_DISCOVERY.md 44f7fef1f8 v1.0.1: 多拓扑管理、Web SSH终端、扫描进度修复、拓扑连线优化 1 ヶ月 前
PROJECT_SUMMARY.md d0927cbad5 Initial commit: 网络拓扑发现系统 1 ヶ月 前
README.md d0927cbad5 Initial commit: 网络拓扑发现系统 1 ヶ月 前
SSH_COMPATIBILITY.md d0927cbad5 Initial commit: 网络拓扑发现系统 1 ヶ月 前
SSH_OUTPUT_FIX.md 44f7fef1f8 v1.0.1: 多拓扑管理、Web SSH终端、扫描进度修复、拓扑连线优化 1 ヶ月 前
USAGE_WINDOWS.md 90d2a230a3 Fix: 解决Win10中文乱码和编译路径问题 1 ヶ月 前
V1.0.0_COMPARISON.md 44f7fef1f8 v1.0.1: 多拓扑管理、Web SSH终端、扫描进度修复、拓扑连线优化 1 ヶ月 前
build.bat 8b7dbf2886 Fix: 替换SQLite为JSON文件存储,无需CGO支持 1 ヶ月 前
config.example.json 2a97f458a9 prod 4 週間 前
debug-neighbor.bat 44f7fef1f8 v1.0.1: 多拓扑管理、Web SSH终端、扫描进度修复、拓扑连线优化 1 ヶ月 前
devices.json e2f804ac52 feat: 增强拓扑匹配算法,支持多重匹配策略 1 ヶ月 前
go.mod 44f7fef1f8 v1.0.1: 多拓扑管理、Web SSH终端、扫描进度修复、拓扑连线优化 1 ヶ月 前
go.sum 44f7fef1f8 v1.0.1: 多拓扑管理、Web SSH终端、扫描进度修复、拓扑连线优化 1 ヶ月 前
start.bat 90d2a230a3 Fix: 解决Win10中文乱码和编译路径问题 1 ヶ月 前
test-api.bat 86545fd4cb Debug: 添加详细日志以诊断设备列表和数据显示问题 1 ヶ月 前
test-fix.bat 44f7fef1f8 v1.0.1: 多拓扑管理、Web SSH终端、扫描进度修复、拓扑连线优化 1 ヶ月 前

README.md

网络拓扑发现系统

基于Go语言开发的Windows网络拓扑发现工具,通过SSH协议远程获取多厂商网络设备接口信息,自动生成可视化网络拓扑图。

功能特性

  • ✅ 支持多种设备类型: Cisco、华为、H3C、ASA防火墙、Linux服务器、Windows Server
  • ✅ 通过SSH协议远程采集设备信息
  • ✅ 自动发现网络拓扑关系 (基于LLDP/CDP协议)
  • ✅ 交互式Web界面展示拓扑图
  • ✅ 实时扫描进度显示
  • ✅ 设备详情查看 (接口信息、邻居设备等)
  • ✅ 支持网段扫描和手动添加设备
  • ✅ 拓扑导出功能

系统要求

  • Windows 7/8/10/11 或 Windows Server
  • Go 1.22+ (仅编译时需要)
  • 网络设备的SSH访问权限

快速开始

方式一: 使用编译好的程序

  1. 运行编译脚本:

    build.bat
    
  2. 启动程序:

    network-topology.exe
    
  3. 打开浏览器访问: http://localhost:8080

方式二: 从源码编译

# 克隆项目
git clone <repository-url>
cd network-topology-discovery

# 下载依赖
go mod download

# 编译
go build -o network-topology.exe ./cmd

# 运行
network-topology.exe

配置说明

配置文件 config.json:

{
  "scan_ranges": ["192.168.1.0/24"],  // 要扫描的网段
  "devices": [                         // 预配置的设备
    {
      "ip": "192.168.1.1",
      "type": "cisco",                // 设备类型
      "username": "admin",
      "password": "your_password",
      "port": 22
    }
  ],
  "ssh": {
    "timeout": 10,                    // SSH超时时间(秒)
    "max_retries": 3,                 // 最大重试次数
    "port": 22                        // SSH端口
  },
  "web": {
    "port": 8080,                     // Web服务端口
    "host": "0.0.0.0"                // 监听地址
  },
  "scanner": {
    "concurrency": 10,                // 并发扫描数
    "timeout": 2                      // 扫描超时(秒)
  }
}

使用方法

1. 扫描网段

  1. 在界面中输入IP范围 (如: 192.168.1.0/24)
  2. 输入SSH用户名和密码
  3. 点击"开始扫描"
  4. 等待扫描完成,自动显示拓扑图

2. 手动添加设备

  1. 点击"添加设备"按钮
  2. 填写设备信息:
    • IP地址
    • 设备类型 (Cisco/华为/H3C/ASA/Linux/Windows)
    • 用户名和密码
  3. 点击"添加"

3. 查看拓扑

  • 缩放: 鼠标滚轮
  • 拖拽: 鼠标左键拖动节点
  • 查看详情: 点击设备节点
  • 导出拓扑: 点击"导出拓扑"按钮

支持的设备命令

Cisco

  • show version - 版本信息
  • show interface - 接口详情
  • show ip interface brief - 接口摘要
  • show cdp neighbors detail - CDP邻居
  • show lldp neighbors detail - LLDP邻居

华为

  • display version - 版本信息
  • display interface - 接口详情
  • display ip interface brief - 接口摘要
  • display lldp neighbor - LLDP邻居

H3C

  • display version - 版本信息
  • display interface - 接口详情
  • display ip interface brief - 接口摘要
  • display lldp neighbor-list - LLDP邻居

ASA防火墙

  • show version - 版本信息
  • show interface - 接口详情
  • show ip - IP信息
  • show inventory - 设备清单

Linux服务器

  • hostname - 主机名
  • uname -a - 系统信息
  • ip addr show - 网络接口
  • ip link show - 链路状态
  • uptime - 运行时间

Windows Server

  • hostname - 主机名
  • systeminfo - 系统信息
  • Get-NetAdapter - 网络适配器
  • Get-NetIPAddress - IP地址

项目结构

network-topology-discovery/
├── cmd/
│   └── main.go              # 主程序入口
├── internal/
│   ├── ssh/
│   │   └── client.go        # SSH客户端
│   ├── device/
│   │   ├── parser.go        # 解析器基类
│   │   ├── cisco.go         # Cisco解析器
│   │   ├── huawei.go        # 华为解析器
│   │   ├── h3c.go           # H3C解析器
│   │   ├── asa.go           # ASA解析器
│   │   ├── linux.go         # Linux解析器
│   │   └── windows.go       # Windows解析器
│   ├── topology/
│   │   └── builder.go       # 拓扑构建器
│   ├── scanner/
│   │   └── scanner.go       # 网络扫描器
│   └── config/
│       └── config.go        # 配置管理
├── web/
│   ├── index.html           # Web界面
│   ├── css/style.css        # 样式文件
│   └── js/app.js            # 应用逻辑
├── pkg/
│   └── models/
│       └── models.go        # 数据模型
├── build.bat                # 编译脚本
├── config.example.json      # 配置示例
└── README.md

技术栈

  • 后端: Go 1.22+
    • golang.org/x/crypto/ssh - SSH客户端
    • embed - 嵌入Web资源
    • net/http - HTTP服务器
  • 前端:
    • Cytoscape.js - 拓扑图渲染
    • 原生HTML5/CSS3/JavaScript

常见问题

1. 扫描失败

  • 检查SSH凭据是否正确
  • 确认设备已启用SSH服务
  • 检查防火墙规则

2. 无法访问Web界面

  • 检查端口是否被占用
  • 确认防火墙允许访问该端口
  • 尝试使用 127.0.0.1:8080 访问

3. 设备识别错误

  • 尝试手动指定设备类型
  • 检查设备是否支持标准命令

许可证

MIT License

贡献

欢迎提交Issue和Pull Request!

联系方式

如有问题或建议,请提交Issue。