☰
eNSP IPv6校园网双栈组网与OSPFv3/DHCPv6配置指南
2026/11/6 5:31:29 网站建设 项目流程

简介:面向网络专业学生、eNSP初学者及课程设计备考者的IPv6校园网规划与设计实验包,适合用于综合实验、期末复盘、方案对照以及网络工程实践入门。实验围绕校园网拓扑搭建展开,涵盖VLAN划分、单臂路由、OSPFv3、防火墙安全策略、DHCPv6、GRE隧道及默认路由等技术,帮助读者梳理从地址规划、设备互联到业务连通性验证的完整流程,并理解各协议在校园网场景中的协同关系。压缩包共48个文件,约633KB,内含19个cfg配置文件、15个efz设备文件、拓扑文件、命令说明、地址规划图等,配置文件与设备文件可直接导入或复制粘贴参考,便于快速还原实验环境。已有5029人学习,配套全程配置视频可倍速观看,并附完整命令、地址规划表和拓扑图,适合对照配置、排查差异、复现实验结果、整理实验报告及答辩演示。

1. 机柜就在旁边,但没人敢先动那根上联线

机房里有四台交换机和两台路由器,摆了一个学期;真要把校园网网络拓扑换成 IPv6,谁也不敢先拔那根上联线。eNSP 的价值就在这里:它把整套 IPv6 校园网搭建搬到笔记本上,配错了回滚一次只要两分钟,还能顺手抓包查看 ND 报文。这份实验资源提供的是一套完整的三层拓扑、一张地址规划表,以及逐台设备的 VRP 配置;它不止包含一个能 ping 通的截图,核心层双栈、汇聚层 OSPFv3、接入层 SLAAC 和 DHCPv6 这三段都有对应配置。正在做课程设计的学生可以照着跑通,再从 IPv4 运维转向双栈的网络工程师也可以挑自己单位真实的那一段来改。

2. 拓扑与地址规划:三层架构落位和 /64 前缀切分表

动手前先把两件事固定下来:设备各处在哪一层、每台设备拿哪段前缀。顺序反了,后面改一个 VLAN 就要连带改十几条配置,eNSP 里虽然能回滚,但时间全耗在返工上。常见做法是先画一张“设备—角色—上联口”的资产表,再画一张前缀分配表;两张表对齐之后才开始敲命令。

2.1 三层架构与设备选型:核心、汇聚、接入各自负责什么

实验拓扑按经典三层来:两台核心、两台汇聚、四台接入、一台出口路由器。核心层在 eNSP 里我建议直接用 AR2220 路由器,不用 S5700 交换机。原因是模拟器里的交换机镜像对 OSPFv3、DHCPv6、RA 这些特性的支持参差不齐,部分版本敲ipv6全局命令能过,但undo ipv6 nd ra halt直接报错;路由器镜像的 VRP 功能更全,排查问题时不会把“设备不支持”误判成“我配错了”。把核心层做成路由器还有一个好处:OSPFv3 的 router-id、区域划分、路由汇总都能实际运行,和真实项目里的排错思路一致。

汇聚层用 S5700,负责终结每个楼栋的 VLAN、上行跑 OSPFv3、下行跑二层 Trunk。接入层用 S3700,只做二层转发和端口隔离,不配任何三层地址。出口位置放一台 AR2220,接一条“模拟外网”的环回口或者另一台路由器,用来验证默认路由能不能通。

设备角色eNSP 型号上联方式关键配置
Core-01/02核心AR2220互连 + 双下联汇聚OSPFv3、VRRP、DHCPv6
Agg-01/02汇聚S5700双上联核心VLAN 终结、OSPFv3、ACL6
Acc-01~04接入S3700单上联汇聚Trunk、端口隔离
Edge-01出口AR2220上联核心默认路由、双栈出口

