
1. 办公室跨VLAN通信到底在解决什么问题第一次接触跨VLAN通信的兄弟大概率是在做课程综合实验的时候被卡住的。场景通常长这样一间办公室里有财务部、技术部、行政部三个工位区每个部门被划进不同的VLAN财务的机器不想让技术部的人随便访问行政的打印机又要让所有人都能用。这时候问题就来了——VLAN天生是隔离广播域的同一个VLAN里能通跨了VLAN就互相看不见。可现实办公场景里部门之间又必须有一些受控的互通需求比如所有人都要访问同一台文件服务器、共用一台网络打印机、统一走一个出口去访问外网。跨VLAN通信要解决的核心矛盾就一句话在保持二层隔离带来的安全性和广播抑制优势的前提下让不同VLAN之间按需、可控地互通。这个需求在真实企业网里天天都在发生只不过真实环境里用的是三层交换机加路由而思科实验里我们通常用一台路由器的单臂路由或者一台三层交换机来做VLAN间路由。这个实验适合谁看如果你是正在上计算机网络课、被Packet Tracer或者EVE-NG里的综合实验折磨的学生这篇内容能帮你把整个思路理顺如果你是刚入行的网络运维想搞清楚VLAN间路由到底是怎么跑起来的这里也有可以直接抄的配置和排查思路。我下面会从整体设计思路讲起把单臂路由和三层交换两种主流方案都拆开揉碎再补上DHCP、ACL访问控制这些综合实验里几乎必考的点最后给一份常见故障速查表。先说清楚一个前提跨VLAN通信的本质是三层转发。VLAN是二层概念隔离的是广播域要让两个不同VLAN的主机通信必须有一个三层设备路由器或三层交换机分别接入这两个VLAN充当它们的网关然后由这个三层设备做路由转发。理解了这句话后面所有的配置都是它的展开。2. 整体方案设计与选型思路拆解2.1 为什么不能只靠二层交换机很多人一开始会想既然都在一台交换机上为什么不能直接通因为交换机转发靠的是MAC地址表而MAC地址表是二层转发的依据。当财务部的主机VLAN 10要访问技术部的主机VLAN 20时源主机发现目的IP不在自己网段就会把包发给网关。如果网关不存在或者网关没有到目的网段的路由包就被丢弃。二层交换机根本看不懂IP地址它只认VLAN标签和MAC所以它无法完成跨网段转发。这里有个容易混淆的点同一台物理交换机上不同VLAN之间默认是完全隔离的哪怕它们接在同一台设备的相邻端口上。这个隔离是逻辑上的靠的是VLAN标签。所以跨VLAN通信必须引入三层能力这是绕不过去的。2.2 单臂路由 vs 三层交换怎么选综合实验里最常见的两种方案我列个表对比一下方便你根据实验要求选。对比维度单臂路由Router-on-a-Stick三层交换机SVI核心设备路由器 二层交换机三层交换机物理连接路由器一个物理口接交换机划子接口交换机上直接建VLAN接口SVI转发性能受限于路由器单口流量都挤在一条链路上硬件转发性能高得多配置复杂度子接口封装dot1Q稍繁琐SVI配置直观但需开ip routing适用场景小型网络、教学实验、预算有限中大型企业网、核心汇聚层实验常见度几乎每个综合实验都会考进阶实验和真实项目主流选哪个取决于实验要求和设备条件。如果题目明确给了路由器并要求路由器单臂路由实现那就老老实实做单臂路由如果给的是三层交换机或者题目说用三层交换实现VLAN间路由那就走SVI。我个人的建议是两种都要会因为考试和面试都可能问而且理解了两者的差异你对三层转发的认识会深一个层次。2.3 办公室场景的地址规划不管用哪种方案地址规划都是第一步规划乱了后面全是坑。假设办公室三个部门我按常见做法规划VLAN 10 财务部192.168.10.0/24网关192.168.10.1VLAN 20 技术部192.168.20.0/24网关192.168.20.1VLAN 30 行政部192.168.30.0/24网关192.168.30.1服务器区 VLAN 100192.168.100.0/24网关192.168.100.1每个VLAN一个C段网关用.1主机从.2开始分配。这样规划的好处是网段和VLAN号有对应关系看到IP就知道属于哪个部门排查问题时一眼就能定位。子网掩码统一用255.255.255.0也就是/24一个C段254个可用地址对单个部门来说绰绰有余。提示网关地址一定要在规划阶段就定死并且全网统一。我见过有人财务网关用.254技术部用.1结果配ACL的时候写错方向排查了半天。3. 单臂路由方案的核心配置与实操3.1 拓扑搭建与物理连接单臂路由的拓扑很经典一台路由器一台二层交换机若干PC。路由器的某个以太网口比如GigabitEthernet0/0用一根线连到交换机的某个端口比如Fa0/1这个交换机端口要配成Trunk模式。PC分别接到交换机的其他Access端口上按VLAN划分。关键点在于路由器和交换机之间这条链路是Trunk要承载多个VLAN的流量。所以交换机侧那个口必须switchport mode trunk路由器侧则要在物理接口下划子接口每个子接口对应一个VLAN封装802.1Q并指定VLAN ID。物理连接看起来简单但有个坑有些老设备或者模拟器里路由器接口默认是关闭的记得no shutdown。还有如果用的是快速以太网口做Trunk带宽只有100M实验里无所谓真实环境要注意瓶颈。3.2 交换机侧的VLAN与Trunk配置先在交换机上把VLAN建好把端口划进去再把连路由器的口配成Trunk。配置大概长这样Switch enable Switch# configure terminal Switch(config)# vlan 10 Switch(config-vlan)# name Finance Switch(config-vlan)# vlan 20 Switch(config-vlan)# name Tech Switch(config-vlan)# vlan 30 Switch(config-vlan)# name Admin Switch(config-vlan)# exit Switch(config)# interface range fa0/10 - 15 Switch(config-if-range)# switchport mode access Switch(config-if-range)# switchport access vlan 10 Switch(config-if-range)# exit Switch(config)# interface range fa0/16 - 20 Switch(config-if-range)# switchport mode access Switch(config-if-range)# switchport access vlan 20 Switch(config-if-range)# exit Switch(config)# interface fa0/1 Switch(config-if)# switchport mode trunk Switch(config-if)# switchport trunk allowed vlan 10,20,30,100 Switch(config-if)# exit这里switchport trunk allowed vlan建议显式写清楚允许哪些VLAN通过而不是默认放行全部。真实环境里这是安全习惯实验里也能避免一些莫名其妙的广播流量干扰。另外注意Trunk两端允许的VLAN列表要一致否则会出现一边放行一边不放行的单通问题。3.3 路由器子接口配置与dot1Q封装路由器侧是单臂路由的灵魂所在。物理接口不配IP只开起来然后在它下面建子接口Router enable Router# configure terminal Router(config)# interface gigabitEthernet 0/0 Router(config-if)# no shutdown Router(config-if)# exit Router(config)# interface gigabitEthernet 0/0.10 Router(config-subif)# encapsulation dot1Q 10 Router(config-subif)# ip address 192.168.10.1 255.255.255.0 Router(config-subif)# exit Router(config)# interface gigabitEthernet 0/0.20 Router(config-subif)# encapsulation dot1Q 20 Router(config-subif)# ip address 192.168.20.1 255.255.255.0 Router(config-subif)# exit Router(config)# interface gigabitEthernet 0/0.30 Router(config-subif)# encapsulation dot1Q 30 Router(config-subif)# ip address 192.168.30.1 255.255.255.0 Router(config-subif)# exit子接口编号习惯上跟VLAN ID对应比如.10对应VLAN 10这样好记。encapsulation dot1Q 10这句是告诉路由器从这个子接口出去的包打上VLAN 10的标签进来的包如果带VLAN 10标签就交给这个子接口处理。这一步是单臂路由的核心配错了标签流量就进不来出不去。配完之后路由器会自动生成直连路由因为它有三个子接口分别属于三个网段。这时候PC把网关指向对应子接口的IP跨VLAN就能通了。你可以用show ip route确认一下应该能看到三条直连路由。3.4 PC端配置与连通性验证PC端就简单了配IP、掩码、网关。以财务部一台PC为例IP 192.168.10.2掩码255.255.255.0网关192.168.10.1。技术部PC192.168.20.2网关192.168.20.1。验证分三步走先ping同VLAN的邻居确认二层通再ping网关确认到网关的三层通最后ping其他VLAN的主机确认跨VLAN路由通。如果第一步就不通问题在接入端口或VLAN划分第二步不通问题在网关配置或PC网关地址第三步不通问题在路由器子接口或Trunk。我实测下来单臂路由最容易出问题的地方是子接口的dot1Q封装和交换机Trunk的native VLAN不匹配。默认native VLAN是1如果交换机Trunk口没改路由器子接口也没处理native VLAN一般不影响但如果有人改过native VLAN就会出现部分流量不通的诡异现象。4. 三层交换方案的核心配置与实操4.1 三层交换的转发原理三层交换机本质上是交换机加路由引擎。它在硬件里同时维护MAC表和路由表跨VLAN的流量第一次经过时走一次路由查找之后就能硬件快速转发。相比单臂路由所有跨VLAN流量都挤在路由器那一个物理口上三层交换的性能优势是碾压级的。三层交换实现VLAN间路由靠的是SVISwitch Virtual Interface交换机虚拟接口。每个VLAN建一个SVI配上网关IP开启路由功能后这些SVI之间就能互相路由。你可以把SVI理解成这个VLAN的网关就长在交换机内部。4.2 开启路由与SVI配置三层交换机默认路由功能可能是关闭的第一步必须ip routing。然后建VLAN、建SVISwitch enable Switch# configure terminal Switch(config)# ip routing Switch(config)# vlan 10 Switch(config-vlan)# vlan 20 Switch(config-vlan)# vlan 30 Switch(config-vlan)# vlan 100 Switch(config-vlan)# exit Switch(config)# interface vlan 10 Switch(config-if)# ip address 192.168.10.1 255.255.255.0 Switch(config-if)# no shutdown Switch(config-if)# exit Switch(config)# interface vlan 20 Switch(config-if)# ip address 192.168.20.1 255.255.255.0 Switch(config-if)# no shutdown Switch(config-if)# exit Switch(config)# interface vlan 30 Switch(config-if)# ip address 192.168.30.1 255.255.255.0 Switch(config-if)# no shutdown Switch(config-if)# exitSVI配好并且no shutdown之后show ip route应该能看到对应的直连路由。这里有个细节SVI的状态取决于该VLAN下是否有活动端口。如果VLAN 10里一个up的端口都没有SVI会是down的路由也不会生效。所以实验时确保每个VLAN至少接了一台开机的PC。4.3 端口划分与Trunk上联三层交换机的接入端口配置和二层一样switchport mode access加switchport access vlan X。如果三层交换机下面还挂了二层交换机那两者之间的链路要配Trunk并且Trunk上要允许所有相关VLAN通过。Switch(config)# interface range fa0/10 - 15 Switch(config-if-range)# switchport mode access Switch(config-if-range)# switchport access vlan 10 Switch(config-if-range)# exit Switch(config)# interface gigabitEthernet 0/1 Switch(config-if)# switchport trunk encapsulation dot1q Switch(config-if)# switchport mode trunk Switch(config-if)# switchport trunk allowed vlan 10,20,30,100注意有些三层交换机在配Trunk前必须先指定封装类型switchport trunk encapsulation dot1q否则会报错。这是平台差异遇到报错先查这一条。4.4 两种方案的实测对比我在模拟环境里把两种方案都跑了一遍用同样的拓扑和流量做对比。单臂路由在跨VLAN ping的时候延迟明显高一些因为流量要绕到路由器再回来路径长了一截。三层交换的SVI方案跨VLAN ping基本和同VLAN一个量级因为转发在交换机内部硬件完成。从配置量上看单臂路由要配子接口、封装、IP三层交换只要建SVI配IP后者更简洁。但单臂路由的教学价值更高因为它把三层转发需要网关这件事体现得非常直观。所以我的建议是实验课两种都做一遍理解原理真实项目里能用三层交换就用三层交换。5. 综合实验必考项DHCP与ACL访问控制5.1 用DHCP统一分配地址综合实验里很少让你手动配每台PC的IP通常要求用DHCP自动分配。单臂路由方案下DHCP可以配在路由器上三层交换方案下DHCP可以配在三层交换机上。以三层交换为例Switch(config)# ip dhcp pool vlan10 Switch(dhcp-config)# network 192.168.10.0 255.255.255.0 Switch(dhcp-config)# default-router 192.168.10.1 Switch(dhcp-config)# dns-server 8.8.8.8 Switch(dhcp-config)# exit Switch(config)# ip dhcp excluded-address 192.168.10.1 192.168.10.10excluded-address把网关和服务器等需要固定IP的地址排除掉避免冲突。每个VLAN建一个poolPC设成DHCP获取即可。验证的时候在PC上ipconfig看是否拿到了正确网段的地址和网关。注意如果DHCP服务器和客户端不在同一个VLAN需要配置DHCP中继ip helper-address。单臂路由场景下如果DHCP服务器在某个特定VLAN其他VLAN的请求就要靠中继转发。这是综合实验里常设的考点。5.2 用ACL实现部门间受控访问办公室场景的核心诉求是该通的通不该通的不通。比如财务部不允许技术部访问但所有人都能访问服务器区。这就用到ACL。以三层交换为例用扩展ACL限制技术部访问财务部Switch(config)# ip access-list extended DENY_TECH_TO_FIN Switch(config-ext-nacl)# deny ip 192.168.20.0 0.0.0.255 192.168.10.0 0.0.0.255 Switch(config-ext-nacl)# permit ip any any Switch(config-ext-nacl)# exit Switch(config)# interface vlan 20 Switch(config-if)# ip access-group DENY_TECH_TO_FIN in把ACL应用在VLAN 20的SVI入方向意思是从技术部进来的流量去财务部的拒绝其他放行。方向很关键应用在入方向比出方向更高效因为可以在流量进入的第一时间就过滤掉。ACL的坑特别多我列几个常见的通配符掩码写反0.0.0.255是匹配整个/24网段别写成255.255.255.0ACL末尾默认隐含deny any所以一定要显式写permit应用方向搞错导致该拦的没拦、该通的断了。排查ACL用show ip access-lists看匹配计数哪个条目命中多少次一目了然。6. 常见故障与排查技巧实录6.1 跨VLAN不通的排查顺序跨VLAN不通是最常见的故障我总结了一套从下往上的排查顺序照着走基本能定位先确认同VLAN内能通。不通就是接入端口或VLAN划分问题。再确认PC能ping通自己的网关。不通就是网关IP配错、SVI没up、或者PC网关地址写错。然后确认三层设备上有到目的网段的路由。show ip route看有没有直连路由。最后确认Trunk链路放行了相关VLAN。show interfaces trunk看允许列表。如果配了ACL检查ACL是否误拦。临时在接口上no ip access-group测试。这个顺序的逻辑是先排除二层问题再排除网关问题最后查路由和策略。很多人一上来就查路由结果发现是网线插错端口白白浪费时间。6.2 常见问题速查表故障现象可能原因排查命令解决方法同VLAN不通端口未划入VLAN或shutdownshow vlan brief划入正确VLAN并no shutdownping网关不通SVI down或网关IP错show ip interface brief确保VLAN有活动端口核对IP跨VLAN不通但网关通缺路由或Trunk未放行show ip route / show interfaces trunk补路由Trunk加allowed vlan部分VLAN通部分不通Trunk allowed列表不全show interfaces trunk补全允许的VLAN列表单臂路由子接口不通dot1Q封装VLAN号错show run interface核对encapsulation dot1Q编号DHCP拿不到地址缺中继或pool配置错show ip dhcp binding配ip helper-address核对poolACL配了但没生效应用方向或接口错show ip access-lists核对应用接口和in/out方向6.3 几个我踩过的坑第一个坑是native VLAN不一致。有一次实验交换机Trunk口native VLAN被改成了99路由器子接口没做对应处理结果管理流量时通时不通。后来统一把native VLAN保持默认1问题消失。真实环境里native VLAN两端必须一致这是硬性要求。第二个坑是SVI的up依赖。三层交换机上建了SVI但那个VLAN下没接任何开机设备SVI一直是down路由不生效。当时以为是配置错了查了半天才发现是VLAN里没活动端口。解决办法就是确保每个VLAN至少有一个up的接入端口。第三个坑是ACL通配符。192.168.10.0 0.0.0.255匹配的是整个192.168.10.0/24我一开始写成了192.168.10.0 255.255.255.0结果ACL完全不匹配流量全放行了。通配符是反掩码0表示必须匹配1表示忽略这个一定要记牢。第四个坑是单臂路由的物理口没no shutdown。子接口配得再对物理口是关的一切白搭。这个错误太低级但太常见尤其是模拟器里新建的接口默认可能是down的。7. 实验扩展与真实场景的差距7.1 从实验到真实网络的几个差异实验里我们通常用一台三层交换机搞定所有VLAN间路由但真实企业网里VLAN间路由往往分布在核心层和汇聚层。核心层做高速转发汇聚层做策略控制接入层只管二层接入。这种分层设计是为了可扩展性和故障隔离。另一个差异是冗余。实验里就一条链路断了就断了。真实网络里Trunk要做链路聚合三层设备要做网关冗余比如HSRP或VRRP保证单点故障不影响业务。这些在综合实验里可能作为加分项出现值得提前了解。还有就是安全策略的复杂度。实验里几条ACL就够了真实环境里可能有防火墙、IPS、802.1X认证等多层防护。VLAN间路由只是其中最基础的一环。7.2 可以继续深挖的方向如果你把这个实验做完了还想深入我建议往这几个方向走一是研究VLAN间路由的性能优化比如用CEFCisco Express Forwarding加速转发二是研究策略路由让特定流量走特定路径三是研究私有VLANPVLAN在同一个VLAN内部再做隔离适合酒店、运营商场景。这些内容在综合实验里不一定考但理解了它们你对整个二层三层体系的认识会完整很多。网络这东西实验是骨架真实场景是血肉两者结合才能真正学透。最后分享一个我自己的习惯每次做完实验把配置导出保存然后故意改坏一两个参数看现象、查原因、再改回来。这种破坏性测试比顺顺利利配一遍学到的东西多得多。跨VLAN通信的坑基本都是这么踩出来的。