☰
思科模拟器实验17:三层交换机实现DHCP与VLAN间路由配置
2026/10/14 5:56:57 网站建设 项目流程

说实话,做到思科模拟器实验17这一关,很多人会有一种“前面学的终于串起来了”的感觉。三层交换DHCP的配置,说白了就是用一台三层交换机,把VLAN隔离、VLAN间路由、DHCP动态地址分配三件事一次性解决。这个实验值得认真做,因为你一旦搞明白它,就能回答一个很常见的实际问题:公司只买一台核心交换机,不想每个部门单独放一台服务器,怎么让所有终端自动拿到IP地址,同时还能跨部门互相访问。

这个实验适合两类人:一是刚学完VLAN和DHCP基础、想看看两者怎么结合的网络初学者;二是准备往企业网络运维方向走、想把交换机的“三层”能力吃透的实操派。做实验本身不难,难的是理解每一步配置背后的逻辑。这篇博文我会把整个实验从需求拆解到最终验证完整走一遍,把命令背后的原因讲清楚,顺便把我自己踩过的一些坑也放出来。

1. 实验17到底在做什么:需求拆解与逻辑推演

1.1 从一个常见需求说起

先还原一下场景。某公司内部有不同部门,为了隔离广播域、提高安全性,网络管理员把终端划分成了两个VLAN。但划完VLAN之后马上遇到两个新问题:

  • VLAN之间默认是二层隔离的,部门A的电脑根本访问不了部门B的服务器;
  • 每个部门如果手动配IP,几十台终端配起来非常痛苦,而且容易冲突。

解决第一个问题需要“三层路由”能力,解决第二个问题需要“DHCP服务”。而实验17给出的方案是:在一台三层交换机上同时解决这两件事。

很多初学者会疑惑,为什么不用一台真正的DHCP服务器?原因很简单:小型网络里单独部署一台服务器,成本和管理负担都大。思科的三层交换机本身带CPU和IOS系统,完全能跑DHCP服务进程。一台设备同时当网关和地址分配中心,管理和排错都集中了。

1.2 为什么不用独立的DHCP服务器或者DHCP中继

这里就涉及方案选型的问题。我在规划这个实验时,其实考虑过三种做法:

方案核心方式优点缺点
方案一:三层交换机直接开DHCP用交换机内置DHCP服务,按VLAN建地址池设备少、配置集中、成本低适合中小规模,地址池数量多时维护要细心
方案二:独立DHCP服务器部署一台服务器,所有VLAN的客户端都来找它要地址扩展性好、日志审计强、适合大型网络成本高、需要额外维护、广播跨VLAN要加中继
方案三:DHCP中继代理交换机把客户端的广播请求转成单播,转发给远端DHCP服务器保留独立服务器的优点,又避免广播隔离问题要额外配置ip helper-address,多一层依赖

这个实验选方案一,除了模拟器环境方便演示之外,更关键的是它帮你理解一个核心概念:DHCP服务不一定意味着“一台独立主机”,它可以作为一种服务能力存在。理解了这一点,后面你再去看中继配置,思路会非常顺畅。

1.3 广播域与DHCP的底层逻辑

要彻底理解三层交换DHCP,必须回顾DHCP的工作过程。客户端开机会发送一条DHCP Discover广播,寻找网络里的DHCP服务器。整个过程就是DORA四步:Discover(发现)、Offer(提供)、Request(请求)、Ack(确认)。

问题来了:二层交换机默认会在广播域里转发广播帧,但两个不同VLAN是两个广播域,也就是说VLAN 10里的广播包根本不会传到VLAN 20。传统方案里,如果要让一台远端服务器给不同VLAN分配地址,必须借助中继把广播转成单播。

但现在不一样了。三层交换机的SVI(Switch Virtual Interface,虚拟接口)作为每个VLAN的网关,它本身就在每一个广播域内部。当交换机自己启用了DHCP服务,它就能直接收到来自所有VLAN的Discover广播,并按请求来源的网段,从对应的地址池里分配地址。这就是“三层交换DHCP”能成立的根本原因。

打个生活化比方:一栋办公楼里每层是一个独立房间,门关着,里面的人喊话外面听不到。现在你叫物业在每个房间门口都装一个内线电话,住户一拨电话,物业就能按房间号分配对应的访客证。这里的“物业”就是三层交换机,房间就是VLAN,访客证就是IP地址。

2. 环境准备与拓扑规划:实验开始前必须想清楚的事

2.1 设备选型与拓扑结构