双上联那一层要用 MSTP 破环,同时用 VRRP 提供网关冗余。这里有个取舍:eNSP 跑 VRRP6 是可以的,但 VRRP6 的虚拟地址必须和接口地址同前缀,而且vrrp6 vrid下要先ipv6 enable,否则命令敲不进去。教学场景里如果嫌麻烦,可以先把 VRRP6 关掉,只做单网关,等主链路跑通再补冗余,别一上来四件事一起调。

2.2 地址规划:一个 /48 怎么切成 /56 和 /64

IPv6 校园网规划里最容易出问题的地方,是有人随手把2001:DB8:0:1::/64一路往下排,排到第 200 个 VLAN 时前缀已经乱得没法看。合格的做法是按物理层级切:学校拿一个 /48,每个楼栋分一个 /56,楼栋内每个 VLAN 或 SSID 再分一个 /64。之所以坚持 /64,是 SLAAC 依赖 64 位接口标识,前缀长度只要不是 64,终端自动配置就会出各种奇怪现象——有的系统能拿到地址但不通,有的干脆不生成全球地址。这条规则在真实网络和模拟器里都一样硬。

层级前缀用途备注
校园总前缀2001:DB8:100::/48全局汇总出口向核心只通告这一条
核心互连2001:DB8:100:0::/64Core-01 与 Core-02点对点链路
教学区2001:DB8:100:10::/56Agg-01 下挂再切 /64
宿舍区2001:DB8:100:20::/56Agg-02 下挂再切 /64
服务器区2001:DB8:100:30::/56数据中心ACL6 重点保护
访客区2001:DB8:100:40::/56无线访客与内网隔离
管理网2001:DB8:100:FF::/64设备 loopback只允许运维段访问

网关地址统一取每个 /64 的第一个可用地址,也就是::1。这条约定看着小,实际能省掉大量沟通成本:学生做实验、运维查故障、脚本批量生成配置,大家默认都知道网关在哪。回环地址用管理网段里的::1、::2依次排,OSPFv3 的 router-id 反而要用 IPv4 地址来写,因为 OSPFv3 的 router-id 仍然是 32 位格式,这点后面还会遇到。

2.3 在 eNSP 里把拓扑画出来并打通二层

先把设备拖进工作区,按资产表连线,注意 eNSP 的接口编号规则:AR2220 默认只有 GE0/0/0 到 GE0/0/2,需要更多口要加单板;S5700 的 GE0/0/1 起算,别把核心到汇聚的线插到 GE0/0/0 上,那个口在某些镜像里默认是管理口行为。连完线先别急着配三层,把二层打通、确认 Trunk 放行正确,是后面所有步骤的前提。

# Agg-01:创建 VLAN 并配置下行 Trunk <Agg-01> system-view [Agg-01] vlan batch 10 11 12 20 30 40 100 [Agg-01] interface GigabitEthernet0/0/1 [Agg-01-GigabitEthernet0/0/1] port link-type trunk [Agg-01-GigabitEthernet0/0/1] port trunk allow-pass vlan 10 11 12 [Agg-01-GigabitEthernet0/0/1] undo shutdown [Agg-01] interface GigabitEthernet0/0/2 [Agg-01-GigabitEthernet0/0/2] port link-type trunk [Agg-01-GigabitEthernet0/0/2] port trunk allow-pass vlan 10 11 12 [Agg-01-GigabitEthernet0/0/2] undo shutdown # 接入交换机:上行口打成 Trunk,用户口划进 VLAN <Acc-01> system-view [Acc-01] vlan batch 10 [Acc-01] interface GigabitEthernet0/0/1 [Acc-01-GigabitEthernet0/0/1] port link-type trunk [Acc-01-GigabitEthernet0/0/1] port trunk allow-pass vlan 10 [Acc-01] interface Ethernet0/0/1 [Acc-01-Ethernet0/0/1] port link-type access [Acc-01-Ethernet0/0/1] port default vlan 10

