简介:这份校园网设计方案文档出自高校计算机科学与技术学院网络课程设计,面向正在准备同类课设、课程实验或网络规划入门练习的学生,围绕计算机系、机械系、化工系、现教中心与行政共五个部门的组网需求展开。压缩包内只有 1 个 doc 文件,体积约 1.65MB,以文字配拓扑图的形式呈现完整设计报告。正文在仅有 4 个 C 类地址、需经 NAT 接入中国教育网的约束下给出两套可选方案,并从广播域规模、路由表冗长程度、路由器负载均衡、地址是否够分、VLAN 灵活度等方面逐条比较,最终选用私有地址加 VLAN 划分的三层交换式方案;随后铺开星型树状拓扑、接入层与汇聚层及核心层的设备选型、多模光纤与超五类双绞线的布线说明,并附硬件清单与报价、软件清单及 IP 地址子网划分过程。该文档已有 2959 人学习,可作为课程设计撰写、方案论证与答辩准备的参考。
1. 四个 C 类地址要养五个部门,这份课设的取舍全在地址表里
校园网的设计这类课程设计,网上一抓一大把,但九成是同一个模板换个封面:拓扑画得挺唬人,地址表随手一填,掩码和主机范围对不上也没人管。这份资源不一样的地方在于,它把「只有 4 个 C 类公网地址、却要喂饱 5 个部门、817 个信息点」这个矛盾摆到了台面上,并且老老实实给了两套方案做对比——一套全公网硬塞,一套私网加 NAT。真正值得拆的不是那几张拓扑图,而是它做取舍的那几个瞬间:为什么三个系必须走 192.168 私网、为什么行政和现教中心要共用一个 C 类去切、为什么核心层非要塞一台带 NAT 的边界设备。这些决定背后是地址够不够、广播域大不大、路由表长不长这三笔账。适合正在做网络课设、或者要给一个小型园区网做初版方案的人,照着往下走一遍,地址规划和设备清单这两块基本不会再翻车。
2. 地址规划落地:从 817 个信息点反推子网掩码与网关
2.1 把 255、32、20 这三个数字先摊开算
需求侧的数字很干净:三个系各 255 个信息点,行政 32 个,现教中心 20 个,合计 817。很多人拿到这个数字第一反应是「一个 C 类 254 个地址,255 个点差不多够」,这一步就已经埋雷了。一个 /24 网段去掉网络号和广播地址,可用主机地址只有 254 个,255 个信息点从算术上就装不下。哪怕实际不会同时在线,答辩时被问一句「第 255 台机器分什么地址」,场面会很难看。
处理办法有三种,按代价从低到高排:第一种是把三个系各升一级掩码,用 /23,可用主机 510 个,余量充足,代价是地址浪费翻倍;第二种是维持 /24,但在方案里明确写清楚「信息点数不等于并发主机数,按 60% 并发配 DHCP 池」,这是真实园区网最常见的做法;第三种是按楼层或按实验室再拆 VLAN,一个系拆成两个 /24,广播域更小,但 VLAN 间路由的配置量翻倍。
课设场景我一般建议走第一种,因为方案文档里需要的是一个自洽的数字,而不是一段解释。用 /23 之后,三个系的网段就不能再挨着 192.168.1.0、192.168.2.0、192.168.3.0 这么排了——192.168.0.0/23 会覆盖 192.168.0.0 到 192.168.1.255,直接把机械系的 192.168.2.0/24 顶掉一半。安全的排法是拉开间距:192.168.10.0/23、192.168.12.0/23、192.168.14.0/23,每个 /23 独占两个连续的 /24,互不重叠。
2.2 主干走私有地址加 NAT,而不是硬塞公网地址
原方案给了两条路。方案二把 222.192.1.0、222.192.2.0、222.192.3.0 直接分给三个系,222.192.4.0 切给行政和现教中心,全程公网地址,不划 VLAN,核心层只放一台带 NAT 的路由器。方案一反过来,三个系用 192.168 私网,只有行政和现教中心保留公网段,五个部门各划 VLAN,核心层用三台设备分担。
方案二的优势很直白:设备少、钱少、配置短。但它有两个致命问题。第一是地址用尽之后核心路由器自己没有地址可用——四个 C 类全分下去了,出口设备拿什么跟教育网对接?这不是理论问题,是真会卡住的实施问题。第二是广播域。五个部门不划 VLAN,等于八百多个信息点共享同一个广播域,ARP 广播、DHCP 发现报文全在同一个域里撞,业务一忙就开始丢包,而且这种丢包很难定位,属于典型的黑匣子故障。
方案一用私网换来了地址空间的充裕,代价是必须做 NAT。NAT 的代价要说清楚:外网无法主动访问内网主机,要发布服务就得配静态映射;源地址被转换之后,日志溯源变难;少数应用层协议带 IP 地址信息,需要 ALG 配合。但在校园网这个场景里,绝大多数终端都是「出去访问」而不是「被访问」,NAT 的代价完全可以接受。
提示:方案对比这一节不要只写「方案一更好」,要把「四个 C 类地址分给五个部门,必然有一个部门拿不到整段」这个算术矛盾写在最前面,这是整份方案的地基。
2.3 子网划分手算:/25 和 /26 差在哪
原文把 222.192.4.0 用 /25 切成两半,行政拿 222.192.4.0/25,现教中心拿 222.192.4.128/25。这个切法能跑,但对 32 个点和 20 个点来说浪费严重——每个 /25 有 126 个可用地址,行政只用 32 个,现教中心只用 20 个。
更省的做法是按需求算最小掩码。行政 32 个信息点,需要至少 32 个可用主机地址,/27 只有 30 个可用(32 减去网络号和广播),不够;往上取一级到 /26,可用 62 个,够用且留了一倍余量。现教中心 20 个点,/27 的 30 个可用刚好覆盖,还有 10 个余量。
| 部门 | 需求点数 | 原方案网段 | 原方案可用数 | 建议网段 | 建议可用数 |
|---|---|---|---|---|---|
| 行政 | 32 | 222.192.4.0/25 | 126 | 222.192.4.0/26 | 62 |
| 现教中心 | 20 | 222.192.4.128/25 | 126 | 222.192.4.64/27 | 30 |
| 预留 | - | 无 | - | 222.192.4.96/27 起 | 剩余整段 |
注意掩码一变,主机地址范围必须跟着重算。原文在地址表里写「222.192.4.0/25,主机地址 222.192.4.1 到 222.192.4.32」,这个范围跟 /25 的掩码是矛盾的——/25 的主机范围应该是 222.192.4.1 到 222.192.4.126,广播地址 222.192.4.127。同理「222.192.4.128/25,主机 222.192.4.129 到 222.192.4.148」也不对,正确范围是 222.192.4.129 到 222.192.4.254。这种「掩码写一套、地址段写另一套」的错在课设文档里极其常见,评阅时一眼就能看出来。
2.4 用脚本把地址表跑一遍,别信手写的地址段
手算子网最容易在广播地址和网关归属上出错。我的习惯是拿十几行 Python 把整张规划表跑一遍,输出网关、广播地址、可用数量和需求数量的对比,直接把「不足」标出来。
import ipaddress # (部门名, 规划网段, 需求信息点数) plan = [ ("计算机系", "192.168.10.0/23", 255), ("机械系", "192.168.12.0/23", 255), ("化工系", "192.168.14.0/23", 255), ("行政", "222.192.4.0/26", 32), ("现教中心", "222.192.4.64/27", 20), ] nets = [] for name, cidr, points in plan: net = ipaddress.ip_network(cidr, strict=False) nets.append(net) hosts = list(net.hosts()) # 自动排除网络号与广播地址 gw = hosts[0] # 约定第一个可用地址做网关 usable = len(hosts) - 1 # 网关占掉一个地址 flag = "OK" if usable >= points else "不足" print(f"{name:6s} {str(net):18s} 掩码={net.netmask} " f"网关={gw} 广播={net.broadcast_address} " f"可用={usable:3d} 需求={points:3d} {flag}") # 检查网段之间有没有重叠,重叠会让路由表出现二义性 for i in range(len(nets)): for j in range(i + 1, len(nets)): if nets[i].overlaps(nets[j]): print(f"!! 网段重叠: {nets[i]} <-> {nets[j]}")这段代码做了两件事。ip_network(cidr, strict=False)里的strict=False很关键,它允许传进去的地址不是网络号本身(比如 222.192.4.64/27 正好是网络号,但换成 222.192.4.70/27 也能自动纠正),避免手写时把主机地址当网段传进去。net.hosts()是生成器,转成列表之后len()就是去掉网络号和广播地址之后的可用主机数,这个数字比手算靠谱。第二个循环用overlaps()做两两重叠检测,专门抓「/23 吃掉相邻 /24」这类错误——上面把三个系从 192.168.1.0 挪到 192.168.10.0 起,就是因为 192.168.0.0/23 会和 192.168.2.0/24 打架。
跑完之后把输出直接贴进方案文档的地址规划表,网关、广播、可用数三项全部对齐,评审时找不到缺口。
3. 三层拓扑怎么摆:36 台接入、5 台汇聚和一条千兆主干
3.1 端口数反推:交换机的数量是算出来的,不是拍出来的
设备数量这一步很多人是估的,估出来跟拓扑图对不上。正确做法是从信息点数往上推。接入层用 24 口交换机,但要先确认这 24 口是不是全可用——有些型号标 24 口,实际是 24 个百兆电口加 2 个千兆上行口复用在最后两个电口上,真正能接终端的只有 22 个。按满配 24 口算,一个系 255 个点需要 255 ÷ 24 = 10.6,向上取整 11 台,11 台提供 264 个端口,余量 9 个,够接几台打印机和预留。
三个系就是 33 台接入交换机。行政 32 个点,32 ÷ 24 = 1.33,取 2 台,48 个端口,余量 16。现教中心 20 个点,1 台 24 口就够。接入层合计 36 台。
汇聚层每个部门 1 台,三个系 3 台,行政 1 台,现教中心因为只有 20 个点,接入和汇聚合成一台设备,所以汇聚层合计 5 台。核心层 1 台三层设备,负责 VLAN 间路由和出口。
| 层级 | 角色 | 端口规格 | 数量 | 上联方式 |
|---|---|---|---|---|
| 接入层 | 终端接入 | 24 口百兆电口 + 2 口千兆上行 | 36 | 双绞线到终端,光纤或双绞线到汇聚 |
| 汇聚层 | 部门汇聚 | 24 口百兆 + 千兆上行 | 5 | 千兆多模光纤到核心 |
| 核心层 | 三层转发 + 出口 | 模块化,含千兆光口 | 1 | 双绞线到边界路由器和防火墙 |
这里有个容易混淆的命名问题。原文硬件清单里写「二级交换机 5 台、三级交换机 36 台」,如果按核心是一级、汇聚是二级、接入是三级来读,数量正好对上;但如果按从下往上数,就全反了。写文档时最好直接写「汇聚层交换机 5 台、接入层交换机 36 台」,不要用一、二、三级这种相对说法,避免评阅时理解偏差。
3.2 介质与带宽:五类线跑百兆、多模光纤跑千兆的边界在哪
原文在介质描述上有一处自相矛盾:拓扑说明里写「接入层交换机与汇聚层交换机之间使用 100Mb/s 的双绞线连接」,但方案描述里又写「接入层到汇聚层和汇聚层到核心层使用多模光纤」。这两句必须选一个,实际工程里按后者走。
原因在距离。五类或超五类双绞线的理论最大传输距离是 100 米,这是水平子系统的硬约束,穿管走线之后实际能保证的往往只有 80 米出头。接入交换机放在楼层弱电间,汇聚交换机放在楼栋设备间,跨楼层走线的距离轻易超过 100 米,双绞线根本带不动。所以接入到汇聚这一段必须是光纤。
| 链路段 | 介质 | 速率 | 距离上限 |
|---|---|---|---|
| 终端到接入交换机 | 超五类非屏蔽双绞线 | 100Mbps | 100 米 |
| 接入交换机到汇聚交换机 | 多模光纤 50/125,850nm | 1000Mbps | 550 米 |
| 汇聚交换机到核心交换机 | 多模光纤 50/125,850nm | 1000Mbps | 550 米 |
| 核心交换机到边界路由器 | 超五类双绞线 | 100Mbps | 100 米 |
多模光纤选 50/125 而不是 62.5/125,是因为前者在 850nm 窗口的千兆传输距离能到 550 米,后者只有 220 米左右,校园网楼栋间距经常在这个区间里。光模块选 1000BASE-SX,两端成对配,一头多模一头单模是不通的,这是现场最容易犯的错——模块插上去灯不亮,先别怀疑光纤断了,先看两端模块型号是不是一致。
3.3 VLAN 划分与 Trunk、SVI 的配置骨架
五个部门各一个 VLAN,再加一个管理 VLAN。VLAN 号不用从 1 开始挨着排,留出空档以后好扩展。
| VLAN | 名称 | 网段 | 网关 | 所属部门 |
|---|---|---|---|---|
| 10 | CS | 192.168.10.0/23 | 192.168.10.1 | 计算机系 |
| 20 | ME | 192.168.12.0/23 | 192.168.12.1 | 机械系 |
| 30 | CHE | 192.168.14.0/23 | 192.168.14.1 | 化工系 |
| 40 | ADMIN | 222.192.4.0/26 | 222.192.4.1 | 行政 |
| 50 | CENTER | 222.192.4.64/27 | 222.192.4.65 | 现教中心 |
| 99 | MGMT | 10.10.99.0/24 | 10.10.99.1 | 设备管理 |
接入交换机上只需要建本部门的业务 VLAN 和管理 VLAN,Trunk 口放行到汇聚。配置骨架如下,以计算机系的一台接入交换机为例:
enable configure terminal vlan 10 name CS vlan 99 name MGMT exit # 终端接入口:划进业务 VLAN,关闭不必要的协商 interface range fastEthernet 0/1-22 switchport mode access switchport access vlan 10 spanning-tree portfast no shutdown exit # 上联口:Trunk,显式放行需要的 VLAN interface gigabitEthernet 0/1 switchport mode trunk switchport trunk native vlan 99 switchport trunk allowed vlan 10,99 no shutdown exit # 管理地址,便于远程登录和排障 interface vlan 99 ip address 10.10.99.11 255.255.255.0 no shutdown exit ip default-gateway 10.10.99.1switchport trunk allowed vlan这一行必须显式写。默认情况下 Trunk 口只放行 VLAN 1,业务 VLAN 不在列表里的帧会被直接丢弃,表现出的现象是「同一台交换机下同 VLAN 能通,跨交换机就不通」,非常迷惑。native vlan 99把未打标签的帧归到管理 VLAN,同时也顺手规避了 native VLAN 不匹配导致 CDP 报警的问题。spanning-tree portfast只加在接终端的口上,上联口绝对不能加,否则可能引入环路。
汇聚层和核心层之间的 Trunk 要放行全部业务 VLAN:
interface gigabitEthernet 0/24 switchport mode trunk switchport trunk native vlan 99 switchport trunk allowed vlan 10,20,30,40,50,99 no shutdown exitVLAN 间路由放在核心三层设备上,用 SVI 做网关:
ip routing interface vlan 10 ip address 192.168.10.1 255.255.254.0 no shutdown interface vlan 20 ip address 192.168.12.1 255.255.254.0 no shutdown interface vlan 30 ip address 192.168.14.1 255.255.254.0 no shutdown interface vlan 40 ip address 222.192.4.1 255.255.255.192 no shutdown interface vlan 50 ip address 222.192.4.65 255.255.255.224 no shutdownip routing是三层交换机的总开关,忘了这一行,SVI 配得再对也只能同网段通信,跨网段全部不通——这是新手最常踩的一个坑,而且show ip interface brief里所有接口都是 up 状态,看不出任何异常。
3.4 核心层的位置:防火墙、NAT 和服务器区挂在哪
核心层是一台三层交换机,往上接边界路由器和防火墙。这里有两种摆法。串接是把防火墙夹在核心交换机和边界路由器之间,所有南北向流量必须过防火墙,安全性最好,但防火墙成为单点,性能不够时整网卡顿。旁挂是把防火墙单独挂在核心的一个端口上,用 VLAN 引流把需要检查的流量引过去,灵活但配置复杂,课设里不容易讲清楚。
课设场景建议串接,拓扑图也最好画。服务器区单独划一个 VLAN 挂在核心交换机上,不要跟办公终端混在一起——服务器区需要被外网访问,NAT 静态映射只针对这一段做,办公终端走 PAT 出去,两条策略分开写,逻辑清晰。原文把服务器直接接在核心交换机上,这个做法没问题,但方案里要补一句「服务器区独立 VLAN、独立 ACL」,否则安全性这一节会显得空。
边界路由器或者防火墙上做 NAT。课设里为了简化,通常把 NAT 放在边界路由器上,防火墙只做包过滤;真实环境里更常见的是防火墙同时承担 NAT 和策略。两种都能写进方案,但要写清楚选择理由,不要两头都写一点。
4. 路由与 NAT 配置:EIGRP 20 那几行命令的完整上下文
4.1 动态路由还是静态路由:这个规模其实有得选
五个部门、一台核心、一台边界,链路数量不超过十条,静态路由完全够用,而且十行就能写完,评审时一眼能看懂。动态路由的价值在于链路状态变化时自动收敛,以及体现方案里「考虑了可扩展性」。
原文选了 EIGRP 20,配置短、收敛快,是这个规模下比较省事的选择。但要注意 EIGRP 早期是私有协议,只在特定厂商设备之间互通,如果方案里混用了不同厂商的设备,EIGRP 邻居是起不来的,这时候要么统一设备品牌,要么换 OSPF。OSPF 的配置稍微长一点,但通用性好,跨厂商没问题。
| 方案 | 配置量 | 收敛速度 | 跨厂商 | 适用场景 |
|---|---|---|---|---|
| 静态路由 | 最小 | 无收敛概念 | 完全兼容 | 拓扑固定、链路少的课设 |
| EIGRP | 小 | 快 | 受限 | 单一厂商设备、需要展示动态路由 |
| OSPF | 中 | 较快 | 完全兼容 | 多厂商混用、后续要扩展 |
我的建议是 EIGRP 和静态路由各写一份,正文用 EIGRP 展示动态路由能力,附录补一段静态路由作为等价方案。这样既满足「用了动态路由协议」的评分点,又体现了对边界的理解。
4.2 EIGRP 20 配置逐行拆解,顺便纠几个常见写法
原文给的那几行是这样的:
# conf t # router eigrp 20 # passive-interface serial0 # passive-interface serial1 # network ABCD # network XXXX # no auto-summary # exit这段配置有三个问题。第一,#在设备上是特权模式的提示符,不是命令的一部分,照着敲会报错;正常流程是enable进特权模式,configure terminal进全局配置模式,提示符会变成(config)#。第二,network ABCD和network XXXX是占位符,必须换成真实的网络地址加反掩码,只写网络号在某些实现里会按有类网络处理,结果通告了一大片不该通告的网段。第三,passive-interface只应该加在面向终端的接口上,加在串口上会让这条链路不发 Hello,邻居直接起不来。
改成能直接跑的版本:
enable configure terminal router eigrp 20 eigrp router-id 10.0.0.1 network 192.168.10.0 0.0.1.255 network 192.168.12.0 0.0.1.255 network 192.168.14.0 0.0.1.255 network 222.192.4.0 0.0.0.255 passive-interface gigabitEthernet 0/1 no auto-summary exit write memory逐行说明。router eigrp 20里的 20 是自治系统号,不是 VLAN 号也不是进程号随便取,两端的 AS 号必须完全一致,不一致邻居起不来,而且不会有任何报错提示,只能靠show ip eigrp neighbors看到空表。eigrp router-id显式指定一个,避免设备自动选举出重复的 router-id 导致邻居抖动。
network后面的反掩码是通配符,0 表示必须匹配、255 表示忽略。192.168.10.0 0.0.1.255匹配的是 192.168.10.0 到 192.168.11.255,正好是一个 /23。如果按习惯写成0.0.0.255,通告的就只有 192.168.10.0/24,192.168.11.0/24 那一半主机找不到路由——这个错误极其隐蔽,因为show run里的配置看起来完全正常。
passive-interface放在面向接入层的接口上,作用是抑制这个接口发送 EIGRP Hello 包,但接口所在网段仍然会被通告。这样既避免了向终端侧发组播,又不影响路由传播。上联到核心的接口不能加。
no auto-summary在跨有类边界时必须加。EIGRP 默认会在 A/B/C 类网络的边界自动汇总,192.168.10.0/23 和 192.168.12.0/23 会被汇总成 192.168.0.0/16 之类的有类网络通告出去,接收方路由表里会出现一条巨大的汇总路由,指向错误的下一跳。
4.3 NAT 配置:从私网到教育网出口
出口做 PAT,把三个系的私网地址和行政、现教的公网地址统一转换成出口接口地址。核心配置如下:
# 内网侧接口 interface gigabitEthernet 0/0 description to-core-switch ip address 222.192.4.254 255.255.255.192 ip nat inside no shutdown exit # 外网侧接口,203.0.113.0/30 为文档示例地址 interface gigabitEthernet 0/1 description to-education-network ip address 203.0.113.2 255.255.255.252 ip nat outside no shutdown exit # 只对三个系的私网段做转换,行政与现教已有公网地址可直通 access-list 1 permit 192.168.10.0 0.0.1.255 access-list 1 permit 192.168.12.0 0.0.1.255 access-list 1 permit 192.168.14.0 0.0.1.255 ip nat inside source list 1 interface gigabitEthernet 0/1 overload # 对外发布一台服务器,做静态一对一映射 ip nat inside source static 192.168.10.10 203.0.113.1 # 回程路由,指向教育网侧下一跳 ip route 0.0.0.0 0.0.0.0 203.0.113.1overload是 PAT 的关键字,多个内网地址复用同一个公网地址的不同端口,这是地址不足场景下的标准解法。ACL 1 只放行三个私网段,行政和现教中心因为本身就是公网地址,不做转换直接路由出去,这样可以省下 NAT 会话表资源,也方便外网直接访问这两个部门的服务。
静态映射那一行是为服务器准备的。没有这一行,外网只能看到出口地址,访问不到内网服务器。注意静态映射的公网地址不能和接口地址相同,也不能落在overload使用的地址池里,否则会冲突。
ip nat inside和ip nat outside这两个标记必须配对出现。只标了 inside 没标 outside,转换表建不起来,现象是内网能 ping 通网关、能 ping 通出口地址,就是上不了外网,show ip nat translations一条记录都没有。
4.4 验证命令清单:show 什么、看哪一列
| 命令 | 看什么 | 期望结果 |
|---|---|---|
show ip interface brief | 接口状态与地址 | 所有在用接口 up/up,地址与规划表一致 |
show vlan brief | VLAN 与端口归属 | 每个业务 VLAN 下有正确的接入端口 |
show interfaces trunk | Trunk 口与放行列表 | 上联口 trunking,allowed VLAN 包含业务段 |
show ip route | 路由表 | 有直连网段、有 EIGRP 学到的远端网段、有默认路由 |
show ip eigrp neighbors | 邻居表 | 邻居地址、接口、uptime 正常,无频繁 flap |
show ip nat translations | NAT 会话表 | 有 inside local 到 inside global 的映射记录 |
show ip nat statistics | 转换计数 | hits 在增长,misses 不持续飙升 |
show ip route里要重点看两列:管理距离和度量值。直连是 0,静态是 1,EIGRP 内部路由是 90,如果看到 192.168.12.0/23 这条路由的管理距离是 90 但度量值异常大,说明路径绕了,多半是某条链路的带宽参数没配对。show ip eigrp neighbors里如果 uptime 一直是几秒,说明邻居在反复重建,常见原因是链路质量差或者 hello 间隔不匹配。
5. 避坑与排查:五个能把方案打回重做的细节
5.1 地址表和掩码对不上,配完就有主机失联
现象:按方案文档的地址表配完,行政部门第 30 号之后的机器 ping 不通现教中心的机器,网关能通、跨部门不通。
原因:文档里有两套互相矛盾的地址规划。正文写「将 222.192.1.0 划分为两个子网,222.192.1.129 到 222.192.1.160 给行政」,地址表里写的却是「222.192.4.0/25,主机 222.192.4.1 到 222.192.4.32」,配置片段里又出现了 222.192.1.x。三处不一致,无论按哪一处配,总有两处对不上。另外 /25 的掩码配上去之后,222.192.4.32 这个地址其实还在同网段内,主机不会失联,但如果按 /27 配,222.192.4.33 就跑到网段外了,网关直接不可达。
解决:以掩码为准重算地址段,不要以手写的地址范围为准。用 2.4 节那段脚本跑一遍,把网关、广播、可用范围三个数字固定下来,然后全文替换。文档里凡是出现 IP 的地方——地址表、配置片段、拓扑图标注、测试用例——必须来自同一份输出。改完之后再检查一遍:任何一台主机的地址减掉掩码,必须等于网络号。
5.2 同 VLAN 通、跨交换机不通,Trunk 没放行
现象:计算机系一楼的两台接入交换机,接在同一台上的两台 PC 能互相 ping 通,接到不同交换机上的两台 PC 不通。VLAN 配置看起来完全一样。
原因:上联口配了switchport mode trunk,但没有配switchport trunk allowed vlan,默认只放行 VLAN 1。业务 VLAN 10 的帧到了 Trunk 口直接被丢弃,而接入口的show vlan brief显示一切正常,所以从接入侧完全看不出问题。
解决:在上联口显式放行需要的 VLAN,switchport trunk allowed vlan 10,99,汇聚侧对应接口放行全部业务 VLAN。改完之后用show interfaces trunk确认 allowed 列表和 active 列表一致——有时候 allowed 里写了但 active 里没有,说明对端没建这个 VLAN,需要先去对端把 VLAN 建出来。还有一个隐蔽变体是 native VLAN 两端不一致,show interfaces trunk会报 native vlan mismatch,虽然不影响带标签的帧,但会污染管理流量。
5.3 NAT 配完内网上不了网,转换表是空的
现象:内网主机能 ping 通核心网关,能 ping 通边界路由器的内网口地址,就是访问不了外部地址,show ip nat translations一条记录都没有。
原因通常有三个。一是接口上只标了ip nat inside没标ip nat outside,NAT 不知道哪个方向是出口。二是 ACL 里的网段写错,比如把 /23 写成0.0.0.255的反掩码,只匹配了前半个 /24,后半个 /24 的主机不被转换。三是缺少默认路由,包到了边界路由器但不知道怎么出去,被丢弃。
解决:先show ip interface确认两个接口的 NAT 标记都在;再show access-lists看匹配计数,如果 permit 计数一直是 0,说明 ACL 没匹配上,回头检查反掩码;最后show ip route确认有0.0.0.0/0的默认路由,下一跳指向教育网侧。三步走完基本能定位。还有一个容易忽略的点:如果内网服务器做了静态映射,从内网访问这个公网地址会失败,这是 NAT 的发夹弯问题,需要在边界设备上配 hairpin 或者用内网 DNS 拆分解决,课设里可以直接在文档里注明「内网访问服务器使用私网地址」。
5.4 EIGRP 邻居起不来,或者路由表里出现等价路由
现象:show ip eigrp neighbors是空表,但接口都是 up 的,直连能通。或者邻居起来了,但show ip route里同一个目的网段出现两条度量值相同的路由,流量在两个方向来回跳。
原因:邻居起不来的头号原因是 AS 号不一致,两端一个写 20 一个写 10,不会有任何报错,只是静默不建立。第二常见是network语句的通配符写错,通告的网段跟对端不在一个子网。等价路由则是因为网络里存在环路或者两条链路带宽参数被配成一样,EIGRP 做等价负载均衡,本来是对的,但如果其中一条链路实际不可用就会出现间歇性丢包。
解决:先在两端分别show run | section router eigrp,逐字比对 AS 号和 network 语句。AS 号一致之后,用show ip eigrp interfaces确认哪些接口参与了 EIGRP,passive-interface加错的接口不会出现在这个列表里。等价路由的问题用show ip eigrp topology看后继和可行后继,如果可行后继的下一跳指回自己,说明出现了环路,回头检查重分发或者静态路由有没有互相指。
5.5 设备清单和拓扑图数量对不上
现象:拓扑图上数出来 33 台接入交换机,硬件清单里写 36 台;或者清单里写「二级交换机 5 台、三级交换机 36 台」,但正文描述里三个系各 11 台接入加 1 台汇聚,怎么算都对不上。
原因:命名口径不统一。有的地方按「核心一级、汇聚二级、接入三级」数,有的地方按「靠近用户的是第一级」数,同一份文档里两种口径混用。另外现教中心只有 20 个点,接入和汇聚合成一台设备,这一台到底算接入还是算汇聚,两处描述不一致。
解决:全文统一用「核心层 / 汇聚层 / 接入层」三个词,不用一级二级三级。设备清单按层级分组,每台设备编号,编号和拓扑图上的标号一一对应。现教中心那台单独注明「接入与汇聚合一」,并在清单里同时计入两个层级的说明栏。定稿前拿拓扑图逐个数一遍,数出来的数字必须等于清单里的数字,这是评阅时最容易被抓的低级错误。
6. 交付前的验收:一张自查表和三个能省半天时间的技巧
方案写完不等于能交。我习惯在提交前跑一遍完整验收,把能自动检查的都检查掉,剩下的靠人工过。
| 检查项 | 方法 | 通过标准 |
|---|---|---|
| 地址规划自洽 | 跑 2.4 节的脚本 | 无「不足」、无「网段重叠」 |
| 设备数量与拓扑一致 | 拓扑图逐台点数 | 与清单数字完全相等 |
| 掩码与主机范围匹配 | 抽查每个网段的网关和广播地址 | 网关在网络号加一,广播在下一个网段减一 |
| VLAN 与网段一一对应 | 对照 VLAN 表和地址表 | 每个业务 VLAN 有唯一网段,无重复 |
| Trunk 放行完整 | show interfaces trunk | allowed 列表覆盖全部业务 VLAN |
| 路由可达 | 从每个 VLAN 各取一台主机 ping 出口 | 全部通,traceroute 路径不绕 |
| NAT 生效 | show ip nat translations | 有记录,hits 持续增长 |
三个能省时间的技巧。
第一个是把拓扑图分层导出。画图时给核心层、汇聚层、接入层各建一个图层,导出 PNG 之前把接入层的 36 台设备隐藏掉,得到一张干净的骨干图;再单独导出一张某个系的接入详图。答辩时先放骨干图讲架构,再放详图讲端口密度,两张图讲完,评审基本不会追问设备数量。如果所有设备堆在一张图上,36 台交换机挤成一片,谁看都费劲。
第二个是把配置做成模板,用变量替换。36 台接入交换机的配置除了管理地址和上联口号之外完全一样,手敲 36 遍必然出错。我的做法是写一个占位符模板,{{MGMT_IP}}、{{UPLINK_PORT}}、{{VLAN_ID}}三个变量,用一段脚本读 CSV 批量生成配置文件,再逐台粘贴。生成之后先拿一台在模拟器里跑通,确认没有语法错误再批量下发。这一步做完,配置一致性问题的排查时间能省掉大半。
第三个是用抓包验证 VLAN 间路由,而不是只看 ping 通。在核心交换机和汇聚交换机之间的 Trunk 链路上抓包,看跨 VLAN 的流量有没有被打上 802.1Q 标签、标签里的 VLAN ID 对不对。ping 通只能说明三层可达,标签错乱的情况下有时候也能通,但性能会莫名其妙地差。抓一次包,看一眼标签,比反复 ping 半天有用得多。
血泪教训是早些年我第一次交这类方案,地址表、配置片段、拓扑图三处的 IP 各写各的,自己检查了三遍没看出来,交上去被打回来重做,改了两天才对齐。从那以后我每次定稿前都强制走一遍上面那张验收表,尤其是第一条,脚本跑不过就不往下走。希望帮到你。
本文还有配套的精品资源,点击获取