
简介网络拓扑图绘制与编辑工具源码包面向网络管理员、运维工程师及需要设计网络架构的开发者可用于规划网络、定位故障、分配资源等场景无论小型办公网络还是大型数据中心都能借助它快速梳理设备与链路关系。压缩包共507个文件大小2.65MB包含285个svn-base版本库记录、71个xml界面配置、60个png图形资源及23个gif动态图示另有js、jsp、css、java等前后端源码其中xml与properties负责界面和参数配置js与jsp实现前端交互与页面逻辑便于二次开发定制拓扑工具。目前已有1083人学习下载。资源提供完整的项目工程结构涵盖图形编辑器核心模块与常见拓扑图形元素既能用于物理拓扑、逻辑拓扑等制图教学也可支撑后续功能扩展如添加自定义图标或自动发现网络设备还能对照学习拓扑编辑器的前后端实现思路。1. 网络拓扑图图上每条线都是排障时的证据网络拓扑图最大的价值不是画出来漂亮而是排障时能救命。我刚接手某公司的网络时面前是一张三年没更新过的图纸图上核心交换机画了一台机房实际躺着两台做堆叠的设备。后来办公网半夜中断我对着旧图找了一整夜最后发现问题根源恰恰是图上没标的那条堆叠链路。做网络运维的人大多有类似体会一张拓扑图如果信息标注不全还不如没有。这份网络拓扑图资源整理了从信息模型、绘制规范、参数标注到踩坑经验的一整套做法核心结论只有一句话图上每一条线都要能回答三个问题——什么介质、跑什么协议、带宽多大。适合刚入门的网络工程师照着画第一张图也适合运维老手拿来做图纸自检清单。2. 拓扑图的信息模型先定物理还是逻辑再谈画法2.1 物理拓扑与逻辑拓扑别把两张图画成一张动手画图之前我习惯先问一句这张图给谁看、解决什么问题。这不是套话。物理拓扑和逻辑拓扑表达的是两套完全不同的信息硬塞进一张图里图面会迅速失控排障时反而被冗余连线干扰。物理拓扑画的是设备、接口、线缆的真实连接关系核心交换机的哪个端口接到哪台接入交换机的哪个端口中间是光纤还是铜缆链路拐进哪个弱电井。它的读者是机房维护和硬件排障的人断电、换板卡、修光模块时用的是它。逻辑拓扑画的是业务视角VLAN 划在哪个网段OSPF 在哪些设备之间建邻接防火墙两侧是什么安全区域流量从用户终端到服务器端经过几跳。它的读者是规划网络和排查业务连通性的人VLAN 不通、路由丢失、策略拦截时看的是它。两者的关系是物理拓扑决定了逻辑拓扑的下限但逻辑拓扑不是物理拓扑的缩放。比如两台交换机做了链路聚合物理上是两条线逻辑上就是一个聚合口。把两张图混在一起画图面全是重复线拓扑的主线反而看不清。我一般把两张图分成两个文件文件名直接写明「物理」或「逻辑」。下面这个对比表新手可以先拿它判断当前要画哪一类对比项物理拓扑逻辑拓扑核心要素设备、接口、线缆、配线架子网、VLAN、路由、安全区域典型读者机房维护与硬件排障网络规划与业务排障更新时机硬件变更、链路调整业务调整、分区变更常见图素光纤、光模块、堆叠线防火墙区域、VRF、OSPF 区域需要特别提醒的是逻辑拓扑里的防火墙、负载均衡这类设备默认画成「区域边界」而不是一颗普通交换机图标否则策略关系完全看不出来。2.2 核心/汇聚/接入三层架构的图面布局与标注最常见的园区网拓扑是三层架构接入层在底部汇聚层在中间核心层在顶部再往上走是出口区的防火墙和运营商专线。画图时流量方向我统一按自下而上走少数项目按数据流从左到右也可以但整张图必须同一个方向不能一半上下、一半左右。每一层画完后用一条水平虚线或一个色带把层级隔开在右侧标注「接入层 / 汇聚层 / 核心层 / 出口区」。这个细节看起来多余实际非常有用新人瞄一眼就知道某台设备属于哪个层级把故障定位到「接入层上不去」还是「核心层丢包」能快很多。层级之间的链路标注要尽量双向。我画上联口时会按「上行设备端口 ↔ 下行设备端口」的格式写例如「CORE-AB-01 GE0/0/1 ↔ ACC-AB-01 GE0/0/48」而不是只写「上联 10G」。因为排障时常常要顺着物理连接逐跳核对端口号缺失意味着每查一跳都得登录设备敲状态命令效率完全不同。接入交换机上联汇聚的口通常是 TrunkTrunk 上的 native VLAN 要显式标出来我踩过好几次「图只标了允许 VLAN 10-20、漏标 native VLAN」导致的放行错乱。每个设备节点至少要标三样设备命名、管理 IP、角色。命名建议用「角色-位置-序号」格式比如 ACC-AB-01 表示 A 栋 B 机房的第一台接入交换机即使图纸换过好几任人新人也能从命名推断设备大概位置不用先翻台账。VLAN 标注我习惯分两行一行写范围一行写用途。比如「VLAN 100 / 管理段」「VLAN 200-210 / 办公业务」避免整张图十几个 VLAN 数字堆在一起谁都记不住哪个数字对应什么业务。这些看似细碎的规范决定了这张图三个月后还能不能当准图用。2.3 信息标注规则IP、VLAN、端口、链路一个都不能少拓扑图画得好不好差距全在标注密度。我见过不少设备框排得整整齐齐、但一条链路标注都没有的图这种只能叫设备摆放图排不了障。下面这份标注清单每画完一轮图我都照着逐条核对标注对象必填项说明设备设备命名、管理 IP、角色命名按「角色-位置-序号」接口设备名 接口编号双向标注两端都要出现链路介质、带宽、Trunk 或 Access 状态光纤标明速率与距离子网网段、掩码、网关优先标注在逻辑拓扑安全设备区域名、策略编号图面不展开策略细节外联运营商名、带宽、对端 IP专线要标对端节点标注不是一次性工作每次变更加设备、换链路、调 VLAN都必须同步更新。我给自己定过一条死规矩图上标注与现网不一致变更记录就不算完成。这个规矩一开始执行很痛但坚持半年后图纸准确率会有肉眼可见的回升。颜色也可以辅助分区业务网、管理网、外联网用不同颜色并在右下角固定放一个图例很多绘图工具支持把颜色存成模板后续画图直接复用省得每次重调。3. 从零绘制网络拓扑图工具选型与五步实操流程3.1 工具选型没有最好只有边界画拓扑图这些年我的结论是工具真不是最重要的标注规范才是。但选错工具确实会拖慢效率。这里把主流选择的使用边界说透。draw.io现在叫 diagrams.net免费、支持本地文件、能导出 SVG/PNG/PDF图层和样式足够用最适合个人维护、中小团队用 Git 管理图纸文件。缺点是多人同时在线编辑体验一般网络不稳时保存容易冲突。Visio 是老牌工具图标丰富适合公司已采购授权、需要输出对外汇报图的场景缺点是授权成本高、文件格式难以做版本 diff。亿图上手最快、模板多适合完全没画过拓扑图的新手起步或者内部培训带教用。PPT 不推荐用于正式运维图纸但临时给上级画个流程示意完全够注意它没有图层概念后续调整很痛苦不要拿它当长期准图。如果团队不超过五个人我优先推荐 draw.io理由很实际文件本质是 XML 文本可以进 Git改一个接口标注都能在 diff 里看到差异而且任何文本编辑器都能打开。图纸也是资产资产就该有版本历史。工具对比放一张表方便决策工具上手成本协作方式版本管理推荐场景draw.io低本地文件 Git/SVN可直接 diff运维团队日常维护Visio中文件流转不支持对外汇报、正式交付亿图极低文件流转弱新手起步、教学演示PPT低文件流转无临时示意不做准图3.2 五步流程从设备清单到成图第一步先收集设备清单不要凭记忆画。我一般登录核心交换机用 LLDP/CDP 抓一次邻居关系再抓 ARP 表生成一份「设备 接口 邻居」的草稿。命令大致是这样# 在核心交换机执行抓直连设备、本地接口、对端接口 show lldp neighbors detail | grep -E Local Port|System Name|Port id|Port Description不同厂商的命令格式略有差异但思路一样LLDP 邻居表就是物理拓扑的地基。设备不支持 LLDP 时可以用 SNMP 抓 ifIndex 与 ifDescr 凑出接口清单虽然信息少一些但比猜靠谱。第二步搭骨架。按「接入层 → 汇聚层 → 核心层 → 出口区」的顺序把设备框放上去先不连线。此时把图层规划好我习惯设备放「设备层」、连线放「链路层」、标注放「标注层」后面调整互不遮挡。第三步连线。先接接入到汇聚再接汇聚到核心最后画出口区和专线。连线时顺手把端口号写进线标签不要攒到最后补否则必然漏标。第四步标参数。按第 2 章的标注清单逐项核对设备名、管理 IP、接口、链路带宽、VLAN、图例。参数齐了图面信息才算完整。第五步自检。检查三件事图例是否存在、版本号和日期是否更新、有没有悬空线只连了一端。悬空线是拓扑图最典型的低级错误我每次画完都回头数一遍每条线两端的连接点。这里给一段 draw.io 的 XML 模板就是一个核心交换机接一台接入交换机的骨架可以直接用文本编辑器打开修改也可以导入 draw.io 再拖拽微调mxfile diagram namecore-access mxGraphModel dx800 dy600 grid1 gridSize10 root mxCell id0 / mxCell id1 parent0 / mxCell idcore valueCORE-AB-01#10;10.10.0.1 stylerounded1;whiteSpacewrap;html1;fillColor#ffe6cc; vertex1 parent1 mxGeometry x320 y40 width180 height60 asgeometry / /mxCell mxCell idacc valueACC-AB-01#10;10.10.1.1 stylerounded1;whiteSpacewrap;html1;fillColor#d5e8d4; vertex1 parent1 mxGeometry x320 y320 width180 height60 asgeometry / /mxCell mxCell idlink value10G 光纤#10;Trunk VLAN 10-20 styleendArrownone;html1;strokeWidth2; edge1 parent1 mxGeometry relative1 asgeometry mxPoint x410 y100 assourcePoint / mxPoint x410 y320 astargetPoint / /mxGeometry /mxCell /root /mxGraphModel /diagram /mxfile这段 XML 的要点mxCell 的 id 不能重复vertex 表示节点、edge 表示连线value 里的「 」是换行符用于把设备名和 IP 堆叠显示style 里 fillColor 控制设备颜色strokeWidth 控制链路粗细。团队里有人会写脚本的话甚至可以用代码批量生成几十台设备的初始图纸导入后再人工布局能省掉大量拖拽摆放的时间。3.3 图层与模板让图纸变成活资产很多新手画图是「一次性产物」画完发给同事之后再也不打开。要让图纸活起来有两个习惯值得养成。第一个是图层分离设备、链路、标注各占一层改链路不挪设备。第二个是模板复用把常用的三层架构、出口区、双机热备组件存成绘图工具的自定义库新项目直接拖模板图面风格统一图例都不用重新画。文件命名也建议固定格式比如「物理拓扑_某园区_v2025.06.xml」「逻辑拓扑_某园区_v2025.06.xml」日期版本号写进文件名。这样别人拿到文件能快速判断是不是最新版也方便归档。这个习惯成本很低收益却是长期且确定的。提示团队用 Git 管理 draw.io 文件时XML 里如果画布缩放过diff 会夹杂大量坐标变动所以每次提交前先「对齐画布并整理」一遍diff 会干净很多。4. 拓扑图避坑指南五条血泪经验与解决路径这一章的内容都来自真实踩过的坑每条按「现象 → 原因 → 解决」展开新手可以直接把解决方案抄到自己的制图规范里。4.1 堆叠设备画成单台排障时找不到备板现象图纸上核心交换机只有一个框现场实际是两台设备做了堆叠。某次断电后业务起不来按图排查到「备板」时才发现根本没有备板原计划两小时的割接变成通宵。原因画图的人觉得两台堆叠设备对外逻辑上是一台就图省事画了一个框。但堆叠的排障特点是主备角色可切换、板卡分布在两台物理机上物理图必须把两台设备都画出来。解决物理拓扑图里堆叠成员逐台画用虚线连接堆叠口并标注堆叠组名如 stack-1 member 1/2逻辑拓扑图则可以把堆叠组合成一个框但框名写成「CORE-AB-01(stack-1)」一眼能看出物理构成又不破坏逻辑视图。4.2 链路带宽只标规划值流量分析对不上号现象监控平台显示某条链路跑满打开拓扑图一看标着 10G全员认定是带宽不足。结果现场排查发现是 1G 光模块链路协商在 1G图上标的是规划值不是实际值。原因图纸在规划阶段就画好了部署时端口协商结果和设计不符没人回头更新标注。解决链路边标注写两段「规划 10G / 协商 1G」至少保证图面带宽与实际协商一致。每年巡检时批量拉一次端口协商速率和图上逐条核对协商只有 1G 的链路标注成 10G 就是误导信号。4.3 双机热备画成两条独立链路切换方向全错现象两台防火墙做了双机热备图上画了两台设备各自连着核心和出口看起来各有一条独立链路。业务切换时按图以为是 A 墙断了走 B 墙实际主备共用虚拟 IP流量全在主墙备墙只同步状态把维护窗口白白浪费在错误的操作顺序上。原因把高可用设备画成了普通并联设备既没画心跳线也没标注主备关系。解决两台 HA 设备之间必须画心跳线标注所用协议VRRP 或 keepalive逻辑拓扑里把两台设备用虚线框成一组「HA 组」对外只引出业务链路并标明主备切换方向避免误导阅读者。4.4 管理网与业务网混画安全分区失真现象图上所有交换机画成一张网领导问「管理网隔离了吗」没人答得上来。安全审计时发现办公网与服务器区之间画了防火墙但服务器区的管理口实际上直连办公网交换机图的「安全分区」与真实拓扑对不上。原因画图只画了业务 VLAN 的连接带外管理网要么没画要么和业务网共用一组交换机时没有在图上区分。解决管理网单独画一张逻辑图用独立颜色标注「带外管理」与「带内管理」管理口直连业务交换机的场景必须显式画出不能因为少见就省略。安全相关的图省略一条线就是埋一个雷。4.5 图纸不维护三个月后成历史文物现象半年后新同事接手打开图纸对照机房十几条链路对不上最后只能把图当参考排障还是得登录设备逐跳查。原因没有把「图纸更新」绑定到变更流程配置在交换机上敲完就生效了没人打开画图软件同步。解决把拓扑图文件纳入变更附件任何割接、加设备、调 VLAN 的操作变更单里必须附新版图纸文件或截图否则流程不结束。版本号带日期变更说明写在新版图里或文件名上比如「逻辑拓扑_v2025.06」。版本管理不需要平台有日期、有变更说明就已经比大多数团队领先了。5. 从图纸到配置把拓扑图变成配置清单与自动核对工具5.1 从拓扑图反推配置清单让图纸不只是纸如果前面几章的标注规范执行到位拓扑图就不再是一张静态图纸而是一份「配置的起点」。我在给设备开局时习惯先从图上摘配置的骨架。图上的元素和配置动作之间存在清晰的映射图上标注对应配置动作设备管理 IP配置接口地址或 LoopbackVLAN 范围与用途创建 VLAN 并命名Trunk 链路端口模式、允许 VLAN 列表链路带宽标注端口速率、双工HA 组主备方向VRRP / keepalive 优先级出口区带宽与对端默认路由、NAT 策略为了让摘配置的过程可重复我会把链路标注导成 CSV再跑一段小脚本生成端口配置草稿。CSV 长这样source,src_port,peer,dst_port,speed CORE-AB-01,GE0/0/1,ACC-AB-01,GE0/0/48,10G CORE-AB-01,GE0/0/2,ACC-AB-02,GE0/0/48,10G CORE-AB-01,GE0/0/3,FW-AB-01,GE0/0/1,10G对应的 Python 脚本import csv with open(links.csv, newline, encodingutf-8) as f: rows list(csv.DictReader(f)) for r in rows: # 每条 CSV 行对应一条链路标注输出端口描述、速率、双工三行配置 print(f! 链路 {r[source]} {r[src_port]} - {r[peer]} {r[dst_port]}, 带宽 {r[speed]}) print(config terminal) print(finterface {r[src_port]}) print(f description to-{r[peer]}-{r[dst_port]}) print(f speed {r[speed].replace(G, 000)}) # 10G - 10000 Mbps print( duplex full) print(end)这段脚本的逻辑很简单每条 CSV 行对应一条链路标注输出端口描述、速率和双工三行配置。参数上 speed 那一行把「10G」替换成「10000」是因为多数设备配置语法的速率单位是 Mbps如果图上写的是「1G」会自动变成 1000这个替换规则可以按设备品牌调整。脚本的价值不在自动出配置而在倒逼你检查图纸标注的完整性CSV 里某一列是空的输出就缺一块你马上会发现哪里标漏了。生成的草稿我还会人工核对一遍尤其是双工——高速光模块和自协商设备之间经常出现两端协商不一致的问题脚本代劳不了。5.2 用 LLDP 数据给图纸做定期比对画好的图纸会随着时间失真光靠人肉巡检不可靠。我每个季度会把图纸链路清单导出来和核心交换机上的 LLDP 邻居表做一次 diff过程很简单# 把图纸链路清单导出成两列本地接口对端标识 grep ↔ logical_topology.md | awk -F↔ {print $1, $2} | sort drawing.txt # 从核心交换机抓真实邻居关系 show lldp neighbors | tail -n 5 | awk {print $1, $2} | sort now.txt # diff 结果里多出来的就是“图上没有但现网存在的线” diff drawing.txt now.txt第一段命令从文档里提取带双向箭头符号的链路标注行把两端拆成两列第二段命令抓现网 LLDP 邻居第三段 diff 是核心动作。diff 出来「图上没有但现网存在」的线大概率是最近变更没更新图diff 出「图上有但现网没有」的线可能是链路已拆除、图纸没清理。这个流程不复杂但能把「图纸漂移」变成可量化的指标每次巡检跑一遍比年底突击补图靠谱得多。5.3 排障时怎么读图先层级、再链路、最后参数再准确的图纸读法错误也会把排障带偏。我自己的顺序是固定的第一先根据故障现象判断影响区域比如「一个楼层上不去网」大概率在接入层和汇聚层之间全网时断时续大概率在核心或出口第二顺着图上链路逐跳向下游看找到第一个不符合预期的节点再把登录设备验证集中到这个节点上第三回看参数标注带宽、VLAN、主备方向任何一项和现网对不上先怀疑图纸而不是设备。提示图纸回答的是「应该长什么样」设备回答的是「现在长什么样」。两者矛盾时以设备输出为准但要立即标记图纸待更新排障结束顺手改掉。读图还有一个容易被忽略的点图上的「捷径」往往是坑。比如业务 VLAN 跨汇聚直接透传到核心图上画成了接入层的横向连线排障时顺着这条线走会绕远。遇到这类特殊链路我习惯在线上加一个「非常规」标签提醒自己和同事这里不是普通上行。6. 给图纸做十分钟体检五个自检项与一个习惯绘图规范讲再多不落到一张检查表里过两周就会被忘掉。我把拓扑图体检压缩成五个问题每次翻图前花十分钟快速过一遍检查项判定标准设备命名角色-位置-序号无重名、无空名接口标注每条链路两端都写了端口编号带宽标注与端口实际协商速率一致高可用表达堆叠逐台画HA 组标明主备方向版本信息文件或图面有日期版本号和变更说明五个问题里只要有一个答不上来这张图就不能当运维准图使用。我之前有一次花了大半夜排一个光模块故障最后发现原因写在图上但标错了图上标 10G 的链路实际协商只有 1G问题不在设备而在标注。从那以后我给自己立了一条规矩任何配置变更必须先改图、再提变更记录没有同步更新图纸的变更直接打回重做。这个习惯执行大半年后图纸准确率明显回升新同事接手也能放心照着图操作。排查网络问题时最快的路径从来不是登录一台台设备敲命令而是先有一张准确的图再顺着图去验证。希望这个习惯也能帮到你。本文还有配套的精品资源点击获取