第一段配置的意图是让汇聚到接入的链路成为 Trunk 并显式放行 VLAN,华为设备 Trunk 默认只放行 VLAN 1,port trunk allow-pass vlan不写就等于业务全部不通,这是新手最常见的一处空转。第二段把接入侧用户口划进 VLAN 10,注意 S3700 的用户口是Ethernet0/0/x而不是 GE,敲interface GigabitEthernet会提示不存在。undo shutdown可以省略,多数端口默认就是开启状态,但在 eNSP 里手动写一行能避免“线连了但口是 down”的误判。

二层通了之后做一次自检:在 Acc-01 上display vlan看 VLAN 10 的成员口对不对,在 Agg-01 上display port vlan active看 Trunk 放行列表。这两条命令花不了一分钟,但能挡掉后面一半的“地址配了却 ping 不通”。

3. 路由与互通:双栈接入、OSPFv3 与出口取舍

二层通了,接下来解决“谁能访问谁”。IPv6 校园网的路由部分比 IPv4 干净,因为没有广播、没有 ARP,邻居发现全靠 ICMPv6,但正因如此,一条 ICMPv6 被 ACL 拦掉,表现出的现象会非常像“路由没通”。这一章按接入、汇聚、出口的顺序推进,每段都把配置和验证方式一起给出来。

3.1 接口双栈与 RA 参数:M 标志和 O 标志怎么定

终端能不能自动拿到地址,取决于路由器的 RA 报文。华为设备上有个反直觉的默认行为:接口的 RA 发送默认是抑制状态,必须显式undo ipv6 nd ra halt才会周期性发 RA。很多人配完地址,PC 上ipconfig死活只有 fe80 开头的链路本地地址,就是卡在这一行。

# Core-01:全局开启 IPv6,配置 Vlanif 网关并放开 RA <Core-01> system-view [Core-01] ipv6 [Core-01] vlan batch 10 20 30 40 [Core-01] interface Vlanif10 [Core-01-Vlanif10] ipv6 enable [Core-01-Vlanif10] ipv6 address 2001:DB8:100:10::1/64 [Core-01-Vlanif10] undo ipv6 nd ra halt [Core-01-Vlanif10] ipv6 nd autoconfig other-flag [Core-01-Vlanif10] ipv6 nd ra prefix 2001:DB8:100:10::/64 86400 604800 [Core-01-Vlanif10] quit

ipv6是全局开关,不开的话接口下所有 ipv6 命令都敲不进去,部分交换机镜像写作ipv6 enable,敲不出来就在 system-view 下按?看当前版本的实际命令字。ipv6 address必须带前缀长度,写成不带掩码的地址会报错。undo ipv6 nd ra halt打开 RA 发送,ipv6 nd ra prefix手动指定通告的前缀和生命周期,前一个数字是有效生存期,后一个是首选生存期,前者必须大于等于后者,写反了终端会立刻丢弃这个前缀。

M 和 O 两个标志决定终端走哪条路:M=1 表示“地址也用 DHCPv6 要”,O=1 表示“地址自己 SLAAC 生成,但 DNS 之类的其他参数去问 DHCPv6”。教学区我一般用 O=1 加 SLAAC,终端即插即用,DHCPv6 只发 DNS 和域名;宿舍区如果要按账号分配地址、做溯源,就改成 M=1 走有状态 DHCPv6,这时候还要ipv6 nd autoconfig managed-address-flag。两个标志同时置 1 会出现终端重复申请地址的怪现象,别这么干。

3.2 OSPFv3 多区域:router-id、网络类型与路由汇总

OSPFv3 和 OSPFv2 最大的区别是进程不再绑定网段,而是把接口挂到进程上,ospfv3 1 area 0.0.0.0这行命令直接写在接口视图里。另一个区别是 router-id 仍然是 32 位点分十进制,必须有,而且全网唯一;eNSP 里如果不手动配,设备可能选不出 router-id,邻居就卡在 Init 状态。

