不同网段如何互通?单臂路由配置与eNSP实验详解
干了这些年数通方向最常被新入门的朋友拉着问的一个问题就是“两台交换机两个网段到底怎么做到互通”不少人兴冲冲地在eNSP里拖出两台交换机和两台PC网线一连IP一配然后满怀期待地ping结果报文发出去之后石沉大海连一点涟漪都没有。第一反应往往是“交换机配置写错了”其实真正的问题比这个更深一层不同网段之间的通信压根就不是二层交换机能独立完成的事。这次我就在eNSP里做一遍基础实验1用两台交换机、两个不同网段加上一台路由器做单臂路由把从拓扑规划到命令配置、再到故障排查的完整链路完整走一遍。这个实验非常适合刚接触数通、正在备考认证或者刚入行做网络运维的新手把它吃透了VLAN、Trunk、子接口、默认网关这些抽象概念在真实场景里是怎么配合的就全都串起来了。1. 拓扑设计与地址规划先明确“谁在哪个网段、谁做路由”1.1 二层转发与三层路由的分界先说一个经常被忽略的基础认知二层交换机的主要工作是查MAC地址表然后在同一个广播域内转发帧。一台PC的IP是192.168.10.10另一台PC的IP是192.168.10.20它俩在同一个网段那交换机只要知道各自的MAC地址就能把帧从对应端口送过去这个过程不涉及“去哪个方向的城市”只涉及“这条街上的哪个门牌号”。但一旦PC1的IP变成192.168.10.10PC2的IP变成192.168.20.10情况就变了。数据发送方每次要发IP包时会先看目的IP和自己的IP是不是在同一个网段。不在同一个网段时它会把这个包先交给一个叫“默认网关”的地址而不是直接去找目的IP。这个网关是谁在实验里就是路由器上那两个子接口的IP。所以两层交换机不管怎么配都无法替PC完成“跨网段路由”这件事它只能保证“带了VLAN标签的帧能在Trunk链路上跑”最终把帧准确地送到路由器上。理解了这个分界你再看两交换机不同网段互通这件事思路就会清晰很多交换机的任务是隔离和透传路由器的任务是终结和路由缺了哪一个PC之间都不可能互通。1.2 单臂路由拓扑与参数规划我这次采用的拓扑是经典得不能再经典的单臂路由Router-on-a-StickPC1接在交换机SW1上属于VLAN 10IP地址192.168.10.10/24PC2接在交换机SW2上属于VLAN 20IP地址192.168.20.10/24SW1与SW2之间用Trunk链路相连同时SW1再通过一条Trunk链路连到路由器R1的GE0/0/0R1上把GE0/0/0拆分成两个子接口分别终结VLAN 10和VLAN 20作为两个网段的网关。这样拓扑下来PC1到PC2的流量路径是PC1 - SW1 - SW1与SW2之间Trunk - SW2 - PC2前提是R1已经参与转发而实际上数据包会先从PC1到SW1再经Trunk送到R1由R1查路由后从Trunk链路带着VLAN 20的标签送到SW2最终从SW2的Access口剥离标签到达PC2。这个细节后面配置完再展开。下面是我习惯用的地址规划表也建议你在eNSP里照着建设备接口/连接对象IP地址VLAN/链路类型作用R1GE0/0/0.10192.168.10.1/24802.1Q终结VLAN 10VLAN 10的网关R1GE0/0/0.20192.168.20.1/24802.1Q终结VLAN 20VLAN 20的网关SW1GE0/0/2连PC1无AccessPVID VLAN 10接入PC1SW1GE0/0/1连R1无Trunk放行VLAN 10/20上行到路由器SW1GE0/0/3连SW2无Trunk放行VLAN 10/20交换机间互联SW2GE0/0/1连SW1无Trunk放行VLAN 10/20交换机间互联SW2GE0/0/2连PC2无AccessPVID VLAN 20接入PC2PC1以太网口192.168.10.10/24默认网关192.168.10.1VLAN 10的终端PC2以太网口192.168.20.10/24默认网关192.168.20.1VLAN 20的终端1.3 eNSP设备选型与连接思路eNSP里的设备型号我一般固定用三样路由器选AR2220交换机选S5700终端用最普通的PC。你别小看这个选型问题AR2220是eNSP中比较万金油的三层设备子接口数量足够性能模拟也稳定S5700虽然是三层交换机但在这个实验里只把它当二层用这样能让“二层交换三层路由”的分工边界特别清晰新手不会把两件事搅在一起。连线的时候有个习惯值得养成先把线连好再启动设备。启动顺序对eNSP这种模拟器来说挺重要如果一次性把四台设备全开不少人会碰到启动缓慢、控制台半天刷不出来的情况。我的做法是先启动两台交换机等它们的启动ID出现、命令行能敲了再启动路由器AR2220最后才去配置PC。PC不需要启动按钮直接在图标上右键选择配置即可。还有一个小细节eNSP里设备启动后会有一个“启动成功”的提示有时候控制台里卡在“System is starting”很长时间别着急重启多半是设备还在初始化。等两三分钟是常事尤其是电脑配置一般的情况下。这也是很多新手一遍又一遍重敲配置却始终感觉“设备没反应”的真相之一。2. 交换机侧实操VLAN隔离和Trunk透传配错一个就全断2.1 二层交换机到底做了什么在这个实验里SW1和SW2的配置工作有且只有两件一是把PC接入的端口划分到正确的VLAN二是把连接路由器或另一台交换机的端口设置成Trunk并放行相关VLAN。很多新手容易把VLAN想得很高大上其实它就是给二层帧“染了个色”从Access口进来的无标签帧交换机会给它打上端口PVID对应的VLAN标签Trunk口则会把这个带标签的帧原封不动地送出去。两台交换机之间、交换机和路由器之间靠的就是这个标签来区分“我是VLAN 10的流量”还是“我是VLAN 20的流量”。所以如果SW1与SW2之间的链路配成了Access那么VLAN 20的帧在这里就会被直接丢弃或者当作PVID VLAN的帧处理PC2的流量根本出不了SW2。这种错误非常隐蔽因为你单独看每台交换机配置都“没错”但连起来就全断。2.2 SW1与SW2的完整配置命令打开SW1的命令行进入系统视图按下面的顺序配置system-view sysname SW1 vlan batch 10 20 interface GigabitEthernet0/0/2 port link-type access port default vlan 10 quit interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 10 20 quit interface GigabitEthernet0/0/3 port link-type trunk port trunk allow-pass vlan 10 20 quit解释一下关键几条命令的意图。vlan batch 10 20是一次性把VLAN 10和VLAN 20都创建出来你不会想一条条敲vlan 10再vlan 20的。port link-type access和port default vlan 10把连接PC1的GE0/0/2定义成Access口所有从PC1进来的无标签帧都被打上VLAN 10的标签。port link-type trunk则把GE0/0/1和GE0/0/3切到Trunk模式port trunk allow-pass vlan 10 20是核心中的核心告诉交换机这两个Trunk口允许VLAN 10和VLAN 20的带标签帧通过。SW2的配置逻辑与SW1完全对称区别只在接入PC2的口要划到VLAN 20system-view sysname SW2 vlan batch 10 20 interface GigabitEthernet0/0/2 port link-type access port default vlan 20 quit interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 10 20 quit这里有个值得强调的细节SW2的GE0/0/1连向SW1同样必须放行VLAN 10和VLAN 20。别只想着“PC2只在VLAN 20里面”因为PC1的流量要经过R1转发回来最终会以VLAN 20的标签从SW1的Trunk口送到SW2如果SW2的上行Trunk口不接收VLAN 20回包一样会被丢弃。这就是我前面说的“配错一个就全断”最典型的情况。2.3 用display命令验证VLAN和Trunk状态配置敲完别急着去ping先在交换机上确认一下状态。display vlan能看到当前设备上存在哪些VLAN以及每个VLAN包含哪些端口display port vlan能更直观地看到每个端口工作在什么模式下PVID是多少允许哪些VLAN通过。比如在SW1上执行display port vlan你希望看到GE0/0/1和GE0/0/3都是Trunk类型且“VLAN allowed”一栏里同时有10和20GE0/0/2是Access类型PVID为10。我在带新人做这个实验时会刻意让他们养成“配完就验证”的习惯而不是等全部设备配完再一起排错。网络调试的体验是立竿见影的你把SW1配置完display vlan一刷VLAN 10和20都在Trunk口的放行列表也没有遗漏这就等于排掉了一半的雷。等PC端和路由器都配完剩下的问题范围就小很多。2.4 PC机与Access口的一点常识在eNSP里配置PC非常傻瓜右键PC1选“配置”填上IP地址192.168.10.10、掩码255.255.255.0、网关192.168.10.1PC2填192.168.20.10、掩码255.255.255.0、网关192.168.20.1。这里最容易犯的错有三个网关漏填、网关填错、掩码格式写成255.255.255.0却少打一位。PC的网关地址必须和路由器的子接口IP完全一致差一个数字都不行。再补充一个底层认知PC网卡发出的以太网帧是不带VLAN标签的它自己不会“染色”。这个染色动作发生在交换机的Access口上。所以你在PC上看不到任何VLAN信息也不需要配置VLANVLAN概念对终端设备来说是透明的。很多新手跑到PC上找VLAN配置的地方找半天找不到其实方向就错了。3. 路由器单臂路由配置一个物理口两个网段的网关3.1 802.1Q子接口终结VLAN的原理路由器的物理口GE0/0/0只有一根线连到SW1可它需要同时充当VLAN 10和VLAN 20两个网段的网关。怎么做答案是思科的叫法和华为的叫法其实一回事在物理口上创建多个子接口每个子接口对应一个VLAN ID通过802.1Q封装的VID字段来区分“这帧是给哪个网段网关的”。交换机Trunk口送上来的是一个带标签的帧路由器物理口收到的其实是同一根链路里混着的一堆不同标签的帧。子接口的dot1q termination vid 10就是用来“认领”VID为10的帧的dot1q termination vid 20认领VID为20的帧。然后再给每个子接口配上对应网段的IP地址路由器的路由表里自然就出现了192.168.10.0/24和192.168.20.0/24两条直连路由。这就是“单臂路由”名字的由来物理上只有一条胳膊逻辑上却管着两个网段。3.2 R1子接口配置命令与关键参数回到R1的命令行物理接口GE0/0/0不需要配IP直接在系统视图下创建子接口system-view sysname R1 interface GigabitEthernet0/0/0.10 dot1q termination vid 10 ip address 192.168.10.1 255.255.255.0 arp broadcast enable quit interface GigabitEthernet0/0/0.20 dot1q termination vid 20 ip address 192.168.20.1 255.255.255.0 arp broadcast enable quit其中一个极其关键的参数是arp broadcast enable。华为路由器在dot1q终结子接口上默认不响应广播ARP而PC在跨网段通信前第一步必须解析网关IP的MAC地址也就是发ARP广播。如果这条命令没配你会在PC上看到同网段能通、网关却“Ping不通”的怪象而实际上问题不在IP在于子接口不回ARP。这条命令我几乎每次都要强调一遍因为漏掉的概率太大了。dot1q termination vid后面跟的VLAN ID要和交换机上PC所在VLAN一一对应PC1在VLAN 10对应的子接口就是.10PC2在VLAN 20对应的子接口就是.20。子接口编号其实可以和VLAN不同名比如叫.100也行只要vid设置对就行但建议保持编号和VID一致方便后期维护。3.3 为什么物理口本身不能再配IP可能有朋友会问我能不能在GE0/0/0上直接配一个192.168.10.1再开个子接口管VLAN 20我的建议是别这么干。物理口本身没有绑定VLAN它收到的帧经过子接口终结后物理口其实只负责“把带标签的帧收进来解封装”。你在物理口上配IP会让它成为一个VLAN 1或其他默认VLAN的第三层接口这在单臂路由场景里容易造成路由和ARP的混乱尤其对新手排查极不友好。正确做法就是物理口干干净净所有逻辑网关全部落在子接口上。这也符合“单臂路由”这条链路的真实工作方式物理口是个共用通道子接口才是各个VLAN的终点。配置完成后可以执行display ip interface brief检查子接口状态你会看到GE0/0/0.10和GE0/0/0.20的协议状态Protocol都是up且各自绑定了IP。如果Protocol是down大概率是dot1q termination vid没配或者配错检查一下VLAN ID。若物理口没打开还需要在物理接口视图下执行undo shutdown确认接口没有被关闭。4. 连通性实测从PC1 ping PC2的完整数据流与排查4.1 正常路径一次Ping背后的完整流程当PC1敲下ping 192.168.20.10时背后发生的完整过程值得刻在脑子里。首先PC1发现目的IP和自己不在同一网段于是立刻发一个ARP广播询问192.168.10.1这个网关的MAC地址。这个广播帧从PC1的网卡出来进入SW1的GE0/0/2被打上VLAN 10的标签SW1在MAC表里查到GE0/0/1可以通往路由器于是把帧通过Trunk口送出R1的GE0/0/0.10子接口接收并处理再通过arp broadcast enable响应ARP应答。PC1拿到网关MAC后开始发送ICMP Echo请求源IP是192.168.10.10目的IP是192.168.20.10目的MAC是网关的MAC。路由器收到后查找路由表发现192.168.20.0/24是一条直连路由从GE0/0/0.20发出。这时数据包被重新封装成以太网帧打上VLAN 20的标签从R1的GE0/0/0回到SW1。SW1在Trunk口上看到VLAN 20的标签再从GE0/0/3的Trunk口转发给SW2SW2收到后查MAC表把帧从Access口GE0/0/2剥离VLAN 20标签后发给PC2。PC2的回应报文再按相反路径走回去。一个“跨网段”实际上要经历两次“出网段”、两次“进网段”中间全是路由器和交换机的配合。4.2 先看路由、再看VLAN、最后看ARP的排查顺序如果PC1 ping PC2失败我一般不建议上来就抓包。先按“路由 - VLAN - ARP”这个顺序排查效率最高。先在R1上执行display ip routing-table确认192.168.10.0/24和192.168.20.0/24两条路由都在且都指向对应的子接口。缺了任一条说明子接口IP没配、或子接口状态没起来。然后在SW1和SW2上执行display port vlan确认两台交换机之间、交换机和路由器之间Trunk口都放行了VLAN 10和20Access口的PVID也对得上。最后才回到PC侧确认PC1的ARP表里有网关192.168.10.1的MAC地址如果没有再回去查R1子接口的arp broadcast enable是不是被漏掉了。这个顺序本身就是个逻辑推理链条路由解决“往哪发”VLAN解决“能不能传到”ARP解决“有没有入口”。顺着查一遍99%的实验问题都能定位到。4.3 新手最容易踩的三个坑第一个坑是Trunk链路两边放行VLAN不一致。SW1的Trunk口放行了VLAN 10和20SW2的Trunk口却只写了VLAN 20那PC1的流量就算能到R1回包也到不了SW2。这类问题在display port vlan下原形毕露所以配置命令里port trunk allow-pass vlan后面的列表一定复制粘贴时检查两次。第二个坑是子接口VID和PC网段不对应。比如PC1的网关是192.168.10.1但R1子接口.10的dot1q termination vid写成20那PC1发出的VLAN 10帧到了R1后无人认领肯定通不了。这种配置往往不会报错但一ping就“请求超时”肉眼查配置最容易忽视。第三个坑就是前面提到的ARP广播问题。漏掉arp broadcast enable的典型现象是PC能ping通同网段的网关实际上网关在同网段有时要借助其他方式去判断但跨网段的主机怎么都ping不通或者是路由器上能看到PC发来的ARP报文但不回。这个坑我踩过的次数实在太多所以每次配单臂路由都会条件反射般地补上这条命令。5. 换一种思路三层交换机VLANIF与静态路由的对比5.1 VLANIF方案配置要点单臂路由虽然经典但实际生产环境里更常看到的是用三层交换机做VLAN间路由也就是VLANIF虚拟接口。如果在这个实验基础上继续进阶可以把R1撤掉把SW1和SW2换成三层交换机配置思路完全不一样。在三层交换机上VLAN 10会有一个虚拟三层接口VLANIF 10IP设置为192.168.10.1/24VLAN 20对应的VLANIF 20设置为192.168.20.1/24。这两个网段的PC网关直接落在交换机上。如果只在一台三层交换机上同时创建两个VLANIF那这台交换机本身就具备路由能力PC1和PC2就能经由它跨网段通信不需要再外挂路由器。这就是三层交换机和二层交换机最本质的区别它不仅有MAC表还有路由表。如果是两台三层交换机各管一个网段那还需要在交换机之间配置静态路由让SW1知道“去找192.168.20.0/24的下一跳是谁”SW2也要知道“去找192.168.10.0/24的下一跳是谁”否则数据包到了本地交换机后找不到方向照样不通。5.2 单臂路由 vs 三层交换机怎么选不少新手会问单臂路由是不是已经过时了倒也不能这么说。从成本看单臂路由的优势是“把一台路由器用到了极致”一条物理链路上承载多个VLAN的流量端口利用率高适合VLAN数量不多、流量规模不大的场景也特别适合做教学实验因为它的每一步都清晰可见。三层交换机则是把路由功能硬件化、转发层面芯片化VLAN间流量吞吐和延迟表现都更好适合VLAN多、东西向流量大的网络。缺点也明显三层交换机往往比同档次的二层交换机贵在eNSP里做实验时核心命令的“抽象程度”也更高新手很容易只配了VLANIF却不理解路由表的作用。我的建议很直白先把单臂路由这个实验做熟把“数据包在交换机和路由器之间如何流转”的细节彻底想明白再去做VLANIF和静态路由的实验你会发现三层交换机的配置本质上就是“把路由功能内置到交换机里”之前的原理一点都不会浪费。5.3 后续扩展路线多VLAN、动态路由完成这个基础实验1之后可以试着往三个方向扩展。一是加VLAN把网络扩展到VLAN 30、VLAN 40在R1上增加一个子接口在交换机上批量创建VLAN并放行看看路由表会变成什么样。二是加动态路由比如在三层交换机上加OSPF把直连网段宣告进协议这样后续再增加设备时就不用手工维护一条条静态路由。三是在交换机间链路上做链路聚合把两条物理链路捆成一条逻辑链路观察Trunk在Eth-Trunk上的配置方式。这些扩展每做一步都会反过来加深你对基础实验1的理解。尤其是OSPF当你看到路由表里出现“O”开头的路由条目时再回头想单臂路由里配置的那些直连路由就会明白“直连路由静态路由动态路由”的优先级为什么那么排列以及路由表到底在转发决策里扮演什么角色。5.4 我在实际实验中的几点体会最后说几个很个人化的经验。一是eNSP里的设备虽然是模拟的但配置命令和真实设备高度一致你在模拟器里踩过的坑在真实交换机上大概率也能碰到所以别把它当游戏玩每一步配置都要认真对待。二是遇到不通的情况先别急着删了重配打开display current-configuration把每台设备的配置截图式审一遍很多问题说白了就是写错了一位IP或者漏放了一个VLAN。三是给自己养成“存配置”的习惯。eNSP的配置不会自动保存关掉工程再打开设备配置经常回到初始状态。我每次做完实验都会执行save并截图保存拓扑这样下次想复现或者给别人演示时不用从头再敲一遍。这个实验虽然叫“基础实验1”但我始终认为能在完全理解单臂路由原理的前提下把它配置通比死记硬背一堆命令有价值得多。你真正掌握了数据包怎么进来、怎么查路由、怎么打标签、怎么从另一个VLAN出去后面的OSPF、BGP、VXLAN这些大型技术点学起来都会轻松不少。至少我每次带新人都会让他们先把这张“数据流转全景图”刻在脑子里后面再玩什么花样都不慌。