这个实验我在思科模拟器里用的是3560系列三层交换机。模拟器里直接拖一台3560就行,不需要额外加二层交换机,因为实验核心是验证三层交换机的路由和DHCP能力,拓扑越简单越容易聚焦。

拓扑设计如下:

  • 一台3560三层交换,作为核心设备;
  • 两台PC,分别接入不同VLAN;
  • 可选:一台服务器模拟DNS,用于验证DHCP下发的DNS参数。

这种直连拓扑在模拟器里跑起来非常稳定,也方便你观察每一条配置的效果。如果你手头有真实设备,或者用的是其他模拟平台,逻辑是一样的。

2.2 VLAN与网段规划

规划是整个实验的地基,我一般建议先写在纸上再动手配。这个实验我规划的地址非常规整:

项目VLAN 10VLAN 20
用途办公终端业务终端
网段
子网掩码
SVI网关
地址池范围--
排除地址

注意看,每个网段的.1地址都留给SVI做网关,而地址池的范围是从.100开始到.199,这样的好处是:前100个地址可以用来放服务器、打印机这些需要固定IP的设备,后面100个地址专门给动态终端用。这个设计思路在真实项目里也非常实用。

2.3 端口划分与接入规划

端口规划直接用列表写清楚,配置的时候不会乱:

  • FastEthernet0/1 - FastEthernet0/10:划分到VLAN 10;
  • FastEthernet0/11 - FastEthernet0/20:划分到VLAN 20;
  • 模拟DNS服务器接在FastEthernet0/24,划到VLAN 10。

为什么不直接用二层口做路由口?原因很简单:这个实验里PC需要走正常交换接入流程,二层口划分到对应VLAN即可,由SVI来终结网关。如果你把端口改成no switchport做成路由口,反而会打破这个设计,DHCP没法按广播域正常分配。

选端口的时候还有个经验:尽量用interface range命令批量配置,比如把一整段端口一次性划入VLAN,比一个个端口配快得多,也避免漏配。

3. 完整配置过程实录:每一条命令都有来由

3.1 第一步:创建VLAN并划分端口

进入交换机全局配置模式,先创建两个VLAN:

Switch>enable Switch#configure terminal Switch(config)#vlan 10 Switch(config-vlan)#name OFFICE Switch(config-vlan)#exit Switch(config)#vlan 20 Switch(config-vlan)#name BUSINESS Switch(config-vlan)#exit

这里给VLAN起个名字是为了后期维护方便。模拟器里无所谓,但真实项目里你不可能记住每个VLAN数字代表什么,名字一定要起清楚。

接着把端口批量划入VLAN:

Switch(config)#interface range fastEthernet 0/1-10 Switch(config-if-range)#switchport mode access Switch(config-if-range)#switchport access vlan 10 Switch(config-if-range)#exit Switch(config)#interface range fastEthernet 0/11-20 Switch(config-if-range)#switchport mode access Switch(config-if-range)#switchport access vlan 20 Switch(config-if-range)#exit

这里有个容易让新手忽略的点:接口默认是dynamic auto模式的,直接敲switchport access vlan 10也能配进去,但最好先强制指定switchport mode access。为什么?因为如果对端设备支持DTP,有可能协商成trunk,导致VLAN划分失效。提前锁定access模式,能让后续行为完全可控。

3.2 第二步:开启三层路由并配置SVI网关

二层交换机的CPU不处理跨VLAN的IP报文,只有开启了路由功能之后,SVI才能真正扮演网关角色。这一步非常关键,也是新手最容易卡住的环节:

Switch(config)#ip routing Switch(config)#interface vlan 10 Switch(config-if)#ip address Switch(config-if)#no shutdown Switch(config-if)#exit Switch(config)#interface vlan 20 Switch(config-if)#ip address Switch(config-if)#no shutdown Switch(config-if)#exit

ip routing是三层交换机的灵魂命令。模拟器里的3560默认不开启路由,如果你忘了敲这行,后面所有跨VLAN通信都是白搭。SVI只要创建了就会自动up,但配置IP之后最好明确加一句no shutdown。

SVI地址选.1是因为这是每个子网的第一个可用地址,作为网关约定俗成。给SVI配完IP之后,可以用show ip interface brief快速确认两个VLAN接口都处于up/up状态。

3.3 第三步:配置DHCP服务与地址池

这一步是实验的核心。先要排除网关地址,防止交换机把已经使用的地址再租出去:

Switch(config)#ip dhcp excluded-address Switch(config)#ip dhcp excluded-address

然后分别给两个VLAN建两个地址池:

Switch(config)#ip dhcp pool VLAN10_POOL Switch(dhcp-config)#network Switch(dhcp-config)#default-router Switch(dhcp-config)#dns-server Switch(dhcp-config)#exit Switch(config)#ip dhcp pool VLAN20_POOL Switch(dhcp-config)#network Switch(dhcp-config)#default-router Switch(dhcp-config)#dns-server Switch(dhcp-config)#exit

这里有几个细节值得展开:

  • 地址池名字不要用中文,不要带空格。模拟器里虽然有些版本能接受,但真实IOS里带空格的池名会有各种怪问题,用下划线连接是最稳的。
  • DNS服务器地址我写的是,对应模拟器里那台服务器的IP。实际应用中DNS要写公司内部的解析服务器,不能随便写外网地址。
  • 两个地址池的default-router必须分别指向各自VLAN的SVI网关。这个配置错了,客户端就算拿到IP,网关也不通,网络照样不可用。

还有一条容易被忽略的全局命令:

Switch(config)#service dhcp

思科IOS里DHCP服务默认是开启的,但如果你之前做过别的实验,或者拷贝了别人的配置,有可能这条被no掉。配置完地址池后,顺手敲一下show ip dhcp pool,确认服务整体正常。

3.4 完整配置命令汇总

把上面的配置串起来,就是一台三层交换机从零到可用的完整流程。我习惯把这类配置保存成模板,后面做类似实验直接改IP就行:

enable configure terminal hostname SW-CORE vlan 10 name OFFICE vlan 20 name BUSINESS ip routing interface range fastEthernet 0/1-10 switchport mode access switchport access vlan 10 interface range fastEthernet 0/11-20 switchport mode access switchport access vlan 20 interface vlan 10 ip address no shutdown interface vlan 20 ip address no shutdown ip dhcp excluded-address ip dhcp excluded-address ip dhcp pool VLAN10_POOL network default-router dns-server ip dhcp pool VLAN20_POOL network default-router dns-server service dhcp end write memory

注意最后一定要write memory,模拟器不保存配置的话,重启之后全部白做。这个习惯在实验阶段就要养好,真实设备上丢了配置比做错配置更麻烦。

4. 验证方法与实测结果:配置好不等于能跑通

4.1 客户端地址获取验证

配置完成后,把两台PC分别接到FastEthernet0/1和FastEthernet0/11。我建议PC1接在划分到VLAN 10的端口上,PC2接在VLAN 20的端口上,这样验证逻辑最清晰。

在PC1的命令行里先释放旧地址,再重新获取:

PC> ipconfig /release PC> ipconfig /renew

正常情况下,PC1会拿到10.0.10.100这个范围内的地址,网关是。这个结果至少说明三件事没问题:PC确实在VLAN 10里、DHCP服务正常、地址池匹配正确。

PC2重复相同的操作,应该拿到172.16.20.100范围内的地址。如果两台PC拿到的IP网段和它们接入的VLAN对不上,那配置一定有问题,后面单独说排查方法。

4.2 跨VLAN连通性验证

拿到地址之后,最关键的验证是用PC1去ping PC2:

PC> ping

如果通了,说明整个链路完整:VLAN隔离 → SVI路由 → IP报文转发。这一步的成功意味着三层交换机的路由功能生效了。如果ping不通,别急,先检查PC2是不是拿到了正确地址,再去交换机上确认两个SVI的状态。

我还习惯在交换机上做一次跨VLAN的ping测试,用比较粗的方式验证路由表:

Switch#ping

这个命令是从交换机本身发起、经由SVI 10发出的探测。能通,说明交换机视角下路由是通的,后面再排查PC侧的问题就更有方向。

4.3 用show命令确认DHCP运行状态

部署完之后,光看客户端拿到IP还不够,我建议养成看服务器侧状态的习惯。交换机的DHCP服务侧有几个命令非常实用:

Switch#show ip dhcp binding

这个命令会列出所有已分配的IP地址、对应MAC地址、租期剩余时间。如果客户端的MAC地址出现在列表里,并且IP属于预期网段,那么地址分配这个环节就完全没问题。

Switch#show ip dhcp pool

这个命令能看到所有地址池的网段、地址范围、活跃客户端数量。我一般用它快速核对每个池子的配置有没有写错。

如果还想看DHCP交互是否正常,可以在客户端renew的同时开debug:

Switch#debug ip dhcp server packet

执行完之后,立刻去客户端执行ipconfig /release再ipconfig /renew,交换机控制台上会刷出从Discover到Ack的完整交互过程。注意看源IP是否来自对应网段的网关,这能帮你确认DHCP请求确实是从正确的VLAN进来的。