# Core-01:OSPFv3 进程与接口挂载 [Core-01] ospfv3 1 [Core-01-ospfv3-1] router-id 10.0.0.1 [Core-01-ospfv3-1] quit [Core-01] interface Vlanif10 [Core-01-Vlanif10] ospfv3 1 area 0.0.0.0 [Core-01] interface Vlanif100 [Core-01-Vlanif100] ospfv3 1 area 0.0.0.0 [Core-01] interface GigabitEthernet0/0/0 [Core-01-GigabitEthernet0/0/0] ospfv3 1 area 0.0.0.1 # 汇聚设备:把下挂网段汇总后上送核心 [Agg-01] ospfv3 1 [Agg-01-ospfv3-1] router-id 10.0.0.11 [Agg-01-ospfv3-1] area 0.0.0.1 [Agg-01-ospfv3-1-area-0.0.0.1] abr-summary 2001:DB8:100:10::/56

核心到汇聚之间跑区域 1,核心内部跑区域 0,汇聚做 ABR 把整个 /56 汇总成一条上送,核心路由表就干净了。abr-summary的后缀长度必须小于等于明细前缀,写错了会提示不在该区域内。如果实验里只有两台设备,直接全放区域 0 最省事;一旦上到四台以上,建议还是分区域,正好练一下虚连接和汇总。

验证邻居别只看display ospfv3 peer显示 Full 就完事,还要看display ospfv3 interface里的接口状态和 DR 选举,以及display ipv6 routing-table里有没有学到对端网段。邻居 Full 但路由表空,八成是接口没ipv6 enable,OSPFv3 在 IPv6 未开启的接口上是不会工作的。

3.3 出口方向:默认路由、双栈出口与 NAT66 的取舍

出口这一段在模拟器里要现实一点。真实校园网接教育网通常是纯路由,学校拿一段公网前缀直接通告出去,不做地址转换;商业线路才可能涉及 NAT。eNSP 的 AR 镜像对 NAT66 和 NAT64 的支持并不完整,硬啃容易陷入“命令能敲但转发不通”的困境,比较常见的替代方案是出口做双栈,IPv6 走纯路由,IPv4 保持原有 NAT44 配置,两边互不干扰。

# Edge-01:默认路由指向模拟外网 + 回程静态路由 <Edge-01> system-view [Edge-01] ipv6 [Edge-01] interface GigabitEthernet0/0/0 [Edge-01-GigabitEthernet0/0/0] ipv6 enable [Edge-01-GigabitEthernet0/0/0] ipv6 address 2001:DB8:FFFF::2/64 [Edge-01] ipv6 route-static :: 0 2001:DB8:FFFF::1 [Edge-01] ipv6 route-static 2001:DB8:100:: 48 2001:DB8:100:0::1 [Edge-01] ospfv3 1 [Edge-01-ospfv3-1] default-route-advertise always

ipv6 route-static :: 0里的::和0分别代表目的前缀和前缀长度,等价于 IPv4 的0.0.0.0 0。第二条是回程路由,指向核心的互联地址,模拟外网那台设备不知道校园内部前缀,必须靠这条把流量送回来。default-route-advertise always让出口把默认路由注入 OSPFv3,核心就不用再手写静态;always关键字的作用是即使本地没有匹配的默认路由也照样通告,做实验方便,生产环境要慎用。

出口验证按三层走:先在 Edge-01 上ping ipv6 2001:DB8:FFFF::1确认外网可达,再在 Core-01 上tracert ipv6看路径是否经过出口,最后从接入侧的 PC 发起访问。三层都过,路由部分就算闭环了。

4. 服务与安全:DHCPv6 分配、ACL6 隔离与验证三件套

路由打通只是“能通”,离“能用”还差服务和边界控制。IPv6 没有 NAT 这层天然屏障,每台终端都拿着全球可达地址,ACL 的位置和顺序比 IPv4 时代更关键。这一段把地址分配、访问控制、验证手段三件事放在一起讲,因为它们互相牵制:ACL 配错,DHCPv6 报文进不来,终端表现出的现象和地址池配错一模一样。

4.1 DHCPv6 有状态与无状态:什么时候必须用 M 标志

