ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

计算机网络综合实验:VLAN、OSPF与NAT配置实战指南

计算机网络综合实验:VLAN、OSPF与NAT配置实战指南

简介:这份华北电力大学计算机网络综合实验报告及主要代码,面向计算机相关专业学生及网络初学者,帮助读者系统掌握网络设备配置与协议分析的核心技能。资源包内含1个doc文档,约21.91MB,完整记录了从交换机、路由器基本配置到OSPF、RIP v2、静态路由、VLAN划分与单臂路由、三层交换机VLAN间路由,再到静态NAT、NAT地址复用、动态NAT及ACL安全配置的全过程。报告还包含互联网综合设计部分,涉及不少于三个区域的OSPF路由设计、DHCP分配、数据帧捕获与TCP/IP协议分析,并附有网络拓扑图、设计思路与问题解决方案。目前已有155人学习下载,适合作为课程设计参考、实验排错指南与期末复习资料,帮助读者在动手实践中理解抽象网络原理,提升组网与协议分析能力。

1. 一份能直接跑的计网综合实验:从 VLAN 到 OSPF 再到 NAT 的完整落地

很多人学计算机网络,课本上的 OSI 七层、TCP 三次握手背得滚瓜烂熟,一到真机配置就懵了——VLAN 怎么划、单臂路由的子接口怎么起、OSPF 的 area0 为什么必须是主干、NAT 地址池配错了会怎样,这些在考卷上永远不会翻车的地方,恰恰是实验台上最容易卡住的地方。这份华北电力大学计算机网络综合实验报告加主要代码,覆盖的正是从设备认知到协议分析的完整链路:VLAN 划分与单臂路由、OSPF 多区域配置、NAPT 地址转换、Wireshark 抓包分析 TCP 握手挥手,五个实验日的内容全在里面。适合正在上计网实验课、需要交报告或者想拿真机练手的同学,也适合已经工作但想回头补网络基础的开发者——毕竟配过一遍 OSPF 和 NAT,再看云上 VPC 和 NAT 网关,理解会完全不一样。

2. 实验拓扑与地址规划:先把这张图看懂再动手

2.1 设备组成与拓扑结构

这套实验环境提供了四台主机、四台路由器、两台二层交换机和一台三层交换机。拓扑的逻辑分层很清晰:左边是接入层,中间是路由核心,右边是外网模拟区。

四台主机中,PC121 和 PC122 分别属于不同 VLAN,PC123 和 PC124 则承担服务器和测试终端的角色。路由器 RSR20-12-3 是整张图的关键节点——它既要做单臂路由实现 VLAN 间通信,又要做 NAT 转换让内网访问外部,相当于一个边界路由器。RSR20-12-1 和 RSR20-12-2 构成 area0 主干区域,RSR20-12-4 则连接右侧的 area2。

地址规划上,内网用了 192.168.3.0/24 和 192.168.4.0/24 两个网段给 VLAN,路由器互联用了 192.168.7.0/24、192.168.8.0/24 和 192.168.10.0/24。这种规划方式在真实项目里也很常见——内网用私有地址,互联段单独规划,NAT 出口单独一个地址池。

2.2 主机与接口地址对照

把地址表整理出来,配置的时候对着抄就行:

设备接口IP 地址说明
PC121网卡192.168.4.2/24网关 192.168.4.1,VLAN20
PC122网卡192.168.3.2/24网关 192.168.3.1,VLAN10
PC123网卡192.168.5.2/24网关 192.168.5.1,服务器
PC124网卡192.168.3.3/24网关 192.168.3.1,VLAN10
RSR20-12-1ge0/0192.168.8.1/24连接 RSR20-12-4
RSR20-12-1ge0/1192.168.7.2/24连接 RSR20-12-2
RSR20-12-2ge0/0192.168.7.1/24连接 RSR20-12-1
RSR20-12-2ge0/1192.168.10.1/24连接 RSR20-12-3
RSR20-12-3ge0/0.1192.168.3.1/24子接口,VLAN10 网关
RSR20-12-3ge0/0.2192.168.4.1/24子接口,VLAN20 网关
RSR20-12-3ge0/1192.168.10.2/24连接 RSR20-12-2
RSR20-12-4ge0/0192.168.5.1/24连接 PC123
RSR20-12-4ge0/1192.168.8.2/24连接 RSR20-12-1

