ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

基于eNSP的校园网三层拓扑方案:VLAN规划与VRRP配置实操

基于eNSP的校园网三层拓扑方案:VLAN规划与VRRP配置实操 简介面向计算机网络专业学生与课程设计、毕业设计需求者这是一份基于华为eNSP平台构建的大型校园网络拓扑设计方案及可执行项目源码包。方案围绕高校校园网络实际业务场景展开覆盖核心层、汇聚层、接入层三层结构并融入虚拟局域网划分、中继链路配置、动态主机配置服务、动态路由协议、无线接入与出口安全等常见实验点难度定位适中既能支撑教学实验也适合作为期末大作业或毕设答辩项目。压缩包共包含三十八个文件整体大小约三百零五KB主体为eNSP工程拓扑文件、设备镜像文件、运行配置文件同时提供备份文件和说明文档文件粒度清晰对应不同设备与功能模块。项目已在本地环境中验证通过评审成绩优异技术文档与代码整理规范学习者可对照拓扑与配置快速理解校园网分层设计、路由交换部署和设备调试方法。目前已有六十七人学习/下载对需要完整网络工程案例参考的读者而言是一份轻量但结构完整的学习资料。1. 基于 eNSP 平台构建的大型校园网络拓扑设计方案到底解决什么问题基于 eNSP 平台构建的大型校园网络拓扑设计方案核心不是“画一张好看的拓扑图”而是把校园网按核心层、汇聚层、接入层拆开规划再在 eNSP 里把每台设备连起来、把配置跑通最后形成一套可以反复复现、能直接拿去交付讲解的方案。对正在做网络课设、实验周、技能竞赛或内部技术培训的从业者来说这套方案最大的价值是“设计有依据、配置可执行”点开拓扑里任意一台设备都能看到完整合理的命令历史而不是一张只能截图用的示意图。文章会从网络架构和地址规划讲起一路落到设备连线、具体命令和配套的校验脚本最后用可复现的排障顺序收尾。适合三类人想从单机 eNSP 实验升级到综合组网的在校生需要给团队做网络综合实验培训的工程师以及项目交付前想低成本验证拓扑可靠性的方案设计人员。2. 先把校园网拆成三层核心层、汇聚层、接入层与 VLAN 地址规划2.1 三层架构为什么是大型校园网的默认答案大型校园网和家用路由器最本质的区别不在设备数量而在故障域和广播域的管理。把所有终端接到同一台三层交换机上当然能通但一个教室的广播风暴会拖死全校一条接入线路的错误配置也可能直接冲击核心层。所以常见的工程做法是按核心层、汇聚层、接入层三段拆开接入层负责把终端流量收进来汇聚层负责做 VLAN 间路由和访问控制核心层只做高速转发和出口调度。在 eNSP 里拆三层还有一个很现实的原因模拟器里单台设备的资源有限所有功能堆在一台 S5700 上配置一长排障时自己也分不清是路由问题、VLAN 问题还是端口问题。拆开之后每一层的配置范围都很小出故障时能用display命令快速把问题锁定到某一层。校园网的扩展也依赖这个分层后期加一栋宿舍楼只需要在汇聚层加一台设备、在接入层加几台交换机核心层完全不用动。2.2 VLAN 与 IP 地址规划表先有表后有拓扑我自己的习惯是画拓扑图之前先画表而且是用 Excel 或 CSV 画。因为 eNSP 里的网线可以随便连真正的约束是地址规划。拓扑图画错了可以改线地址规划错了要面对的是所有终端不在同一网段、DHCP 分配混乱、路由协议学不到路由等一堆连锁问题。下面这张表是这套方案里比较典型的校园网规划你可以直接拿去做改动区域VLAN ID网段VLANIF 网关DHCP 策略说明教学楼一层10192.168.10.0/24192.168.10.254全局地址池普通教学终端教学楼二层11192.168.11.0/24192.168.11.254全局地址池多媒体教室终端图书馆20192.168.20.0/24192.168.20.254全局地址池查询区、借阅区终端行政办公30192.168.30.0/24192.168.30.254全局地址池打印机单独预留 30.200-.250学生宿舍无线40192.168.40.0/24192.168.40.254全局地址池无线 AP 接入专用于宿舍区财务专网50192.168.50.0/24192.168.50.254不启用 DHCP静态分配访问控制独立服务器区100192.168.100.0/24192.168.100.254不启用 DHCPDNS、DHCP 服务器、网管终端规划时注意三点。第一VLAN 号不要只用 1默认 VLAN 1 在大型网络里最好只做设备管理网段业务全部重新编号。第二网关地址统一放在 VLANIF 上每段子网的 .254 作为网关PC 侧用 DHCP 下发避免手工配错。第三服务器区单独划分 VLAN 且不做动态分配财务这类敏感区域也要单独隔开方便后面配置 ACL 做访问限制。2.3 设备的角色划分与冗余设计选型eNSP 设备型号有限但已经足够搭一套典型校园网。出口路由器选 AR2200核心层与汇聚层用 S5700 三层交换机接入层用 S3700 二层交换机无线部分用 eNSP 里的 AC 和 AP 型号仿真。核心层和汇聚层之间跑 OSPF 或静态路由核心层双机做 VRRP这是校园网最常见的可靠做法。双核心的选型理由很简单如果全校只有一个核心交换机这台设备一宕整个校园网全断。所以核心层放两台 S5700一台作为 Master、一台作为 Backup对外虚拟出一个网关 IP。终端设备无论走哪台核心网关都是同一个地址切换过程对用户透明。汇聚层到核心层之间用两条链路做 Eth-Trunk 链路聚合既能提升带宽又能避免单链路故障。冗余设计不是越复杂越好。在 eNSP 里做实验时STP、VRRP、OSPF 同时启用如果参数不协调很容易出现环路或者主备震荡。我的建议是核心层用 VRRP 解决网关冗余汇聚到核心用 Eth-Trunk 解决链路冗余接入层到汇聚只保留 STP 默认配置。三层以上的冗余设计放到后期再叠加第一版跑通了再逐步加复杂特性。3. 在 eNSP 里把拓扑真正跑起来设备连线与核心配置3.1 设备选型和连线顺序先核心后接入打开 eNSP 后新建工程的第一件事不是拉设备而是想清楚连接关系。一个典型的校园网拓扑包含一台 AR2200 出口路由器、两台 S5700 核心交换机、两台 S5700 汇聚交换机、若干 S3700 接入交换机以及几台 PC 和一台服务器。连线顺序按“核心为中心”来布出口路由器接核心交换机核心交换机接汇聚交换机汇聚交换机接接入交换机接入交换机接 PC 和 AP。命名规范我习惯从第一步就固定下来。核心交换机叫 Core-SW1、Core-SW2汇聚叫 Dist-SW1、Dist-SW2接入层按楼宇缩写加编号比如 Teach-1F-SW、Lib-SW、Dorm-SW。这个习惯看起来浪费时间但配置到后面你会发现eNSP 的命令行里如果全是默认名连 check 配置都要反复确认设备身份。3.2 核心交换机配置VLAN、VLANIF、DHCP 与 VRRP核心交换机是整套配置里最要紧的部分。以下配置以 Core-SW1 为例先建 VLAN、再给 VLANIF 配网关地址最后把 DHCP 指向全局地址池。Core-SW2 的配置只有 IP 地址和 VRRP 优先级不同其他保持一致。# 进入系统视图修改设备名 system-view sysname Core-SW1 # 批量创建业务 VLAN管理 VLAN 用 100 vlan batch 10 11 20 30 40 100 # 为 Vlanif10 配置网关开启 DHCP 全局分配 interface Vlanif10 ip address 192.168.10.254 255.255.255.0 dhcp select global quit # 同样的方式配置其余 VLANIF interface Vlanif11 ip address 192.168.11.254 255.255.255.0 dhcp select global quit这段配置的逻辑是VLANIF 承担终端网关的角色DHCP 地址池在全局配置后由 VLANIF 决定把哪个网段的地址下发到对应 VLAN。dhcp select global的意思是这个接口不做本地接口地址池分配而是去全局地址池里查找匹配网段。VRRP 配置是双核心的关键。Core-SW1 上配置如下# 在 Vlanif10 上启用 VRRP虚拟网关设为 192.168.10.254 interface Vlanif10 vrrp vrid 10 virtual-ip 192.168.10.254 vrrp vrid 10 priority 120 vrrp vrid 10 preempt-mode timer delay 20 quitpriority 120让 Core-SW1 成为 Master默认优先级是 100。preempt-mode timer delay 20是抢占延迟给 Core-SW2 20 秒时间完成路由收敛避免故障恢复时主备设备来回抢。这个参数如果不设网络抖动时会出现 VRRP 状态反复切换终端网关一会儿通一会儿不通。3.3 汇聚层与接入层配置trunk 放行和 PVID 边界汇聚层交换机主要做两件事向上与核心走 trunk向下与接入走 trunk同时承担一部分 VLAN 间路由。接入层交换机的核心配置是端口分类连接终端的端口用 access连接上级交换机的端口用 trunk。以教学楼接入交换机为例system-view sysname Teach-1F-SW # 创建该楼层所需 VLAN vlan batch 10 11 # 上联汇聚交换机端口配置为 trunk并放行业务 VLAN interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 10 11 quit # 连接 PC 的端口配置为 access划入 VLAN 10 interface GigabitEthernet0/0/2 port link-type access port default vlan 10 quit这里最容易翻车的是 trunk 的允许列表。一个教室终端划在 VLAN 10如果上联口只放行了 VLAN 10PC 能通但旁边第二个教室划在 VLAN 11上联口没有放行它VLAN 11 的终端就完全不可达。所以接入层上联口的 allow-pass 列表必须覆盖下行所有业务 VLAN。PVID 也要注意默认 PVID 是 VLAN 1如果 PC 发出不带标签的帧而 access 口把它划到 VLAN 10标签处理由port default vlan决定不要手动改 trunk 口的 PVID 去“配合”业务 VLAN否则容易出现双向流量标签不一致。3.4 全局 DHCP 地址池字段与参数说明DHCP 配置放在核心层核心交换机上因为核心是所有业务 VLAN 的三层网关。配置内容就是把规划表里的网段和网关信息翻译成地址池# 启用 DHCP 服务 dhcp enable # 为教学楼 VLAN 10 配置全局地址池 ip pool vlan10 gateway-list 192.168.10.254 network 192.168.10.0 mask 255.255.255.0 dns-list 192.168.100.10 lease day 3 quitgateway-list必须和 VLANIF 或者 VRRP 虚拟地址一致否则 PC 拿到的网关不可达。network决定了分配给终端哪个网段。dns-list指向服务器区的 DNS 服务器地址eNSP 里可以填 192.168.100.10也可以直接填公网 DNS 的 IP。lease day 3这个参数在校园网场景里比较合适终端跨楼移动频繁租期太长会导致地址池被无效占用太短则增加 DHCP 请求报文量。4. 可执行项目源码用 Python 把规划表变成配置脚本和校验工具4.1 “可执行项目源码”在 eNSP 场景里指什么很多人看到“源码”两个字第一反应是某个应用程序的代码仓库。但在 eNSP 的校园网方案里可执行项目源码指的是三样东西的组合一份结构化地址规划表CSV、一组把规划表转换成设备配置命令的 Python 脚本、一个用来校验 VLAN 和子网冲突的小工具。这套组合让方案具备可复现性换一台电脑、换一组网段改 CSV 后重新跑一遍脚本就能生成新的配置。这不是替代手工配置而是减少重复劳动。一个校园网拓扑里有十几台交换机如果每台设备的几十条 VLAN 命令都手工敲既慢又容易错。脚本生成后仍然需要人工 review但 review 的对象从几百行命令缩减到几十行脚本逻辑加一张地址表。4.2 从 CSV 规划表生成 VLAN 配置的小脚本CSV 规划表就是前面那张 VLAN 规划表的简化版列名固定为vlan_id、vlan_name、subnet、gateway。脚本读取 CSV 后生成对应的vlan batch和 VLANIF 配置段。#!/usr/bin/env python3 # gen_vlan_config.py import csv def load_vlan_plan(path): rows [] with open(path, newline, encodingutf-8-sig) as f: for line in csv.DictReader(f): rows.append({ vid: int(line[vlan_id]), name: line[vlan_name].strip(), gateway: line[gateway].strip(), }) return rows def render_global(rows): vids [str(r[vid]) for r in rows] return vlan batch .join(vids) def render_vlanif(rows): lines [] for r in rows: lines.append(finterface Vlanif{r[vid]}) lines.append(f ip address {r[gateway]} 255.255.255.0) lines.append( dhcp select global) lines.append(quit) lines.append() return \n.join(lines) if __name__ __main__: plan load_vlan_plan(vlan_plan.csv) print(render_global(plan)) print(render_vlanif(plan))这段脚本里最关键的是网关字段直接用来生成 VLANIF 地址所以 CSV 里写的网关必须和 VRRP 虚拟地址保持一致。脚本把dhcp select global默认加在每个 VLANIF 后面如果某个网段不想启用 DHCP比如财务专网可以在 CSV 里加一列dhcp脚本再根据这一列决定是否输出该行。生成结果先打印出来检查确认无误后再复制到 eNSP 命令行执行。4.3 上线前必跑的一致性校验VLAN、网关、子网归属地址规划表手写容易出错尤其当校园网规模变大后常见的错误有两个两个 VLAN 配置了同一个网关地址两个网段存在重叠。这类问题在 eNSP 里表现成“PC 能获取地址但跨 VLAN 不通”排查时要花不少时间。校验脚本能在生成配置前就把问题抓住。#!/usr/bin/env python3 # check_vlan_plan.py from ipaddress import ip_interface, ip_network def check_plan(rows): gateway_map {} networks [] for r in rows: vid r[vid] gw r[gateway] try: intf ip_interface(f{gw}/24) except ValueError as e: raise ValueError(fVLAN {vid} 网关地址非法: {gw}) from e if gw in gateway_map: raise ValueError(f网关冲突: VLAN {vid} 与 VLAN {gateway_map[gw]} 使用了同一个地址 {gw}) gateway_map[gw] vid net intf.network for other_vid, other_net in networks: if net.overlaps(other_net): raise ValueError(fVLAN {vid} 网段 {net} 与 VLAN {other_vid} 网段 {other_net} 重叠) networks.append((vid, net)) print(校验通过网关唯一、子网无重叠) if __name__ __main__: import sys import csv rows [] with open(sys.argv[1], newline, encodingutf-8-sig) as f: for line in csv.DictReader(f): rows.append({ vid: int(line[vlan_id]), gateway: line[gateway].strip(), }) check_plan(rows)脚本用 Python 标准库ipaddress把网关和掩码组合成网络对象overlaps方法直接判断两个子网是否重叠比人眼检查可靠得多。校验通过后再生成配置能省掉大量在 eNSP 里反复敲命令试错的成本。这套脚本后续也可以扩展把 trunk 放行列表、端口 access VLAN 映射都放到同一个 CSV 里一次性生成整台交换机的配置。5. eNSP 大型拓扑避坑指南五个常见问题与排查顺序5.1 eNSP 启动设备 AR1 失败 40设备一直灰着现象在拓扑里启动 AR2200 或 S5700设备状态卡在灰色提示启动失败 40。这个问题出现频率很高特别是新装 eNSP 之后第一次跑大型拓扑。原因eNSP 依赖自身的虚拟化组件来模拟路由器失败 40 通常是虚拟网卡或系统防火墙拦截了设备进程。Hyper-V 开启、防火墙没有放行 eNSP 相关进程、或者 eNSP 没有以管理员权限启动都会触发这个报错。解决先用管理员身份运行 eNSP再检查 Windows 功能中 Hyper-V 是否与 eNSP 的虚拟化组件冲突。关闭系统防火墙对 eNSP 全部可执行文件的拦截后重新启动设备。PC 上有多个虚拟网卡时把多余的虚拟网卡禁用网络适配器优先保证 eNSP 的自建网卡处于启用状态。5.2 所有 PC 都获取不到地址DHCP 报文像丢了一样现象接入层 PC 的 IP 地址一直是 169.254.x.x抓包能看到 PC 在发 DHCP Discover但收不到 Offer。原因最常见的两个原因分别出在 DHCP 地址池与 VLANIF 网段不匹配以及 trunk 没有放行 DHCP 所在 VLAN。DHCP 地址池network写的是 192.168.10.0/24但 VLANIF10 的地址写成了 192.168.20.254交换机不知道把哪个地址池分配给这个接口。另一种情况是 PC 在 VLAN 10接入到汇聚的 trunk 口只放行 VLAN 1DHCP 广播报文根本到不了核心交换机。解决用display ip pool查看地址池真实配置再用display vlan检查各交换机上 VLAN 10 的存在状态和 trunk 绑定的接口列表。排查顺序一定是先看 VLANIF 和池子网段是否一致再看 trunk 放行列表。5.3 配好了 VRRP 却出现主备反复切换网关时通时断现象核心交换机配置 VRRP 后display vrrp显示状态在 Master 和 Backup 之间来回翻转终端 ping 网关出现规律性丢包。原因eNSP 里默认的 VRRP 报文发送间隔比真实设备敏感加上两台核心之间直连链路不稳定抢占没有延迟主设备刚恢复正常就立刻夺回 Master形成振荡。解决把 VRRP 抢占模式增加延迟主设备vrrp vrid 10 preempt-mode timer delay 20备设备保持默认不抢占或同样配置延迟。同时检查两台核心之间用于 VRRP 报文交互的链路是否是 trunk 且放行了对应 VLAN不要只允许业务流量通过。5.4 网线看起来都连通业务就是不通现象拓扑里所有设备图标都是绿色线也连了PC 能拿到地址但跨 VLAN ping 不通或者同一个 VLAN 内部分终端无法互访。原因这是 eNSP 里很常见的“配置通、物理通、逻辑不通”问题。接入交换机连接终端的端口没有正确设置 access终端发出来的帧进入交换机后落到了默认 VLAN 1和业务 VLAN 10 完全隔离。上联 trunk 的 PVID 如果被手工改过也会造成带标签的帧进入错误 VLAN。解决逐步执行display interface GigabitEthernet0/0/2查看端口类型和 PVID确认 access 口port default vlan 10真实生效。再看 trunk 口port trunk allow-pass vlan是否覆盖所有业务 VLAN。排这个问题的要诀是自上而下先查三层路由表再查 VLANIF 和 trunk最后查 access 口。5.5 重新打开工程后配置全部丢失退回初始状态现象辛苦配完整个校园网保存工程后关掉 eNSP。第二天重新打开所有设备配置空白拓扑还在但设备像刚启动一样。原因eNSP 的工程文件保存的是拓扑结构不是设备的运行配置。设备配置要逐台在设备上执行save系统提示是否保存配置文件选择Y配置才会写入设备自身的存储空间。有些人只点了一次 eNSP 的工程保存没有逐台设备执行命令保存配置。解决配置完成后逐台设备执行save并确保弹出的提示选择确认。在核心交换机上保存完成后通过display saved-configuration验证配置文件已经存在。拓扑全部验证通过后再整体备份一份.topo工程文件同时把每台设备的配置导出为文本文件作为项目源码的一部分一并归档。6. 拓扑跑通后怎么验收连通性测试、抓包与手动故障注入6.1 三条必跑的连通性测试配置全部完成后不能只看拓扑连线是绿色就宣告完工。我会按三个层级做验收终端到网关、终端到服务器区、终端到出口路由器。终端到网关用 PC 持续 ping VLANIF 虚拟地址确认 VRRP 主备设备都能响应。终端到服务器区要跨越多台交换机这一步能验证 trunk 放行和路由是否全部生效。最后在 PC 上 ping 出口路由器的接口地址确认三层路由可达。ping 测试之外还要跑一遍display ip routing-table把核心交换机的 OSPF 路由手工核对一遍。如果没有出现预期网段多半是network宣告时反掩码写错比如 192.168.10.0 0.0.0.255 写成了 0.0.255.255会把一大段地址宣告进 OSPF导致路由表出现多余的明细路由。6.2 手动制造一次故障验证收敛效果可靠方案不能只在“一切都正常”时成立。我会把核心交换机之间的链路断开一条观察 VRRP 状态和终端 ping 的丢包情况。VRRP 正常收敛时终端丢包应该控制在个位数甚至零丢包。如果丢包非常严重反过来说明抢占参数或链路聚合配置有问题。之后恢复链路再观察是否会出现一次短暂中断。这一步在 eNSP 里就是选中连线后直接 down 掉成本极低但很多人从没做过。抓包验证也是容易被忽略的环节。在核心交换机连接汇聚的接口上开启抓包确认 PC 的 DHCP 报文确实从正确 VLAN 进入确认终端之间的 ICMP 报文没有经过意外路径。这个方法对定位“能通但路径不对”的问题特别有效比盯着路由表猜要直接得多。我的个人习惯是整套拓扑验收通过后给每台设备截一张状态图把 CSV 规划表、Python 校验脚本、设备配置文件一起放到同一目录下归档。三个月后想复现这套实验时不需要重新敲任何命令跑一遍脚本、导入配置就能回到当时的状态。这个习惯帮我省掉了大量重复劳动也希望帮到你。本文还有配套的精品资源点击获取
返回列表