有状态 DHCPv6 适合需要审计和按人分配的场合,比如宿舍网和实验室;无状态(SLAAC 出地址、DHCPv6 只发 DNS)适合教学区和公共区域,终端换教室不用重新申请。资源里的配置给了两套,切换时只需要改接口上的 M/O 标志和地址池挂载。

# Core-01:有状态 DHCPv6 地址池 [Core-01] dhcp enable [Core-01] dhcpv6 pool POOL-DORM [Core-01-dhcpv6-pool-POOL-DORM] address prefix 2001:DB8:100:20::/64 [Core-01-dhcpv6-pool-POOL-DORM] excluded-address 2001:DB8:100:20::1 to 2001:DB8:100:20::FF [Core-01-dhcpv6-pool-POOL-DORM] dns-server 2001:DB8:100:30::53 [Core-01-dhcpv6-pool-POOL-DORM] domain-name campus.local [Core-01-dhcpv6-pool-POOL-DORM] quit [Core-01] interface Vlanif20 [Core-01-Vlanif20] ipv6 enable [Core-01-Vlanif20] ipv6 address 2001:DB8:100:20::1/64 [Core-01-Vlanif20] undo ipv6 nd ra halt [Core-01-Vlanif20] ipv6 nd autoconfig managed-address-flag [Core-01-Vlanif20] dhcpv6 server POOL-DORM

excluded-address一定要留够范围,把网关、VRRP 虚拟地址、服务器预留段全部排除,否则地址池会把网关地址发给终端,然后全网出现“地址冲突但不报错”的诡异现象。dns-server只能写 IPv6 地址,写 IPv4 的会直接被拒绝。接口下挂载地址池的命令字在不同 VRP 版本上略有差异,敲dhcpv6 ?补齐即可;managed-address-flag打开 M 标志,终端才会主动发 Solicit 报文。

提示:配完地址池先别急着插终端,在设备上display dhcpv6 pool看可用地址数,再用display ipv6 dhcp server statistics看有没有收到请求。收到 0 个请求,问题在 RA 或链路;收到请求但没分配,问题在地址池或 ACL。

4.2 ACL6 与访客隔离:把 3000 号 ACL 用起来

IPv6 ACL 的编号从 3000 起,规则匹配顺序是从小到大,命中即停,所以精细规则要写在小号上,兜底 permit 写在大号上。资源里给了三条典型策略:访客段禁止访问内网、管理网只允许运维段、服务器区只开放指定端口。

# Agg-01:访客段隔离 + 管理面保护 [Agg-01] acl ipv6 3000 [Agg-01-acl6-basic-3000] rule 5 deny ipv6 source 2001:DB8:100:40::/56 destination 2001:DB8:100:10::/56 [Agg-01-acl6-basic-3000] rule 10 deny ipv6 source 2001:DB8:100:40::/56 destination 2001:DB8:100:20::/56 [Agg-01-acl6-basic-3000] rule 15 deny ipv6 source 2001:DB8:100:40::/56 destination 2001:DB8:100:FF::/64 [Agg-01-acl6-basic-3000] rule 20 permit ipv6 [Agg-01-acl6-basic-3000] quit [Agg-01] interface Vlanif40 [Agg-01-Vlanif40] traffic-filter inbound acl ipv6 3000 # 管理面:只允许运维段 SSH 登录 [Agg-01] acl ipv6 3001 [Agg-01-acl6-basic-3001] rule 5 permit tcp source 2001:DB8:100:10::/64 destination 2001:DB8:100:FF::/64 destination-port eq 22 [Agg-01-acl6-basic-3001] rule 10 deny tcp destination-port eq 22 [Agg-01] user-interface vty 0 4 [Agg-01-ui-vty0-4] acl ipv6 3001 inbound

第一条规则用deny ipv6显式拒绝整段,不要只 deny 某个端口,否则同一个 /56 内换个地址就能绕过去。traffic-filter inbound的方向是从接口进入设备的流量,配在 Vlanif 上相当于给整个访客 VLAN 加了一道门。管理面那组要注意rule 10 deny tcp destination-port eq 22只写了目的端口,没写源,属于兜底拒绝,必须放在 permit 之后。