这张表建议打印出来贴在显示器边上。我见过太多人配到一半发现网关写错了,然后从头 ping 一遍,浪费半小时。

2.3 区域划分逻辑

OSPF 划分了三个区域:area0 是主干区域,包含四台路由器之间的互联链路;area1 在 RSR20-12-3 左侧,覆盖 VLAN10 和 VLAN20 两个网段;area2 在 RSR20-12-4 右侧,覆盖 PC123 所在的 192.168.5.0/24。

这里有个血泪经验:area0 必须是连续的主干区域,所有非主干区域都要直接或间接连到 area0。原文里提到第一次把 area1 放在中间导致路由信息不全,就是因为违反了这条规则。OSPF 的设计逻辑是区域间路由必须经过 area0 中转,不是随便画的。

3. VLAN 划分与单臂路由:从二层隔离到三层互通

3.1 二层交换机的 VLAN 配置

VLAN 划分的核心思路很简单:同一 VLAN 内的主机可以二层互通,不同 VLAN 必须经过三层设备。实验里把 PC122 和 PC124 划到 VLAN10,PC121 划到 VLAN20。

在 S2628-12-2 上的配置:

# 创建 VLAN 并命名 vlan 10 name work1 vlan 20 name work2 # 把 fa0/1 划入 VLAN10 interface fa0/1 switchport mode access switchport access vlan 10

在 S2628-12-1 上:

vlan 10 name work1 vlan 20 name work2 # fa0/2 给 VLAN20,fa0/3 给 VLAN10 interface fa0/2 switchport mode access switchport access vlan 20 interface fa0/3 switchport mode access switchport access vlan 10

switchport mode access表示这个端口是接入模式,只能属于一个 VLAN。switchport access vlan 10就是把它塞进 VLAN10。这两条命令的顺序不能反,先设模式再设 VLAN,否则有些设备会报错。

3.2 Trunk 中继配置

两台交换机之间需要传多个 VLAN 的流量,所以互联端口必须配成 Trunk:

# S2628-12-2 的 fa0/2 和 fa0/13 interface fa0/2 switchport mode trunk interface fa0/13 switchport mode trunk # S2628-12-1 的 fa0/1 interface fa0/1 switchport mode trunk

Trunk 端口默认会放行所有 VLAN(除非配了 allowed vlan 列表)。这里没做限制,所以 VLAN10 和 VLAN20 的流量都能通过。真实项目里一般会显式指定switchport trunk allowed vlan 10,20,避免不必要的广播泛洪。

3.3 单臂路由实现 VLAN 间通信

VLAN 间通信靠路由器 RSR20-12-3 的子接口实现。所谓单臂路由,就是路由器只用一个物理接口,通过子接口承载多个 VLAN 的网关:

interface gi0/0 no shutdown # 子接口对应 VLAN10 interface gi0/0.1 encapsulation dot1q 10 ip address 192.168.3.1 255.255.255.0 # 子接口对应 VLAN20 interface gi0/0.2 encapsulation dot1q 20 ip address 192.168.4.1 255.255.255.0

encapsulation dot1q 10是关键——它告诉路由器这个子接口处理带 VLAN10 标签的帧。当 PC122(VLAN10)ping PC121(VLAN20)时,数据帧先到交换机,打上 VLAN10 标签,通过 Trunk 送到路由器 gi0/0 物理接口,路由器根据标签交给 gi0/0.1 子接口处理,查路由表发现目标在 192.168.4.0/24,从 gi0/0.2 发出去,打上 VLAN20 标签,最终到达 PC121。

配完之后在 PC122 上ping 192.168.4.2,通了就说明单臂路由生效。不通的话先检查子接口的encapsulation dot1q后面的 VLAN ID 和交换机上的是否一致,这是最常见的翻车点。

4. OSPF 多区域配置:让四台路由器互相认识

4.1 OSPF 区域设计原则

OSPF 的区域划分不是随便画的。area0 是骨干区域,所有其他区域必须直接或间接连接到 area0。实验里四台路由器之间的互联链路全部划入 area0,RSR20-12-3 左侧的 VLAN 网段划入 area1,RSR20-12-4 右侧的 192.168.5.0/24 划入 area2。

