
1. 网段通信实验到底在折腾什么1.1 从一个最常见的困惑说起很多人第一次接触网络实验脑子里都会冒出一个问题两台电脑插在同一台交换机上IP地址不在一个网段为什么就ping不通明明物理线路是通的灯也亮了交换机也没坏但就是不通。这个现象背后牵扯到的就是网段通信最核心的几个知识点MAC地址、ARP协议、路由转发、三层交换。我当初做这个实验的时候也是被这个问题卡了很久。后来把整个流程拆开来看才发现网段通信这件事本质上就是“二层转发”和“三层路由”两个动作的配合。同网段靠二层跨网段靠三层中间还夹着一个ARP协议在穿针引线。把这三者的关系理清楚网段通信实验就算入门了。这篇内容适合正在学网络基础的朋友不管你是准备考认证还是工作中需要排查网络问题又或者只是好奇“数据包到底怎么走的”都能从这里找到可以直接上手操作的实验方案和排查思路。我会用eNSP和GNS3这两个常见的模拟器来搭建实验环境把每一步的原理和操作都讲透。1.2 实验的核心目标是什么网段通信实验的目标不是把设备配通就完事了而是要搞清楚数据包从源到目的地的完整路径。具体来说需要回答几个问题数据包在每一跳的源MAC和目的MAC分别是什么ARP请求在什么时候发出、谁来回路由器收到包之后做了什么决策返回的包又是怎么走的这些问题如果只是看书很容易似懂非懂。但如果你在模拟器里抓一次包把每个字段都看一遍那种“原来如此”的感觉是看书给不了的。所以这个实验的核心目标是让你亲眼看到数据包的封装和解封装过程亲手验证ARP的工作机制亲自排查不通的原因。我建议做这个实验的时候至少准备两台路由器或者一台三层交换机加一台路由器、两台主机、一台二层交换机。拓扑不用太复杂但一定要能覆盖“同网段通信”和“跨网段通信”两种场景。这样对比着看理解会深刻很多。1.3 为什么选择模拟器而不是真机有人可能会问为什么不直接拿真机做实验真机当然可以但有几个现实问题设备成本高、拓扑调整麻烦、抓包不方便。模拟器就不一样了eNSP和GNS3都能免费下载拓扑随便改抓包直接集成在软件里点一下就能看到每个接口的报文。eNSP是华为系的模拟器对华为设备的支持最好命令和真机几乎一致。GNS3更通用一些可以加载不同厂商的镜像适合做更复杂的实验。我个人的习惯是如果实验涉及华为交换机或路由器的配置优先用eNSP如果需要模拟更复杂的网络拓扑或者跑一些非华为的设备就用GNS3。不过模拟器也有坑。比如eNSP在某些Windows版本上会出现路由器启动失败的问题报错代码40这个后面会专门讲怎么解决。GNS3对电脑配置要求高一些尤其是加载多个路由器镜像的时候内存不够会非常卡。所以做实验之前先把环境搭好别做到一半发现模拟器崩了那很影响心情。2. 核心概念拆解MAC、ARP、路由到底怎么配合2.1 MAC地址数据包的“身份证”MAC地址是网卡出厂时烧录的物理地址48位通常写成12个十六进制数比如00-0C-29-XX-XX-XX。这个地址在全球范围内应该是唯一的前24位是厂商编号后24位是厂商自己分配的序列号。有人问“000c 29开头的MAC地址都是虚拟机吗”这个说法基本靠谱。00:0C:29是VMware的OUI组织唯一标识符所以看到这个开头的MAC大概率是VMware虚拟机。类似的00:50:56也是VMware的08:00:27是VirtualBox的。做实验的时候看到这些MAC不用慌正常现象。查看MAC地址的命令很简单。Windows上用ipconfig /allLinux上用ip link show或者ifconfig华为设备上用display interface或者display mac-address。在eNSP里你可以直接右键设备查看接口信息MAC地址一目了然。MAC地址的作用范围是二层网络也就是同一个广播域内。数据包在二层转发的时候源MAC和目的MAC是不变的除非经过三层设备。这一点很关键后面分析数据包路径的时候会反复用到。2.2 ARP协议地址解析的“中间人”ARP协议的全称是Address Resolution Protocol翻译过来就是地址解析协议。它的作用很简单已知一个IP地址找出对应的MAC地址。为什么需要这个因为数据包在二层封装的时候必须知道目的MAC地址但应用程序只知道目的IP。ARP的工作过程分两步请求和应答。请求是广播的源主机喊一嗓子“谁是这个IP请告诉我你的MAC”同一广播域内所有设备都能收到。应答是单播的目标主机回复“我是这个IP我的MAC是XXX”。源主机收到应答后把IP和MAC的对应关系存到ARP缓存表里下次再通信就不用重新问了。ARP缓存表有老化时间Windows默认是2分钟到10分钟不等华为设备默认是20分钟。老化时间到了之后表项会被删除下次通信需要重新ARP。这个机制是为了适应网络变化比如某台设备换了网卡MAC变了ARP缓存如果不更新就会出问题。在eNSP里抓包看ARP过程非常直观。你可以在主机上ping另一个IP然后在交换机或路由器的接口上抓包就能看到ARP请求和应答的完整报文。请求报文的目的MAC是全F广播应答报文的目的MAC是请求方的MAC。这个对比一看就明白了。2.3 路由转发跨网段的“导航仪”同网段通信靠ARP就够了但跨网段通信必须经过路由器或三层交换机。路由器的每个接口属于不同的网段它根据目的IP地址查路由表决定从哪个接口转发出去。路由表里最关键的是直连路由。路由器接口配置了IP地址并激活后会自动生成一条直连路由表示这个网段是“直接可达”的。比如接口IP是192.168.1.1/24路由表里就会有一条192.168.1.0/24的直连路由。当路由器收到一个数据包它会拿目的IP去匹配路由表。匹配的规则是最长前缀匹配也就是掩码最长的那条路由优先。如果匹配到直连路由路由器会做两件事把源MAC改成出接口的MAC把目的MAC改成下一跳的MAC如果是直连就是目的主机的MAC然后从出接口发出去。TTL减1校验和重新计算。如果路由表里没有匹配的路由路由器会丢弃数据包并给源主机发一个ICMP不可达消息。这就是为什么跨网段通信时如果路由器没有配好路由ping会提示“目标主机不可达”或者直接超时。2.4 三层交换机二层和三层之间的“多面手”三层交换机本质上就是“交换机加路由功能”。它既有二层交换的高速转发能力又有三层路由的网段隔离能力。在同一个VLAN内部它做二层转发不同VLAN之间它做三层路由。为什么需要三层交换机因为传统的路由器接口数量有限而且路由转发是靠软件做的速度相对慢。三层交换机用ASIC芯片做路由转发速度可以做到线速。在企业网络里核心层通常用三层交换机做VLAN间路由出口再用路由器连接外网。做网段通信实验的时候三层交换机是一个很好的中间设备。你可以用它来验证VLAN间路由也可以用它来对比“路由器做路由”和“三层交换机做路由”的差异。配置上三层交换机需要先创建VLAN给VLAN接口配IP然后开启路由功能。华为设备上interface Vlanif就是VLAN的三层接口。3. 实验环境搭建与基础配置3.1 eNSP环境准备与常见启动问题eNSP的安装不算复杂但有几个坑要提前避开。首先安装路径不要有中文和空格否则某些组件会出问题。其次安装的时候会提示安装WinPcap和Wireshark这两个都要装抓包全靠它们。最后安装完成后建议重启一次电脑让虚拟网卡生效。最常见的问题是路由器启动失败报错代码40。这个问题的原因通常是VirtualBox版本不兼容或者eNSP的虚拟化组件没有正确注册。解决办法有几个一是把VirtualBox升级到eNSP支持的版本一般是5.2.x二是用管理员身份运行eNSP三是检查Windows的Hyper-V是否开启Hyper-V和VirtualBox有冲突需要关掉。还有一个烦人的问题是路由器启动后一直冒警号提示“The device is running!”。这个其实不是错误是设备启动完成的提示。如果你不想看到可以在用户视图下敲undo terminal monitor关掉终端监控信息。或者在系统视图下配置undo info-center enable关掉信息中心。我个人的经验是eNSP对Windows 10的兼容性最好Windows 11偶尔会有小问题。如果实在搞不定可以试试用GNS3虽然配置麻烦一点但稳定性更好。3.2 拓扑设计与IP规划实验拓扑不用太复杂但要有代表性。我建议的拓扑是这样的两台主机PC1和PC2接在一台二层交换机LSW1上交换机上联一台路由器AR1的GE0/0/0接口路由器的GE0/0/1接口再接一台主机PC3。PC1和PC2在同一个网段PC3在另一个网段。IP规划如下PC1用192.168.1.2/24PC2用192.168.1.3/24PC3用192.168.2.2/24。路由器GE0/0/0配192.168.1.1/24GE0/0/1配192.168.2.1/24。这样PC1和PC2同网段PC1和PC3跨网段。为什么要这样设计因为同网段通信和跨网段通信的路径完全不同。同网段通信数据包在交换机内部就完成了转发不会经过路由器。跨网段通信数据包必须先到路由器经过路由决策后再转发到另一个网段。把两种场景放在同一个拓扑里对比着抓包理解会非常直观。IP规划的时候要注意主机的网关要指向路由器对应接口的IP。PC1和PC2的网关是192.168.1.1PC3的网关是192.168.2.1。网关的作用是当主机发现目的IP不在本网段时把数据包发给网关由网关去转发。3.3 基础配置命令与验证先配路由器。华为路由器的配置流程是进入系统视图改设备名配接口IP开启接口。命令如下system-view sysname AR1 interface GigabitEthernet 0/0/0 ip address 192.168.1.1 255.255.255.0 undo shutdown quit interface GigabitEthernet 0/0/1 ip address 192.168.2.1 255.255.255.0 undo shutdown quit配完之后用display ip interface brief查看接口状态确认两个接口都是Up的IP地址正确。然后用display ip routing-table查看路由表应该能看到两条直连路由192.168.1.0/24和192.168.2.0/24。交换机不需要特别配置默认所有接口都在VLAN 1二层转发直接通。如果你想让实验更贴近实际可以划分VLAN但那样会增加复杂度。第一遍做实验的时候建议先用默认配置把基本流程跑通再考虑加VLAN。主机配置在eNSP里很简单双击PC图标在“基础配置”里填IP地址、子网掩码和网关。填完之后在命令行里用ipconfig确认一下。然后就可以开始ping测试了。4. 实操过程从同网段到跨网段的完整验证4.1 同网段通信实验与ARP抓包分析先做同网段实验。在PC1上ping PC2的IP地址192.168.1.3。第一次ping的时候你会发现第一个包可能会超时后面几个包才通。这个超时的包就是用来发ARP请求的。在交换机上抓包或者直接在PC1的接口上抓包你能看到完整的ARP过程。PC1先发一个ARP请求源MAC是PC1的MAC目的MAC是全F广播内容大概是“谁是192.168.1.3请告诉192.168.1.2”。PC2收到后回一个ARP应答源MAC是PC2的MAC目的MAC是PC1的MAC内容是“192.168.1.3的MAC是XXX”。ARP学完之后PC1的ARP缓存表里就有了192.168.1.3对应的MAC。你可以用arp -a命令查看。然后ICMP的ping包就开始正常收发了。ping包的源MAC是PC1的MAC目的MAC是PC2的MAC源IP是192.168.1.2目的IP是192.168.1.3。这里有个细节值得注意同网段通信的时候数据包的源MAC和目的MAC在整个过程中是不变的。交换机只负责根据目的MAC查MAC地址表从对应的接口转发出去。如果MAC地址表里没有这个MAC交换机会泛洪也就是从所有接口除了接收接口发出去。这就是为什么第一次通信可能会有短暂的泛洪。4.2 跨网段通信实验与路由转发验证再做跨网段实验。在PC1上ping PC3的IP地址192.168.2.2。这次的过程复杂一些。PC1发现目的IP不在本网段192.168.1.0/24于是把数据包发给网关192.168.1.1。但发给网关之前PC1需要知道网关的MAC地址所以先发一个ARP请求问“谁是192.168.1.1”。路由器收到ARP请求后回复自己的MAC。PC1拿到网关MAC后把ping包的源MAC设为PC1的MAC目的MAC设为网关MAC源IP是192.168.1.2目的IP是192.168.2.2。这个包发到路由器后路由器做路由决策发现目的IP匹配192.168.2.0/24的直连路由于是从GE0/0/1接口转发出去。转发之前路由器会重新封装二层帧源MAC改成GE0/0/1的MAC目的MAC改成PC3的MAC。但路由器怎么知道PC3的MAC它也要发ARP请求。所以路由器会在GE0/0/1接口上发一个ARP请求问“谁是192.168.2.2”。PC3回复后路由器把包转发给PC3。PC3收到ping包后回一个ping应答。应答包的源IP是192.168.2.2目的IP是192.168.1.2。PC3发现目的IP不在本网段于是发给网关192.168.2.1。路由器收到后查路由表从GE0/0/0接口转发回PC1。整个过程中你可以看到IP地址始终不变但MAC地址每一跳都在变。这就是“IP负责端到端MAC负责点到点”的含义。在eNSP里抓包的时候可以在路由器的两个接口分别抓对比一下源MAC和目的MAC的变化非常直观。4.3 用ping和tracert验证连通性ping是最基本的连通性测试工具。同网段ping通说明二层转发没问题。跨网段ping通说明路由配置没问题。如果ping不通先看是请求没发出去还是应答没回来。可以在中间设备上抓包看数据包到了哪一跳就停了。tracertWindows或者tracerouteLinux/华为设备可以显示数据包经过的每一跳。在PC1上tracert 192.168.2.2应该只显示一跳就是192.168.1.1。因为中间只有一个路由器。如果拓扑更复杂tracert会显示每一跳的IP地址方便定位问题出在哪一段。华为设备上也可以用ping -a指定源地址用ping -c指定发送次数。比如ping -a 192.168.1.1 192.168.2.2就是从192.168.1.1这个地址去ping 192.168.2.2。这个在验证路由的时候很有用可以模拟从特定接口发出的流量。还有一个技巧在路由器上开debug。华为设备可以用debugging ip icmp和debugging arp packet来查看ICMP和ARP的详细过程。不过debug会消耗CPU实验环境里用用可以生产环境要谨慎。4.4 交换机MAC地址表与ARP缓存的查看方法交换机MAC地址表是二层转发的依据。华为交换机上用display mac-address查看。表里会显示MAC地址、VLAN、接口和类型。类型有动态和静态两种动态的是学习来的有老化时间静态的是手动配的不会老化。ARP缓存表在三层设备上很重要。华为路由器上用display arp查看Windows上用arp -aLinux上用ip neigh。表里显示IP地址、MAC地址、接口和老化时间。如果ARP表里没有对应的条目通信就会失败。有个常见问题是ARP表项冲突或者错误。比如两台设备配了相同的IPARP表就会混乱。或者某台设备换了网卡MAC变了但ARP缓存还没老化通信就会出问题。解决办法是清除ARP缓存Windows上用arp -d华为设备上用reset arp dynamic。查看MAC地址的命令前面提过这里再补充一个在eNSP里你可以右键设备选择“配置”然后查看接口的MAC地址。或者在命令行里用display interface GigabitEthernet 0/0/0输出里会有“Hardware address”这一行。5. 常见问题与排查技巧实录5.1 跨网段ping不通的排查思路跨网段ping不通是最常见的问题排查要按层次来。先看物理层和链路层接口是不是Up的线是不是连对了。用display interface brief看接口状态Up才是正常的。如果接口是Down的检查线缆和接口配置。再看网络层IP地址配对了没有掩码对不对网关设了没有。主机上ipconfig看一下路由器上display ip interface brief看一下。网关一定要指向路由器对应接口的IP配错了肯定不通。然后看路由路由器上有目的网段的路由吗display ip routing-table看一下。如果是直连路由接口Up了就应该有。如果没有说明接口配置有问题。如果是静态路由或动态路由检查配置是否正确。最后看ARPPC1能ARP到网关吗路由器能ARP到PC3吗在PC1上arp -a看有没有网关的MAC在路由器上display arp看有没有PC3的MAC。如果没有可能是VLAN配置问题或者接口隔离了广播。还有一个容易忽略的点主机的防火墙。Windows防火墙默认会阻止ping请求做实验的时候建议先关掉防火墙或者放行ICMP。这个坑我踩过好几次明明网络配通了就是ping不通最后发现是防火墙拦了。5.2 eNSP路由器启动失败与报错处理eNSP路由器启动失败报错40这个问题太常见了。原因通常是VirtualBox的版本和eNSP不匹配。eNSP对VirtualBox的版本有要求太新或太旧都可能出问题。我试过最稳的组合是eNSP 1.3.00配VirtualBox 5.2.44。如果版本没问题但还是启动失败试试这几个操作一是用管理员身份运行eNSP二是关闭Windows的Hyper-V功能三是在VirtualBox里删除eNSP相关的虚拟机让eNSP重新创建。有时候虚拟机的配置文件损坏了删掉重建就好了。还有一个问题是eNSP启动后设备一直冒警号提示信息刷屏。这个不影响功能但看着烦。解决办法是在用户视图下敲undo terminal monitor关掉终端监控。或者在系统视图下undo info-center enable彻底关掉信息中心。不过关掉之后一些有用的日志也看不到了自己权衡。如果eNSP实在搞不定可以换GNS3。GNS3的配置稍微复杂一点需要先安装GNS3 VM然后导入路由器镜像。但GNS3的稳定性更好支持的设备类型也更多。缺点是占内存电脑配置低的话跑几个路由器就卡了。5.3 交换机对接交换机的注意事项交换机对接交换机看起来简单但有几个坑。首先是链路类型如果两个交换机之间的接口都是Access口且VLAN不同那就不通。Access口只能属于一个VLAN两个Access口对接要求VLAN一致。如果VLAN不一致需要配Trunk口。Trunk口可以承载多个VLAN的流量打标签传输。华为交换机上配Trunk口的命令是port link-type trunk和port trunk allow-pass vlan all。配完之后两个交换机之间的链路就能传递多个VLAN的流量了。还有一个问题是生成树协议STP。如果两个交换机之间有多条链路STP会阻塞多余的链路防止环路。这是好事但有时候会导致某些链路不转发流量看起来像是“不通”。用display stp brief查看STP状态确认哪些接口是Forwarding哪些是Blocking。“为什么从局域网中拿走一个交换机后很卡”这个问题很可能和STP重新收敛有关。拿走一个交换机后STP要重新计算拓扑收敛期间流量会中断或变慢。等STP收敛完成后网络应该恢复正常。如果一直卡可能是拓扑设计有问题或者有环路导致广播风暴。5.4 常见问题速查表问题现象可能原因排查命令解决办法同网段ping不通接口Down、VLAN不对、防火墙拦截display interface brief、arp -a检查线缆、VLAN配置、关闭防火墙跨网段ping不通网关配错、路由缺失、ARP失败display ip routing-table、display arp修正网关、添加路由、检查ARP第一次ping超时ARP请求耗时抓包看ARP正常现象后续ping会通路由器启动失败40VirtualBox版本不兼容查看eNSP日志换VirtualBox版本、管理员运行交换机间不通Trunk配置错误、STP阻塞display stp brief配Trunk、检查STP状态MAC地址表为空没有流量、老化时间到display mac-address发ping触发学习、检查接口ARP表项错误IP冲突、MAC变化display arp清除ARP缓存、解决冲突这张表是我自己排查问题时总结的基本上覆盖了80%的常见情况。遇到问题先查表能省不少时间。5.5 实操心得与避坑建议做网段通信实验我有几个心得。第一抓包是最好的老师。不要只看配置命令一定要抓包看数据包的实际走向。eNSP和GNS3都集成了Wireshark点一下就能抓非常方便。抓包的时候注意看源MAC、目的MAC、源IP、目的IP、TTL这几个字段理解它们的变化规律。第二先跑通再优化。第一遍做实验的时候拓扑越简单越好配置越少越好。先把同网段和跨网段的基本流程跑通再考虑加VLAN、加ACL、加NAT这些高级功能。一上来就搞复杂拓扑很容易卡在某个细节上打击积极性。第三做好记录。每次实验的拓扑、IP规划、配置命令、抓包结果都记下来。下次遇到类似问题翻记录比重新做一遍快得多。我习惯用文本文件记配上截图形成自己的实验手册。第四多问为什么。为什么同网段不需要网关为什么跨网段需要为什么ARP请求是广播而应答是单播为什么TTL要减1把这些问题想清楚了网络基础就扎实了。实验只是手段理解原理才是目的。最后分享一个小技巧在eNSP里你可以用ping -c 1只发一个包然后用display arp看ARP表的变化。这样能更清晰地观察ARP的学习过程。另外reset arp dynamic可以清除动态ARP表项方便重复实验。这些命令看起来简单但用好了能大幅提升实验效率。