ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

路由器物理端口实现VLAN间通信:从原理到配置详解

路由器物理端口实现VLAN间通信:从原理到配置详解 路由器物理端口连接二层交换机实现VLAN间的通信这个方案在真实组网里没有单臂路由那么常见但却是理解VLAN间通信原理的一条捷径。很多人在做跨VLAN互通时第一反应是单臂路由路由器创建一个物理口交换机侧口改成trunk再在路由器上创建一堆子接口。这个思路没问题但如果你手头的路由器正好有多个空闲物理口或者你只是想用最简单的方式把二层网络切成几个独立VLAN再打通那完全可以用物理端口方案每个VLAN占用路由器一个物理接口二层交换机把连接路由器的端口划到对应VLAN剩下的ARP解析、路由转发全部交给路由器完成。下面我会以华为ensp为例从拓扑规划、交换机侧VLAN划分、路由器接口配置、数据转发原理到故障排查把这套方案完整拆一遍。不管你是刚开始学数通还是已经会配单臂路由但想换个思路这篇文章都能帮你把VLAN间通信的细节理得更清楚。1. 先想清楚物理端口方案到底解决什么问题1.1 VLAN间通信的本质卡点VLAN是交换机上的二层隔离技术。同一个VLAN内的设备可以直接通过MAC地址表转发不需要三层设备参与而不同VLAN之间的数据帧在二层是隔离的必须依靠三层设备来路由。VLAN间通信要解决的核心问题就是把不同二层广播域中的IP流量接到同一个三层转发引擎上。从这个角度看三层设备只要能分别拥有每个网段的接口或接口地址当它确定目标不是自己时把报文往目标网段转发出去就能完成VLAN间通信。物理端口方案正是基于这个最基本的概念路由器每个物理接口配置成一个网段的网关每个网段在路由器里都是一条直连路由报文进来后查路由表找到目标网段的出接口再转发出去。该方案把路由器和交换机之间的链路处理成两条独立的接入链路全程不涉及802.1Q标签、子接口终结或trunk。这种“原始感”正是它的学习价值所在。1.2 三种三层方案对比实现VLAN间通信业界常见有三种方案单臂路由、三层交换机VLANIF、路由器物理接口。方案核心思路优点缺点适合场景单臂路由一个物理口 子接口 trunk节省物理口支持多个VLAN配置稍复杂子接口依赖dot1q单链路可能是瓶颈VLAN数量较多但没有三层交换机三层交换机VLANIF创建VLANIF接口充当网关转发性能强接口消耗少需要三层交换机配置概念稍多园区网、企业核心、汇聚路由器物理接口每个VLAN对应路由器一个物理口配置最简单排错直观没有VLAN标签消耗路由器物理口VLAN多时不可行VLAN少、路由器口多的小型网络如果你的设备只有一台普通二层交换机和一台多口路由器物理接口方案最直接。如果你有十几个VLAN就不要考虑物理接口方案了老老实实上三层交换机或者单臂路由。物理接口方案更大的意义在于教学和验证它能让一个没有VLAN概念的路由器用最普通的IP接口完成跨VLAN路由。把这个流程看懂后面理解单臂路由会容易很多。我一般会建议学习者先把物理接口方案配置通过再切换成单臂路由。这样能直观感受到同样是三层转发不同的链路承载方式会带来完全不一样的配置逻辑。2. 拓扑设计与IP规划2.1 网络拓扑与设备选型在ensp中推荐使用AR2220路由器、S5700二层交换机。拓扑结构如下路由器R1的G0/0/0接交换机SW1的G0/0/3。路由器R1的G0/0/1接交换机SW1的G0/0/4。PC1接SW1的G0/0/1属于VLAN10。PC2接SW1的G0/0/2属于VLAN20。这里要特别提醒一个关键点SW1和R1之间的两条链路必须都是access口并分别划入VLAN10和VLAN20不能做成trunk。原因在原理部分会详细讲配置时先记住这个结论能省不少排错时间。2.2 IP与VLAN规划表位置VLAN / 接口IP地址网关PC1VLAN10接SW1 G0/0/1192.168.10.2/24192.168.10.1PC2VLAN20接SW1 G0/0/2192.168.20.2/24192.168.20.1SW1上联路由器口1VLAN10G0/0/3无无SW1上联路由器口2VLAN20G0/0/4无无R1 G0/0/0无特殊VLAN192.168.10.1/24无R1 G0/0/1无特殊VLAN192.168.20.1/24无可以看到PC1的网关就是路由器G0/0/0的IPPC2的网关就是路由器G0/0/1的IP。交换机上的VLAN只负责隔离广播域而路由器的物理接口直接接入对应VLAN网段。这样设计后VLAN10和VLAN20之间的报文经过路由器两个物理接口转发实现互通。如果在真机上操作还要注意一点交换机和路由器之间、交换机和PC之间一般都使用直通线且两端接口速率需要协商一致。ensp里连线类型的影响不大但真机上如果接口指示灯不亮优先怀疑线缆和端口速率。3. 配置实操从交换机到路由器3.1 交换机创建VLAN并划分端口在ensp中双击交换机SW1进入CLI清空旧配置后按下面顺序配置。system-view sysname SW1 vlan batch 10 20 interface GigabitEthernet0/0/1 port link-type access port default vlan 10 interface GigabitEthernet0/0/2 port link-type access port default vlan 20 interface GigabitEthernet0/0/3 port link-type access port default vlan 10 interface GigabitEthernet0/0/4 port link-type access port default vlan 20 quit display vlan解释一下几条命令vlan batch 10 20一次性创建VLAN10和VLAN20。port link-type access把端口设置为access模式。access口连接的主机或路由器设备不会识别VLAN标签交换机从该口收到的报文会被打上对应VLAN的内部标签从该口发出的报文会去掉标签。port default vlan 10把端口划入VLAN10。重点是G0/0/3和G0/0/4这两个口连接的是路由器但仍然是access模式。因为它们各自只承载一个VLAN网段不需要同时传输多个VLAN的报文。如果这里配置成trunk路由器普通物理接口收到带VLAN Tag的帧会直接识别异常ping测试必然失败。接口配置完成后可以用display vlan确认VLAN10下包含G0/0/1和G0/0/3VLAN20下包含G0/0/2和G0/0/4。3.2 路由器接口配置配置路由器R1进入接口视图后直接配置IP。这里不需要子接口不需要子接口封装更不需要任何VLAN标签。system-view sysname R1 interface GigabitEthernet0/0/0 ip address 192.168.10.1 255.255.255.0 undo shutdown interface GigabitEthernet0/0/1 ip address 192.168.20.1 255.255.255.0 undo shutdown quit display ip routing-tableundo shutdown是为了避免ensp模拟器里接口默认为shutdown状态。真机一般不需要这行但加上也不会有副作用。配置完成后在R1上执行display ip routing-table应该能看到两条直连路由192.168.10.0/24Direct出接口G0/0/0192.168.20.0/24Direct出接口G0/0/1这两条直连路由是路由器转发跨VLAN报文的关键。没有它们即使接口配置了IP路由器也无法判断该从哪个口转发。3.3 连通性测试配置完成后按照下面的顺序逐级测试。在PC1上ping 192.168.10.1。通说明PC1到路由器网关链路正常。在PC1上ping 192.168.20.2。通说明VLAN10到VLAN20的跨网段通信成功。在PC2上ping 192.168.10.2。通说明回程路径也正常。如果第二步不通但第一步已经通了可以在R1上执行ping 192.168.20.2。这个操作能区分问题范围如果R1 ping通192.168.20.2说明交换机到PC2的VLAN20链路没问题问题可能出在PC1、PC2的网关或防火墙设置。如果R1 ping不通192.168.20.2说明路由器到PC2的链路或VLAN20划分有问题。注意路由器自己ping PC2和PC1 ping PC2的路径不完全一样但它能快速隔离故障点。实际排错时我习惯把这种方式当成“分段测试”的第一步。4. 原理拆解一个ping包是怎么跨过VLAN的4.1 数据帧从PC1到路由器的全过程以PC1 ping PC2为例。PC1判断出目的IP 192.168.20.2和自己不在同一网段于是把报文交给默认网关192.168.10.1。封装时源IP是192.168.10.2目的IP是192.168.20.2源MAC是PC1的MAC目的MAC是网关192.168.10.1对应的MAC也就是路由器G0/0/0的MAC。PC1发送的以太网帧本身不带VLAN标签。这个帧从SW1的G0/0/1进入交换机后交换机给它打上VLAN10的内部标签然后在VLAN10内转发。由于G0/0/3也属于VLAN10交换机会把这个帧从G0/0/3转发给路由器。从G0/0/3发出时帧会被去掉VLAN标签因此路由器G0/0/0收到的是一个普通以太网帧。这个过程解释了为什么该方案不需要在路由器上配置VLAN。VLAN标签在交换机内部就已经被剥离了路由器看到的只是普通IP报文。4.2 路由器为什么能把包转发到另一个VLAN路由器解封装后看到目的IP是192.168.20.2。因为该IP不是路由器自身的接口地址所以它需要查路由表。由于G0/0/1已经配置了192.168.20.1/24路由表中存在直连路由192.168.20.0/24路由器知道目标网段对应出接口G0/0/1。路由器从G0/0/1发出报文前先查ARP表。如果ARP表里没有PC2的MAC路由器会在G0/0/1所在网段发送ARP请求询问谁是192.168.20.2。ARP请求从G0/0/1发出进入SW1的G0/0/4交换机把它划入VLAN20在VLAN20内广播。PC2收到后回复自己的MAC。路由器拿到PC2的MAC后重新封装以太网帧源MAC是G0/0/1的MAC目的MAC是PC2的MAC发送给交换机。交换机会继续在VLAN20内转发把帧从G0/0/2发给PC2。PC2收到请求后生成回包源IP是192.168.20.2目的IP是192.168.10.2。由于目的不在同一网段PC2把回包交给网关192.168.20.1也就是路由器G0/0/1。回包路径完全对称。4.3 为什么物理端口方案不依赖trunk普通路由器物理接口没有开启802.1Q封装也没有子接口概念所以它只能识别不带VLAN标签的普通帧。如果交换机侧把连接路由器的接口配成trunk帧会被打上VLAN Tag普通物理接口要么丢弃要么无法正常解析VLAN间通信立刻失败。这正是物理端口方案和单臂路由的本质区别单臂路由交换机上联口是trunk路由器物理口下创建子接口每个子接口通过dot1q termination vid识别VLAN标签。物理端口方案交换机上联口是accessVLAN隔离在交换机上完成路由器通过不同物理口接入不同VLAN网段不需要识别任何标签。所以配置时只要把上联路由器的口保持为access就不会出现VLAN标签不匹配的问题。5. 故障排查先看端口再看VLAN最后看路由5.1 第一层检查物理接口状态如果PC1 ping不通网关先不要急着改IP配置。第一步在路由器上执行以下命令。display interface brief确认G0/0/0和G0/0/1都是up状态。再在交换机上执行同样的命令确认G0/0/1、G0/0/2、G0/0/3、G0/0/4没有down。ensp中接口down一般有两个原因一是连线没有真正连上二是接口被shutdown。真机上还要考虑网线、光模块和端口协商问题。物理层不通时上层所有配置都不生效。这个检查顺序一定要养成习惯。5.2 第二层检查VLAN划分和端口模式在交换机上查看当前VLAN端口划分。display vlan或者更精确一点查看指定端口的工作模式。display port vlan重点检查四件事G0/0/1属于VLAN10。G0/0/2属于VLAN20。G0/0/3属于VLAN10且链路类型是access。G0/0/4属于VLAN20且链路类型是access。最容易出的问题有两个。一是连接路由器的接口被配置成trunk导致VLAN标签无法被路由器识别。二是接口保持默认的hybrid模式并且默认VLAN不对。华为交换机端口默认是hybrid如果之前做过实验端口状态会比较乱。最稳妥的做法是把所有相关端口统一改为access再划分VLAN。5.3 第三层检查IP、网关和ARPPC端确认IP和网关设置。很多人在ensp中会把两台PC配置成同一网段那当然用不到路由器。正确规划是PC1在192.168.10.0/24PC2在192.168.20.0/24网关分别是192.168.10.1和192.168.20.1。在路由器上执行display ip routing-table确认存在192.168.10.0/24和192.168.20.0/24两条直连路由。再执行display arp看路由器是否学习到了PC1和PC2的MAC地址。如果ARP表里只有自己的接口MAC没有PC2的MAC说明VLAN20内的广播报文没有正常到达路由器问题大概率出在交换机的VLAN20端口划分上。5.4 常见问题速查表现象可能原因处理方式PC1 ping不通192.168.10.1PC1 IP或网关错误交换机G0/0/1未划到VLAN10核对PC配置用display vlan查端口PC1能ping通网关但ping不通192.168.20.2路由器缺少20网段直连路由G0/0/4未划到VLAN20PC2网关错误查路由表查端口VLAN检查PC2所有PC都能ping通网关跨VLAN不通上联路由器的口被配成trunkARP表异常改为access清ARP后重ping路由器接口down连线没连好接口被shutdowndisplay interface briefundo shutdownPC2能ping通PC1PC1 ping不通PC2PC2的回程路由或防火墙异常在PC2上ping网关检查网关配置排查跨VLAN问题我一般不会直接跳到配置层面。先把display interface brief、display vlan、display ip routing-table、display arp四个命令的输出看一遍能定位大约八成问题。6. 扩展多个VLAN、DHCP和方案选择6.1 多个VLAN时还能用物理接口方案吗能用但代价是路由器物理接口数量。三个VLAN需要三个物理接口交换机也要给路由器留三个独立的access口。现实中家用路由器、企业出口路由器的可用LAN口数量有限所以物理接口方案更适合VLAN数量很少的网络。如果VLAN数量超过5个建议换成单臂路由。交换机上联口改成trunk路由器物理口下创建子接口每个子接口配置一个VLAN的网关IP并用dot1q termination vid完成封装。虽然命令更复杂但物理口只需要一个扩展性更好。如果网络规模进一步变大比如园区网、办公网最好直接使用三层交换机。通过VLANIF接口配置网关路由转发由交换机硬件完成性能和稳定性都远强于路由器。6.2 在路由器上配置DHCP物理接口方案中路由器接口就是网关可以直接在该接口上启用DHCP让PC自动获取IP。dhcp enable interface GigabitEthernet0/0/0 dhcp select interface dns server 223.5.5.5 interface GigabitEthernet0/0/1 dhcp select interface这样VLAN10内的PC从192.168.10.1接口动态获取10网段地址VLAN20内的PC从192.168.20.1获取20网段地址。PC端改为DHCP获取即可。注意一个细节如果交换机端口划分正确不会出现PC跨网段获取地址的情况因为每个VLAN是独立的广播域DHCP请求只能在各自VLAN内被路由器接口接收。6.3 到底选物理接口、单臂路由还是三层交换机我的判断标准主要有三个维度VLAN数量、设备条件、配置维护成本。如果VLAN只有两三个路由器有空闲物理口追求配置简单选物理接口方案。如果VLAN超过五个且没有三层交换机选单臂路由。虽然子接口配置多一点但扩展性更好。如果是生产网络或者要求转发性能稳定优先选三层交换机VLANIF。物理接口方案更适合学习和临时验证。物理接口方案的局限性很明显但它能让人把“网关”“直连路由”“ARP解析”“VLAN划分”这些基础概念理解得非常扎实。实际排错时只要把数据帧的流向一步步拆开很多看似复杂的问题都会变得很清楚。我自己的习惯是每次搭完这个拓扑先不看配置先在PC上ping一轮再去交换机看display vlan到路由器看display ip routing-table和display arp。能把这几条命令的输出串起来物理接口方案的原理就基本掌握了。实际项目里除非是非常小的网络我不会用大量物理口去做VLAN间通信更多是用它来验证思路和学习。如果你正在学VLAN间通信建议先把物理端口方案跑通再切换到单臂路由感受一下同样一个目标两种实现路径的区别。
返回列表