原文里踩过一个坑:第一次把 area1 放在中间,结果路由器上查不到完整路由。原因就是 area0 不连续了。OSPF 的区域间路由必须经过 area0 中转,如果 area0 被切断,区域间路由就学不到。

4.2 各路由器 OSPF 配置

在 RSR20-12-2 上:

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-3 上:

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 上:

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 上:

router ospf 10 network 192.168.8.0 0.0.0.255 area 0 network 192.168.5.0 0.0.0.255 area 2

router ospf 10里的 10 是进程号,只在本路由器有效,不同路由器可以用不同进程号。network命令后面跟的是网段和反掩码,0.0.0.255 对应 /24 掩码。area 号必须和拓扑设计一致。

4.3 验证 OSPF 邻居与路由表

配完之后用这几条命令验证:

# 查看 OSPF 邻居状态 show ip ospf neighbor # 查看路由表 show ip route # 查看 OSPF 链路状态数据库 show ip ospf database

邻居状态应该是 FULL,表示邻接关系建立完成。路由表里应该能看到所有六个网段的路由条目。如果邻居卡在 EXSTART 或者 INIT 状态,通常是 MTU 不匹配或者 area 号配错了。

原文提到通过改变 cost 值观察路由变化,这是验证 OSPF 选路的好方法。在接口下用ip ospf cost 100把某条链路的开销调大,再看路由表,流量就会走另一条路径。真实网络里调 cost 做流量工程也是常规操作。

5. NAT 综合实验:内网访问外网的最后一公里

5.1 NAT 地址池与 ACL 定义

NAT 的核心逻辑是:内网主机出外网时,把私有源 IP 替换成公网 IP。实验里在 RSR20-12-3 上配置 NAPT(地址复用),让多台主机共用一个公网地址:

# 定义地址池,只有一个公网 IP ip nat pool abc 192.168.10.5 192.168.10.5 netmask 255.255.255.0 # 定义哪些内网地址需要转换 access-list 10 permit 192.168.0.0 0.0.255.255 # 绑定 ACL 和地址池,overload 表示复用 ip nat inside source list 10 pool abc overload

overload关键字就是 NAPT 的核心——它让多个内网 IP 映射到同一个公网 IP 的不同端口上。没有 overload 就是一对一 NAT,地址池里有多少 IP 才能带多少主机。

5.2 inside 和 outside 接口标记

NAT 必须明确哪个接口是内网侧,哪个是外网侧:

interface gi0/1 ip nat outside interface gi0/0.1 ip nat inside interface gi0/0.2 ip nat inside

ip nat inside和ip nat outside是成对出现的。路由器只会在 inside 接口收到包时做源地址转换,在 outside 接口收到包时做目的地址转换。如果标反了,NAT 表里根本不会生成转换条目。

5.3 验证 NAT 转换

从 PC121 ping 外部路由器接口 192.168.8.2,然后在 RSR20-12-3 上执行:

show ip nat translations

应该能看到类似这样的输出:

Pro Inside global Inside local Outside local Outside global icmp 192.168.10.5:1 192.168.4.2:1 192.168.8.2:1 192.168.8.2:1

Inside local 是内网主机的真实地址,Inside global 是转换后的公网地址。看到这条记录,说明 NAPT 配置成功。

原文里提到地址池 IP 配错导致失败——地址池里的 IP 必须是路由器某个接口所在网段的地址,不能随便写。比如这里用 192.168.10.5,是因为 RSR20-12-3 的 gi0/1 接口在 192.168.10.0/24 网段。如果写个 10.0.0.5,路由器根本不知道从哪个接口发出去。

6. 抓包分析与避坑指南:那些实验台上才会遇到的事

6.1 Wireshark 抓 TCP 三次握手与四次挥手

在 PC123 上部署 Web 服务,PC121 用浏览器访问 192.168.5.2,同时在 PC121 上开 Wireshark 抓包。过滤tcp.port == 80,能看到完整的 TCP 连接建立和释放过程。

三次握手对应三个包:SYN、SYN-ACK、ACK。Wireshark 里看 Info 列,分别是[SYN]、[SYN, ACK]、[ACK]。展开 TCP 头部,重点看 Sequence Number 和 Acknowledgment Number 的变化——SYN 包消耗一个序列号,所以第二个包的 Ack 是第一个包的 Seq+1。

