简介:华北电力大学计算机网络综合实验报告与配套主要代码,适合计算机网络课程设计、综合实验或网络工程实训的本科生参考使用。报告以互联网综合设计与网络协议分析为主线,完整呈现VLAN划分与VLAN间通信、单臂路由与三层交换机路由、OSPF多区域划分与cost值调优、静态路由、RIP v2、静态NAT/动态NAT/地址复用、DHCP动态分配,以及对TCP建立与释放报文的抓包分析等内容,并涵盖ACL访问控制列表安全配置的选做方案。文档中对网络拓扑结构设计、设备接口IP规划、交换机与路由器的具体配置命令、数据帧格式分析均有详细说明,可直接支撑实验报告撰写与配置复盘。资源以单份doc文档交付,压缩包大小约21.91MB,结构紧凑便于浏览。目前已有154人学习,适合正在完成课程设计答辩或需要对照完整实验流程查漏补缺的同学。
1. 这份华北电力大学网络实验报告:从 VLAN 到 OSPF 再到 NAPT 的一条完整链路
做网络方向的人看到「实验报告」四个字,通常第一反应是模板和排版。但这份华北电力大学 2023-2024 学年第一学期的《计算机网络综合实验》报告,实际价值在于它把企业组网里最常见的三件事——VLAN 间通信、OSPF 多区域、NAPT 地址复用——串成了一条可验证的链路,而且每一步都给了能直接抄的交换机、路由器命令。报告里的拓扑用了 4 台主机、2 台二层交换机、4 台路由器,规模不大,但覆盖了单臂路由、OSPF 三区域、动态 NAT 和 Wireshark 抓包分析,适合正在做课程设计的学生,也适合想快速回顾设备配置要点的从业者。整份报告是 TXT 文本加代码块的形式,配置命令可以直接复制到模拟器里跑,不需要额外整理。
2. VLAN 划分与单臂路由:端口规划、trunk 中继与子接口调试
2.1 拓扑与 IP 规划:先把地址表列清楚再动设备
这份实验的拓扑不复杂,但 IP 规划容易看花眼。四台路由器分别是 RSR20-12-1、RSR20-12-2、RSR20-12-3、RSR20-12-4,两台二层交换机是 S2628-12-1 和 S2628-12-2。三台 PC 挂在二层交换机下面,PC123 单独挂在 RSR20-12-4 的 ge0/0 口上,充当服务器角色。地址规划如下表:
| 设备 | 接口 | IP 地址 | 网关 |
|---|---|---|---|
| PC121 | 实验网卡 | 192.168.4.2 / 24 | 192.168.4.1 |
| PC122 | 实验网卡 | 192.168.3.2 / 24 | 192.168.3.1 |
| PC124 | 实验网卡 | 192.168.3.3 / 24 | 192.168.3.1 |
| PC123 | 实验网卡 | 192.168.5.2 / 24 | 192.168.5.1 |
| RSR20-12-3 | gi0/0.1(VLAN10) | 192.168.3.1 / 24 | — |
| RSR20-12-3 | gi0/0.2(VLAN20) | 192.168.4.1 / 24 | — |
| RSR20-12-3 | gi0/1 | 192.168.10.2 / 24 | — |
| RSR20-12-2 | ge0/0 | 192.168.7.1 / 24 | — |
| RSR20-12-2 | ge0/1 | 192.168.10.1 / 24 | — |
| RSR20-12-1 | ge0/0 | 192.168.8.1 / 24 | — |
| RSR20-12-1 | ge0/1 | 192.168.7.2 / 24 | — |
| RSR20-12-4 | ge0/0 | 192.168.5.1 / 24 | — |
| RSR20-12-4 | ge0/1 | 192.168.8.2 / 24 | — |
注意 PC122 和 PC124 在同一个网段 192.168.3.0/24,都在 VLAN10 里;PC121 在 192.168.4.0/24,属于 VLAN20。VLAN 间要通信,必须经过路由器。这里用的是单臂路由方案,所以 RSR20-12-3 的 gi0/0 被拆成了两个子接口,分别封装 dot1q 10 和 dot1q 20。我拿到这拓扑的第一反应是:PC123 为什么不一起挂交换机上?后面看到 NAT 和抓包实验才明白,PC123 单独接在 RSR20-12-4 上,是为了模拟跨路由器访问服务器的场景,NAT 转换和 Wireshark 抓包都需要这种跨设备流量。
2.2 交换机 VLAN 配置与 trunk 中继:先加 VLAN 再分端口
VLAN 配置的关键是顺序:先在交换机上创建 VLAN,再把端口划进去,最后配 trunk。报告里 S2628-12-2 的配置是这样的:
# 进入交换机全局配置模式后,创建 VLAN 并命名 vlan 10 name work1 vlan 20 name work2 # 将 fa0/1 口设为 access 模式并划入 VLAN10 int fa0/1 switchport mode access switchport access vlan 10VLAN 命名不是必须的,但建议写上。name 只是本地标识,不影响数据转发。switchport mode access把端口强制设为接入模式,switchport access vlan 10指定该端口属于哪个 VLAN。如果端口之前被配置过 trunk,必须先切回 access 模式再划 VLAN,否则会报错。
S2628-12-1 上的操作类似,但端口分配逻辑要看清:fa0/2 给 VLAN20,fa0/3 给 VLAN10。从拓扑上看,PC121 连在 S2628-12-1 的 fa0/2 口上,所以这个口划进 VLAN20;PC122 和 PC124 连在 S2628-12-2 的 fa0/1 口上,所以 fa0/1 划进 VLAN10。端口和物理设备的对应关系一定要对着拓扑图核对,我见过不少人把端口划反,结果两台 PC 明明在同一台交换机上却 ping 不通。
2.3 trunk 配置与单臂路由子接口:VLAN 间通信的最后一跳
两台交换机之间要传递多个 VLAN 的数据,必须配置 trunk。S2628-12-2 上要把连到 S2628-12-1 的端口设为 trunk:
# 在 S2628-12-2 上配置 trunk 端口 int fa0/2 switchport mode trunk int fa0/13 switchport mode trunk # 在 S2628-12-1 上配置 trunk 端口 int fa0/1 switchport mode trunktrunk 的作用是让 VLAN10 和 VLAN20 的帧都能跨交换机传输。默认情况下 trunk 允许所有 VLAN 通过,不需要额外指定 vlan allowed list。如果实验环境里交换机支持 DTP,两端都设置成 trunk 会更稳定;只在一端配置有可能协商失败。配置完 trunk 后可以用show vlan brief检查 VLAN 和端口对应关系,用show interfaces trunk检查中继状态。
接下来是单臂路由。RSR20-12-3 的 gi0/0 口用来连接交换机,子接口配置如下:
# 进入物理接口,然后创建子接口 gi0/0.1 int gi0/0 int gi0/0.1 encapsulation dot1q 10 ip address 192.168.3.1 255.255.255.0 exit # 创建子接口 gi0/0.2 int gi0/0.2 encapsulation dot1q 20 ip address 192.168.4.1 255.255.255.0encapsulation dot1q 10是告诉路由器这个子接口接收带 VLAN10 标签的帧。ip address给子接口配上网关地址,这个地址就是 VLAN10 内 PC 的默认网关。注意原报告里写的是192.168.3..1,这是文档笔误,实际配置应该是192.168.3.1。配置完子接口后,PC122(VLAN10)ping PC121(VLAN20),数据包从 PC122 发出,经交换机打上 VLAN10 标签,送到路由器 gi0/0.1 子接口,路由器再转发到 gi0/0.2 子接口,换成 VLAN20 标签回给 PC121。这一步通了,说明单臂路由链路完整。
3. OSPF 三区域配置:area0 必须在中间,network 语句别把反掩码写错
3.1 区域规划:为什么 area0 是骨干,错位会导致路由表缺项
OSPF 实验的核心考核点是「划分不少于 3 个区域」。报告里把四个路由器组成的区域设计成了 area0,RSR20-12-3 左侧区域为 area1,RSR20-12-4 右侧区域为 area3。为什么 area0 必须放中间?因为 OSPF 规定非骨干区域必须直接连接到骨干区域,所有区域间通信都要经过 area0。如果像报告第一次实验那样把 area1 放中间,两个非骨干区域隔着一个区域号为 1 的区域,直连的邻居关系虽然能建立,但路由信息在 LSA 传播时会被丢弃,路由表自然就不全。
拓扑里四个路由器之间的链路形成了 area0:192.168.10.0/24(RSR20-12-2 到 RSR20-12-3)、192.168.7.0/24(RSR20-12-1 到 RSR20-12-2)、192.168.8.0/24(RSR20-12-1 到 RSR20-12-4)。左侧是 RSR20-12-3 的两个子接口网段 192.168.3.0/24 和 192.168.4.0/24,划到 area1;右侧是 RSR20-12-4 的 192.168.5.0/24,划到 area3。整个自治系统一共 6 个网段,每个路由器都应该在路由表里看到全部 6 个网段。如果某个网段缺失,优先检查是不是区域划分错了。
3.2 四台路由器的 OSPF 配置:进程号、network 语句与通配符掩码
OSPF 配置的核心是 network 语句,格式是network 网段 通配符掩码 area 区域号。通配符掩码是子网掩码的反码,255.255.255.0 对应 0.0.0.255。四台路由器配置如下:
# RSR20-12-3:左侧接 VLAN10/VLAN20,右侧接 area0 骨干 router ospf 10 network 192.168.3.0 0.0.0.255 area 1 network 192.168.4.0 0.0.0.255 area 1 network 192.168.10.0 0.0.0.255 area 0 # RSR20-12-2:中间路由器,全部接口属于 area0 router ospf 10 network 192.168.10.0 0.0.0.255 area 0 network 192.168.7.0 0.0.0.255 area 0 # RSR20-12-1:中间路由器,全部接口属于 area0 router ospf 10 network 192.168.7.0 0.0.0.255 area 0 network 192.168.8.0 0.0.0.255 area 0 # RSR20-12-4:右侧路由器,一个接口在 area0,一个接口在 area3 router ospf 10 network 192.168.8.0 0.0.0.255 area 0 network 192.168.5.0 0.0.0.255 area 3router ospf 10中的 10 是进程号,只在本地有意义,四台路由器可以不同,习惯上统一。network 语句里的网段要写接口所在的网络地址,而不是接口 IP。比如 RSR20-12-3 的 gi0/0.1 地址是 192.168.3.1,network 语句就要写 192.168.3.0 而不是 192.168.3.1。如果写成了主机地址,通配符掩码也要改,新手最容易在这里翻车。
报告里给的代码在设备对应关系上有点乱,RSR20-12-2 那段实际是 RSR20-12-3 的配置,对照 IP 地址和区域划分就能看出来。我在标注设备时按拓扑和 IP 对应关系做了重排,实际使用时建议每台设备配置前先show ip interface brief确认接口地址,再写 network 语句。
3.3 验证路由表和链路状态数据库:6 个网段缺一不可
配置完成后,逐台路由器查看路由表和 OSPF 邻居状态:
# 查看路由表 show ip route # 查看 OSPF 邻居 show ip ospf neighbor # 查看 OSPF 链路状态数据库 show ip ospf database正常状态下,每台路由器应该看到全部 6 个网段的路由。如果某台路由器少了一条,先看邻居是否 Full 状态:show ip ospf neighbor输出里 State 列如果显示 Full,说明邻居关系建立成功;如果卡在 Exstart 或 Exchange,多半是 MTU 不匹配或区域号写错。报告里提到从 PC121 ping PC123 可以通,PC121 在 RSR20-12-3 下面,PC123 在 RSR20-12-4 下面,这个 ping 要跨越 4 台路由器,通了就说明 OSPF 全链路生效。
OSPF 的 cost 值实验是加分项。默认 cost 是 10^8 / 带宽,百兆口是 1,千兆口也是 1。如果想手动改,在接口模式下用ip ospf cost 100调整。改完 cost 后路由表可能变化,可以用show ip ospf interface查看每个接口的 cost。报告里没细写改 cost 后路由怎么变化,但设计任务里有这一项,操作方法是改完立刻看路由表的 next-hop 是否切换。
4. NAPT 地址复用:一张地址池表让三台内网主机同时上网
4.1 NAPT 与动态 NAT 的区别:为什么要用 overload
实验要求配置动态 NAT 或 NAPT 实现局域网访问互联网。在只有 4 台主机、1 个公网 IP 的条件下,唯一可行的方案是 NAPT(PAT),也就是端口地址复用。普通动态 NAT 是一对一映射,有多少公网 IP 才能带多少台内网主机;NAPT 通过端口号区分不同内网会话,一个公网 IP 可以带几百台内网主机。报告中把地址池设置为单个 IP 192.168.10.5,配合overload关键字,就是典型的 NAPT 配置。
这里有一个容易混淆的点:internet 接口是 RSR20-12-3 的 gi0/1,地址是 192.168.10.2。地址池里的 192.168.10.5 和接口 IP 不在同一个网段吗?在同一个网段,但地址池里的地址是「借用」的,不一定需要配置在物理接口上,只要这个地址在出接口的网段内即可。实际企业环境里,这个地址通常是运营商分配的公网 IP。
4.2 NAPT 配置命令:地址池、ACL 和内外网接口标记
核心配置全部在 RSR20-12-3 上完成:
# 定义 NAT 地址池,名字 abc,起始和结束地址都是 192.168.10.5 ip nat pool abc 192.168.10.5 192.168.10.5 netmask 255.255.255.0 # 定义 ACL,允许内网网段通过 NAT 转换 access-list 10 permit 192.168.0.0 0.0.255.255 # 将 ACL 10 匹配的流量关联到地址池 abc,overload 开启端口复用 ip nat inside source list 10 pool abc overload # 标记内外网接口 int gi0/1 ip nat outside int gi0/0.1 ip nat inside int gi0/0.2 ip nat insideaccess-list 10 permit 192.168.0.0 0.0.255.255用了反掩码 0.0.255.255,匹配的是 192.168.0.0 到 192.168.255.255 整个 B 段。这个写法比较粗,实验环境里够用;生产环境建议缩小范围到具体的业务网段,避免内网其他段也被 NAT 出去。
ip nat inside source list 10 pool abc overload是核心命令。inside指定是内网到外网的转换方向,source list 10指定哪些源 IP 需要转换,pool abc指定转换后的 IP 池,overload表示启用端口复用。如果没有overload,这台设备最多只能同时让一台内网主机上网,因为地址池里只有一个 IP。忘记写 overload 是 NAPT 实验里最常见的低级错误。
另外注意接口标记要在 NAT 配置之后做,或者至少确认接口名正确。报告里用的是 gi0/0.1 和 gi0/0.2 子接口,如果标记在物理接口 gi0/0 上,VLAN 子接口的流量不会触发 NAT,因为 NAT 检查的是流量实际入接口。
4.3 验证地址转换:show 命令看映射表
配置完成后,从 PC121 ping RSR20-12-1 的接口 192.168.8.2,同时在 RSR20-12-3 上查看转换条目:
# 查看 NAT 转换映射 show ip nat translations # 查看 NAT 统计信息 show ip nat statistics正常输出会显示内网地址 192.168.4.2 转换成了 192.168.10.5,并且带上了端口号。如果 ping 不通,先排除路由问题,确认 RSR20-12-3 有到 192.168.8.0/24 的路由;再看 ACL 是否匹配,show access-lists 10能看匹配计数;最后检查接口标记,show ip nat statistics里会显示 inside/outside 接口是否正确。
这里有个排查思路可以参考:从 PC121 上 ping 外网地址,如果通了但show ip nat translations没有变化,说明流量没有经过 NAT 设备;如果转换表有记录但 ping 不通,说明回来的流量没有正确解转换,检查地址池里的地址是否可达。实验中为了验证 NAPT,我习惯同时开两个 PC 的 ping,再查看转换表,能看到两条不同的内网 IP 映射到同一个公网 IP 的不同端口,这就是 overload 的效果。
5. 避坑排查:网关遗漏、区域错位、地址池不匹配的三个翻车现场
5.1 网关未配置导致 VLAN 间通信失败
- 现象:PC 之间 ping 不通,但在同一台交换机上、同 VLAN 的 PC 可以互 ping。
- 原因:PC 只配置了 IP 地址和子网掩码,没有配置默认网关。VLAN 间通信的数据包要发给网关,由路由器转发;没有网关,PC 认为目标地址不可达,直接把包丢弃。
- 解决:在每台 PC 上配置对应 VLAN 的网关地址。VLAN10 的 PC(PC122、PC124)网关设为 192.168.3.1,VLAN20 的 PC(PC121)网关设为 192.168.4.1。配置完用
ipconfig /all查看,然后 ping 网关确认链路。
5.2 OSPF 区域划分错位导致路由表缺项
- 现象:每台路由器
show ip route只能看到部分网段,跨路由器 ping 不通,但直连网段正常。 - 原因:把 area1 放在了自治系统中间,两个非骨干区域之间隔着非骨干区域,违背 OSPF 的区域设计规则。非骨干区域之间不直接交换路由信息,导致部分 LSA 无法传播。
- 解决:重新规划区域,必须把 area0 放在中间。本实验的拓扑中,四台路由器之间的三条链路组成 area0,RSR20-12-3 左侧的 VLAN 网段划到 area1,RSR20-12-4 右侧的网段划到 area3。修改区域后用
clear ip ospf process重启 OSPF 进程,再查看路由表。
5.3 NAT 地址池 IP 与出接口网段不匹配
- 现象:NAPT 配置完成后,内网 PC ping 不通外部路由器接口,
show ip nat translations没有新增条目。 - 原因:地址池里的 IP 不在路由器出接口的网段内,路由器不知道这个地址应该从哪个接口发出去。UT 的另一个常见错误是地址池首尾地址写反,比如写成
192.168.10.5 192.168.10.1,设备会报错或只有部分地址可用。 - 解决:查看路由器出接口地址,把地址池起始和结束地址都改成出接口网段内的有效 IP。实验里出接口 gi0/1 是 192.168.10.2,地址池用 192.168.10.5 没问题,如果改成 192.168.1.5 就不行。改完用
no ip nat pool abc删除旧地址池,重新配置。
5.4 OSPF network 语句里的网络地址写错
- 现象:OSPF 邻居能建立,但路由条目不完整,或者某台路由器宣告了不存在的网段。
- 原因:把接口 IP 直接写进了 network 语句。比如接口地址是 192.168.3.1,network 语句写的是
192.168.3.1 0.0.0.255 area 1。通配符掩码 0.0.0.255 会匹配 192.168.3.0 到 192.168.3.255 的所有地址,虽然最终效果一样,但容易造成混淆;更严重的是把 network 写成192.168.3.1 0.0.0.0 area 1,只宣告单个主机地址,效果不同。 - 解决:network 语句固定写网络地址。接口地址是 192.168.3.1/24,就写
network 192.168.3.0 0.0.0.255 area 1。配置前先show ip interface brief列出所有接口地址,逐个换算成网络地址再写。
6. 用 Wireshark 验证组网结果:三次握手四次挥手的抓包观察
6.1 搭建 HTTP 服务器并确认抓包入口
实验要求在 PC123 上部署 WEB 或 FTP 服务器,从 PC121 发起访问,在 PC121 上抓包。抓包位置有讲究:如果抓 PC121 的包,看到的是内网到路由器网关的流量,TCP 首部里的源地址是 192.168.4.2;如果抓 RSR20-12-3 的 gi0/0.1 接口,能看到 VLAN10 内的流量;要看到 NAPT 转换后的包,得在 gi0/1 上抓。期末考试做协议分析,抓 PC121 的包就够了,重点是 TCP 首部结构,不需要看转换后的包。
PC123 上装 HFS 或者 Python 的 http.server 模块就行,Windows 自带的 IIS 也可以。Python 方式最快:
# 在 PC123 上启动 HTTP 服务,端口 80 python -m http.server 80启动后 PC121 浏览器访问http://192.168.5.2,Wireshark 里输入过滤条件tcp.port == 80,就能看到完整的连接建立和释放过程。
6.2 三次握手与四次挥手的观察要点
三次握手的三个包特征很明确:第一个包 SYN 标志位为 1,序列号是随机初始值(比如 ISN=1000),第二个包 SYN+ACK,确认号是第一个包的序列号加 1,第三个包 ACK。用 Wireshark 看时,点开每个 TCP 包的首部字段,对照书上的结构逐项核对。数据偏移(Header Length)通常是 20 字节(没有选项字段时),这对应 TCP 首部的最小长度。
四次挥手是连接释放过程,特征是 FIN 包。观察时注意谁先发 FIN:主动关闭方发送 FIN,接收方回复 ACK,然后接收方也发送 FIN,主动方再回复最后的 ACK。正常情况下这四步是清晰的,但如果 HTTP 连接上开了 keep-alive,浏览器可能不会立即释放连接,抓包看不到四次挥手。解决办法是访问完成后立刻关闭浏览器标签页,或者在过滤条件里加tcp.flags.fin == 1只看 FIN 包。
IPv4 数据报首部分析比较简单,重点看版本号(固定为 4)、首部长度(20 字节)、总长度、TTL 和协议字段(TCP 为 6)。数据链路层帧格式就看源 MAC 和目的 MAC,注意如果抓的是跨交换机流量,源 MAC 是 PC121 的网卡 MAC,目的 MAC 是路由器 gi0/0 接口的 MAC,不是 PC123 的 MAC,因为在这个二层路径上,下一跳才是目的 MAC,PC123 的 MAC 要跨三层才能看到。这个细节期末报告中很加分,大多数同学没注意到。
从那以后,我每次做完 NAT 实验都会顺手在路由器上执行show ip nat translations截个图,再跑到 PC 上发一个 ping,确保转换表里能看到实时条目,这是整个链路最后的兜底验证。希望这份配置思路对你的课程设计或者组网排查有帮助,祝一次跑通。
本文还有配套的精品资源,点击获取