Debug看完一定要关掉:

Switch#undebug all

开着debug会大量消耗CPU,模拟器里可能不明显,真实设备上那就是事故现场了。

4.4 验证顺序建议

我每次做完实验,验证顺序都固定不动,这套顺序帮我快速定位问题:

  1. 先看PC能不能拿到IP;
  2. 再看PC的IP是否和所接VLAN匹配;
  3. 接着看PC能否ping通自己的网关;
  4. 最后看跨VLAN互访是否正常。

这个顺序是从“底层到上层”逐层验证的思路。每往上走一步,都默认前一步是通的。万一出问题,就能顺着层级把故障点圈在很小的范围内。

5. 常见问题与排查技巧实录

5.1 终端拿不到IP地址

这是实验里最常见的故障。按重要程度排序,我排查的顺序如下:

  • 看PC接的端口到底划到哪个VLAN了。show vlan brief一眼就能看出来。
  • 看SVI接口状态。show ip interface brief如果显示down/down,多半是SVI没起来。
  • 看ip routing有没有开。没开路由的话,客户端广播发上来之后,交换机虽然有DHCP服务,但它不知道怎么按网段回复。
  • 看地址池。show ip dhcp pool确认network和default-router没写错。
  • 看排除地址。如果排除地址范围把整个网段都囊括了,客户端当然拿不到地址。

还有一个非常隐蔽的问题:如果之前做过别的实验,交换机里可能残留了旧的地址池或者no service dhcp。这时候直接把配置清掉重新来过,比在残局里找原因快得多。

5.2 拿到IP但跨VLAN ping不通

这个问题的排查思路比较收敛,就三个方向:

首先看PC的网关地址是不是对应VLAN的SVI地址。DHCP下发default-router出错,或者客户端手动配了旧网关,都会导致这种结果。

其次看SVI是否up。如果SVI配好IP之后没有no shutdown,或者物理端口全挂,SVI会变成down状态。

最后看路由表。show ip route确认有没有直连路由。正常情况下应该有10.0.10.0/24和172.16.20.0/24两条直连路由。

这个实验里我没配任何ACL,所以不存在策略拦截的问题。真实项目里如果排到路由没问题还ping不通,多想想是不是安全策略在作怪。

5.3 地址池给客户端分了错误网段的地址

出现这个问题,绝大多数情况是客户端接错了VLAN端口。比如PC1明明插在Fa0/11上,但Fa0/11划给了VLAN 20,它自然只能拿到172.16.20.x的地址。

我见过有人在这种情况下反复改地址池配置,结果越改越乱。正确的做法是把网络插到正确的端口,或者按规划把端口重新划分到对应VLAN。模拟器里拖动PC网线到正确端口就很方便,真机上就得理清楚物理跳线了。

5.4 模拟器环境特有的坑

Packet Tracer这类模拟器偶尔会有一些奇怪表现,比如明明配置看起来都对,但客户端就是拿不到地址。下面几条是我实测里比较有效的应对方法:

  • 把PC网线拔了重插,触发一次网卡down/up事件,让客户端重新发起DHCP;
  • 在交换机端口上做shutdown再no shutdown,让链路重新协商;
  • 直接在交换机上重新执行end并write memory,有些版本配置在RAM里没用,写进startup-config之后行为才正常。

最后再提一个很多新手容易踩的坑:模拟器版本不同,命令支持度会有细微差别。比如某些老版本对ip dhcp pool的dns-server支持不完整,可能显示配置成功但实际没生效。遇到这种情况,先查一下你用的模拟器版本,再考虑是不是更新到新版。

结尾小记:这个实验的价值不只是敲命令

我个人做实验做到17这个位置,最大的体会是:三层交换DHCP这个实验是理解“网关”这个词的绝佳入口。很多人一开始把网关理解成一个IP,做完这个实验你就会明白,网关背后是一台设备的逻辑接口,是广播域的边界,是IP报文转发的中转站。DHCP服务在这个架构里不是一个独立盒子,而是交换机操作系统内置的一个进程,这本身就是网络设备一体化的典型思路。

做完实验之后,我建议你把拓扑改一改,再加一个VLAN 30,重新规划新网段和地址池,全程不参考笔记,看看能不能独立复现。能一次跑通,说明这三层交换DHCP的核心逻辑真的拿下了,而不是照着命令抄了一遍。后面再深入学习,不管是加DHCP中继、DHCP Snooping,还是做基于VLAN的ACL策略治理,你都会有更扎实的底子把新知识接住。

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

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

立即咨询