四次挥手对应四个包:FIN-ACK、ACK、FIN-ACK、ACK。为什么是四次而不是三次?因为 TCP 是全双工的,每个方向都要单独关闭。主动关闭方发 FIN,被动方先回 ACK,等数据发完了再发自己的 FIN,主动方再回 ACK。

数据链路层帧格式分析重点看 Ethernet II 头部:目的 MAC、源 MAC、类型字段(0x0800 表示 IPv4)。IPv4 首部重点看版本号、首部长度、TTL、协议字段(6 表示 TCP)。TCP 首部重点看源端口、目的端口、序列号、确认号、标志位。

6.2 常见问题排查

现象一:PC 之间 ping 不通,但 IP 和掩码都配了。原因:没配默认网关。同一 VLAN 内通信不需要网关,但跨 VLAN 必须经过路由器,没有网关主机不知道把包发给谁。 解决:在每台 PC 上补上网关地址,VLAN10 的网关是 192.168.3.1,VLAN20 是 192.168.4.1。

现象二:OSPF 邻居起不来,路由表里缺网段。原因:area0 不连续,或者接口没宣告进 OSPF。 解决:检查show ip ospf neighbor确认邻居状态,检查show run | section router ospf确认 network 宣告是否覆盖了所有接口网段。area0 必须是连续的主干区域。

现象三:NAT 不生效,show ip nat translations 是空的。原因:地址池 IP 不在路由器接口网段内,或者 inside/outside 标反了。 解决:确认地址池 IP 和出口接口同网段,确认ip nat inside配在内网接口、ip nat outside配在外网接口。

现象四:Trunk 配了但 VLAN 间还是不通。原因:Trunk 端口没有放行对应 VLAN,或者单臂路由子接口的 encapsulation dot1q 号不对。 解决:show interfaces trunk查看放行列表,show run interface gi0/0.1确认 dot1q 号和 VLAN ID 一致。

现象五:抓包看不到 TCP 握手包。原因:抓包位置不对,或者过滤条件写错了。 解决:在发起连接的机器上抓,不要在被访问的服务器上抓。过滤条件用tcp.port == 80而不是http,因为握手阶段还没有 HTTP 数据。

7. 二次开发与扩展:把这套实验改成你自己的项目

这份实验报告的价值不只在交作业。把它当成一个网络实验脚手架,可以往几个方向扩展。

第一个方向是加 ACL 访问控制。原文里 ACL 是选做内容,但实际项目里 ACL 用得非常多。可以在 RSR20-12-3 的 gi0/1 接口上配一个扩展 ACL,只允许 VLAN10 的主机访问外网,VLAN20 的禁止:

access-list 100 permit ip 192.168.3.0 0.0.0.255 any access-list 100 deny ip 192.168.4.0 0.0.0.255 any access-list 100 permit ip any any interface gi0/1 ip access-group 100 in

配完之后从 PC121(VLAN20)ping 外网应该不通,从 PC122(VLAN10)应该通。验证的时候注意 ACL 的隐含 deny any 规则,最后那条permit ip any any不能漏。

第二个方向是把 OSPF 换成 OSPFv3 或者 ISIS,对比不同协议的路由收敛速度。在模拟器里做这个实验很方便,改一下协议配置,抓包看 Hello 包间隔和邻居建立时间。

第三个方向是加一条静态路由做备份。OSPF 动态路由虽然方便,但真实网络里经常用静态路由做浮动备份:

ip route 192.168.5.0 255.255.255.0 192.168.8.2 200

最后的 200 是管理距离,比 OSPF 的 110 大,所以只有 OSPF 路由消失时这条才会生效。验证方法是在 OSPF 正常时show ip route看不到这条,把 OSPF 进程关掉再看,静态路由就出来了。

第四个方向是用 GNS3 或者 eNSP 把拓扑搭出来,然后写一个 Python 脚本用 Netmiko 批量下发配置。这个技能在实际运维里很实用——几十台设备手动配容易出错,脚本一把梭既快又稳。

我自己的习惯是每次改完配置先show run导出备份,再write memory保存。实验环境里不保存顶多重启,生产环境里不保存就是事故。从那以后我每次动网络设备配置,都强制走一遍「备份-修改-验证-保存」的流程,希望这个习惯也能帮到你。

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

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进