最容易忽视的一条:ACL 里一定要单独放行 ICMPv6。ND、PMTU 发现、重复地址检测全部依赖 ICMPv6,把 ICMPv6 一起 deny 掉,表现出的现象是“前几秒能通,之后突然全断”,排起来非常费时间。

# 兜底放行必要的 ICMPv6 类型 [Agg-01] acl ipv6 3000 [Agg-01-acl6-basic-3000] rule 1 permit icmpv6

4.3 验证方法:邻居表、抓包与 tracert 三件套

IPv6 排错不靠猜,靠三样东西:邻居表、抓包、路径追踪。顺序是先看本机有没有邻居,再看链路上有没有报文,最后看路径走到哪一跳断掉。

# 设备侧自检 <Core-01> display ipv6 interface Vlanif20 <Core-01> display ipv6 neighbors <Core-01> display ipv6 routing-table <Core-01> display ospfv3 peer <Core-01> display dhcpv6 pool POOL-DORM <Core-01> ping ipv6 2001:DB8:100:20::100 <Core-01> tracert ipv6 2001:DB8:100:10::100

display ipv6 neighbors是 IPv6 版的 ARP 表,终端拿到地址后必须在这里出现对应表项,没有表项说明 ND 没走通,先怀疑 RA 和 ACL。display ipv6 interface看接口是否 up、是否在发 RA、MTU 是多少,MTU 不一致是跨网段大包不通的常见原因。抓包用 eNSP 右键链路选择抓包,Wireshark 里过滤icmpv6.type == 134看 RA、135/136看邻居请求和通告,报文里的 M/O 标志能直接印证接口配置有没有生效。

终端侧用ipconfig /all(Windows)或ip -6 addr、ip -6 route(Linux)确认三件事:有没有拿到 /64 的全球地址、默认路由是不是指向网关的链路本地地址、DNS 有没有下发。三样缺一样,问题就定位到对应环节,不用整段重配。

5. 避坑与排查:五个把实验拖到半夜的细节

eNSP 的坑有一半来自模拟器本身,另一半来自 IPv6 与 IPv4 的思维差异。下面五条是这套拓扑里反复出现的,每条按现象、原因、解决写,遇到时按顺序对号入座就行。

5.1 终端拿不到全球地址,只有 fe80 开头

现象:PC 设置成自动获取,ipconfig只显示链路本地地址,网关也 ping 不通。

原因:接口 RA 发送处于抑制状态。华为设备部分版本的接口默认不发 RA,只配了ipv6 address是不够的,终端根本不知道前缀在哪。

解决:接口下补undo ipv6 nd ra halt,确认display ipv6 interface里的 RA 状态是开启,再在 Wireshark 里过滤 ICMPv6 type 134 确认报文真的发出去了。如果 RA 发了终端还是不生成地址,检查前缀长度是不是 64。

5.2 OSPFv3 邻居卡在 Init 或 Down

现象:display ospfv3 peer里邻居状态一直不进入 Full,或者根本看不到邻居。

原因:三种情况最常见——没配 router-id、接口没ipv6 enable、两端网络类型不一致。OSPFv3 的 router-id 是必填项,缺了进程起不来;接口没开 IPv6 时协议报文根本发不出去。

解决:先在进程下补router-id x.x.x.x,再逐接口确认ipv6 enable和ospfv3 1 area x,最后用display ospfv3 interface看两端网络类型,广播网络和 P2P 混着配会导致 Hello 参数不匹配。

5.3 地址配上了但同网段互 ping 不通

现象:两台终端都拿到了同前缀地址,互相 ping 不通,网关却可以通。

原因:同一段 /64 被配到了两个不同的 Vlanif 上,或者接入层 Trunk 没放行对应 VLAN。前者在设备上不会报错,因为 /64 在不同接口上确实可以共存,但转发表会混乱。

解决:display ipv6 interface brief把所有接口地址列出来对一遍,确认没有重复前缀;再看display port vlan active确认 Trunk 放行列表包含该 VLAN。

5.4 配完 ACL 后 DHCPv6 失效

现象:加了一条访问控制策略,新接入的终端全部拿不到地址,已有终端正常。

原因:ACL 把 DHCPv6 的 UDP 546/547 报文一起拦了,或者把 ICMPv6 全禁了导致 RA 和 ND 都断掉。IPv6 的地址分配链路比 IPv4 长,RA、Solicit、Advertise、Request、Reply 五步里任何一步被拦都会失败。

解决:在 ACL 最前面加 permit 规则放行udp source-port eq 547 destination-port eq 546和icmpv6,把业务限制规则放到后面。改完先reset dhcpv6 pool再让终端重新申请。

5.5 保存配置后重启,配置全丢

现象:eNSP 关掉重开,设备回到初始状态,之前的配置一点不剩。

原因:VRP 的配置在内存里,save才会写进启动配置文件;eNSP 的某些镜像在关闭拓扑时不会自动保存,直接点叉就丢了。

解决:养成return后save并确认Y的习惯,重要节点用display saved-configuration核对。另外把拓扑文件和每台设备的配置文本单独导出一份,存在同一个目录下,下次重建时照着粘贴比重新配快得多。

6. 把拓扑变成可复现资产:配置生成脚本与验收清单

拓扑跑通一次不算本事,能在一台新机器上十分钟重建出来才算。我的做法是把地址规划表写成结构化数据,用脚本批量生成 Vlanif 配置,再配一张验收清单逐项打勾。这样改一个前缀只需要动一处,不会出现“表改了配置没改”的低级错误。

import ipaddress # (vlan_id, 前缀, 描述) VLAN_PLAN = [ (10, "2001:DB8:100:10::/64", "教学区"), (20, "2001:DB8:100:20::/64", "宿舍区"), (30, "2001:DB8:100:30::/64", "服务器区"), (40, "2001:DB8:100:40::/64", "访客区"), ] TPL = """vlan {vid} interface Vlanif{vid} description {desc} ipv6 enable ipv6 address {gw}/{plen} undo ipv6 nd ra halt ospfv3 1 area 0.0.0.0 """ def gateway(prefix): net = ipaddress.ip_network(prefix) # 网关统一取每个 /64 的第一个可用地址 return str(net.network_address + 1) for vid, prefix, desc in VLAN_PLAN: net = ipaddress.ip_network(prefix) print(TPL.format(vid=vid, desc=desc, gw=gateway(prefix), plen=net.prefixlen))

这段脚本的关键在gateway():用ipaddress把前缀解析成网络对象,再加 1 得到网关地址,避免手算::1时数错位数。TPL里把undo ipv6 nd ra halt和 OSPFv3 挂载一起生成,是因为这两行几乎每个业务 VLAN 都要写,漏一行就多一次排查。输出的文本直接粘进设备,或者存成.cfg通过 TFTP 导入,批量重建时非常省事。

验收清单我固定用下面这几项,缺一项就不算完成:

检查项命令通过标准
接口地址display ipv6 interface brief所有 Vlanif 有全球地址且 up
RA 状态display ipv6 interface Vlanif10RA 开启,M/O 标志符合设计
邻居表display ipv6 neighbors终端表项存在且状态可达
路由表display ipv6 routing-table有默认路由和汇总路由
OSPFv3display ospfv3 peer邻居全部 Full
地址池display dhcpv6 pool可用地址数正常递减
端到端PC 上tracert外网地址路径跳数与设计一致

最后说个习惯。早些年我做这类实验,配置一跑通就直接截图交差,结果过两周要加一个 VLAN,打开拓扑发现自己都忘了当初为什么把某个口划进 Trunk。从那以后我每次重建拓扑,都强制走一遍“导配置、存表、写验收清单”这三步,多花十分钟,后面能省掉几个晚上。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询