ARTICLE DETAIL

资讯详情

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

从零搭建虚拟网络:基于ENSP与Wireshark的IP、DHCP与路由实战解析

从零搭建虚拟网络:基于ENSP与Wireshark的IP、DHCP与路由实战解析 1. 项目概述从零开始理解网络骨架每次我们打开手机刷视频或者用电脑上传文件感觉就像呼吸一样自然。但你想过没有这背后到底是怎么一回事数据是怎么从你这里穿过层层障碍准确无误地跑到千里之外的服务器再把结果送回来的很多人觉得这是运营商或者大公司工程师才需要懂的东西其实不然。自己动手“搭”一个最简单的网络是理解这一切奥秘最直接、也最有效的方式。这就像学开车你不需要先成为汽车工程师但至少得知道油门、刹车和方向盘是干嘛的以及它们之间是怎么联动的。今天要聊的就是这样一个“方向盘”级别的实践搭建一个简单的网络。别被“网络”这个词吓到我们不是要去配置什么核心交换机或者边界防火墙。我们要做的是用最直观的方式把几台虚拟的电脑主机和一台虚拟的“交通指挥中心”路由器连接起来让它们能互相说话。在这个过程中你会亲手碰到那些只存在于教科书里的名词IP地址、子网掩码、网关、ARP协议、DHCP服务……你会看到数据包是怎么生成、怎么被转发、最后又是怎么到达目的地的。这个简单的拓扑是所有复杂网络无论是你家里的Wi-Fi还是公司的数据中心最基础的缩影。搞懂了这个你再看那些热搜词比如“DHCP检测工具”、“网络拓扑图”、“VLAN”、“VRRP”就不会再觉得它们是黑盒魔法了。你会明白它们都是在解决这个简单模型扩展出去后遇到的具体问题。这个实验适合所有对网络运行原理感到好奇的人无论是刚入门的学生还是想巩固基础的运维甚至是开发人员想弄懂自己的程序到底是怎么“上网”的。我们不需要昂贵的硬件利用像华为ENSPeNSP或思科GNS3这样的网络模拟器在你自己电脑上就能完成一切。2. 实验环境与工具选型解析工欲善其事必先利其器。搭建虚拟网络我们首先得选一个合适的“沙盘”。从你提供的热词里可以看到ENSP和GNS3是出现频率最高的两个名字它们都是顶级的网络设备模拟器。2.1 为什么选择华为ENSP对于这个“简单网络”实验我强烈推荐从华为ENSP开始。原因有几个首先它对新手极其友好安装包相对完整自带虚拟设备路由器、交换机、PC的镜像省去了到处寻找和导入镜像的麻烦避开了“ensp下载”、“ensp为什么不让下载了”这些搜索背后可能遇到的坑。其次它的界面直观设备拖拽、连线、配置的流程符合直觉能让你快速把注意力集中在网络原理本身而不是折腾工具。虽然你可能看到“ensp启动设备ar1失败40”、“ensp计数器无法使用怎么解决”这类问题但这些问题大多有成熟的解决方案通常是VirtualBox网卡设置或Windows系统兼容性问题且社区资源丰富。相比之下GNS3功能更强大、更自由可以导入真实设备镜像但初始设置复杂更适合进阶玩家。注意ENSP对Windows系统版本和VirtualBox版本有特定要求。建议在Windows 10专业版/企业版上按照华为官方文档指定的VirtualBox版本进行安装可以规避90%的启动失败问题。如果遇到“AR启动失败40”请首先检查电脑的虚拟化技术Intel VT-x/AMD-V是否在BIOS中已启用并确保VirtualBox的宿主网络管理器配置正确。2.2 核心组件准备设备与线缆在我们的简单网络模型中只需要三类“硬件”终端设备PC模拟我们的电脑或手机。在ENSP中它叫“PC”。我们需要为它配置IP地址、子网掩码和网关。网络设备路由器模拟我们家里的宽带路由器或企业网络的核心网关。在ENSP中我们可以使用“AR2220”或“AR3260”这类路由器。它的核心工作是连接不同的网络并根据IP地址转发数据包。连接介质线缆模拟网线。在ENSP中根据设备接口类型我们选择“Copper”铜缆用于连接路由器以太网口和PC或“Serial”串口用于连接路由器之间的广域网链路。对于最简单的实验我们用“Copper”线即普通的网线即可。除了模拟器我们还需要一个“监视器”——Wireshark。这是一个网络封包分析软件能让我们捕获流经虚拟网卡的所有数据包并像解剖一样查看每一层的细节。当你未来遇到“dhcp协议报文被识别成malformed packet报文如何配置 wireshark让其正确解析”这类问题时熟练使用Wireshark将是你的终极武器。3. 网络拓扑设计与IP地址规划现在让我们在ENSP中把想法画出来。一个最经典、也最能说明问题的简单拓扑是两台PC通过一台路由器相连。这个拓扑虽然小却包含了局域网通信和跨网段通信两种最基本场景。3.1 绘制拓扑与连接打开ENSP从左侧设备区拖出两台“PC”和一台“路由器”比如AR2220。然后使用“Copper”线缆将PC1的“Ethernet 0/0/1”接口连接到路由器的“GigabitEthernet 0/0/0”接口将PC2的“Ethernet 0/0/1”接口连接到路由器的“GigabitEthernet 0/0/1”接口。这样一个最简单的星型拓扑就完成了。路由器位于中心两台PC分别挂在它的两个接口上。此时从物理连接上看PC1和PC2都接到了路由器上但它们是否在同一个“网络”呢这取决于我们接下来要做的IP地址规划。3.2 子网划分与地址分配这是网络搭建中最关键的逻辑设计环节。我们决定让PC1和PC2位于两个不同的子网中。为什么要这么做因为如果它们在同一子网数据交换无需经过路由器直接通过交换机功能本例中路由器接口也具备交换功能我们就观察不到路由这个核心过程了。我们设计如下网络A子网地址为192.168.1.0/24。这意味着该网络所有设备的IP地址前24位即前三个数字必须相同。路由器接口GE0/0/0的IP地址192.168.1.1/24。这个地址将作为该子网的“网关”。PC1的IP地址192.168.1.10/24。子网掩码为255.255.255.0网关设置为192.168.1.1。网络B子网地址为192.168.2.0/24。路由器接口GE0/0/1的IP地址192.168.2.1/24。PC2的IP地址192.168.2.10/24。子网掩码为255.255.255.0网关设置为192.168.2.1。这样PC1192.168.1.10和PC2192.168.2.10就分别属于192.168.1.0/24和192.168.2.0/24这两个不同的网络。它们之间的通信必须经过路由器192.168.1.1和192.168.2.1的转发。子网掩码/24(255.255.255.0) 决定了网络边界PC1会认为任何目标IP不是192.168.1.x的流量都需要发给自己的网关192.168.1.1去处理。4. 设备配置与协议交互全流程拓扑画好地址规划完毕接下来就是让设备“活”起来。我们将按照“配置路由器 - 配置PC - 测试连通性”的顺序进行并观察每一步背后的协议交互。4.1 路由器基础配置双击路由器设备进入命令行配置界面。首先需要进入系统视图然后分别配置两个接口的IP地址。Huawei system-view // 进入系统视图 [Huawei] sysname R1 // 给路由器改个名字方便识别 [R1] interface GigabitEthernet 0/0/0 [R1-GigabitEthernet0/0/0] ip address 192.168.1.1 24 // 配置IP和掩码长度 [R1-GigabitEthernet0/0/0] quit [R1] interface GigabitEthernet 0/0/1 [R1-GigabitEthernet0/0/1] ip address 192.168.2.1 24 [R1-GigabitEthernet0/0/1] quit配置完成后使用display ip interface brief命令查看接口状态确认两个GE接口的IP地址已正确配置且物理和协议状态均为“UP”。路由器此刻已经准备好了它的路由表会自动生成两条直连路由192.168.1.0/24和192.168.2.0/24分别指向自己的两个接口。4.2 主机PC配置与ARP协议初现在ENSP中配置PC比真实机器简单得多。双击PC1在配置界面手动设置IP地址192.168.1.10子网掩码255.255.255.0网关192.168.1.1PC2同理设置为192.168.2.10/24网关192.168.2.1。配置完成后我们先不着急让PC1 ping PC2而是先让PC1 ping一下自己的网关192.168.1.1。这个简单的操作里就隐藏着网络世界的第一个重要协议ARP地址解析协议。当你点击PC1的“命令行”标签输入ping 192.168.1.1时PC1会进行以下思考目标IP是192.168.1.1和我192.168.1.10在同一个子网都是192.168.1.0/24。我需要把数据包发给它但我只知道它的IP地址不知道它的MAC地址网卡物理地址。数据在以太网里传输最终要靠MAC地址。于是PC1会在本地网络中广播一个ARP请求包大喊“谁的IP是192.168.1.1请把你的MAC地址告诉我”路由器GE0/0/0接口收到这个广播发现是在找自己于是向PC1回复一个ARP应答包包含自己的MAC地址。PC1将IP 192.168.1.1 和对应的MAC地址存入本机ARP缓存表。之后它就可以封装目标MAC为路由器、目标IP为192.168.1.1的ICMP请求包ping包并发送出去了。你可以通过在PC1命令行输入arp -a来查看当前的ARP缓存应该能看到192.168.1.1对应的MAC地址。这个“IP找MAC”的过程就是ARP的核心它是局域网内通信的基石。没有它即使IP配置正确设备也无法直接对话。4.3 跨网段通信与路由过程详解现在重头戏来了。在PC1上输入ping 192.168.2.10。PC1会进行另一套逻辑判断目标IP是192.168.2.10和我192.168.1.10不在同一个子网192.168.2.0/24 vs 192.168.1.0/24。根据配置所有非本网段的流量都发给我的“网关”192.168.1.1处理。PC1查看ARP缓存找到网关192.168.1.1的MAC地址上一步ping网关时已经学到了。PC1封装一个数据包目标MAC地址是路由器GE0/0/0的MAC目标IP地址是PC2的IP192.168.2.10源IP是自己192.168.1.10然后发送出去。数据包到达路由器R1的GE0/0/0接口。路由器拆开数据包外层看到目标IP是192.168.2.10。它查询自己的路由表发现有一条直连路由目标网络192.168.2.0/24出接口是GE0/0/1。于是路由器需要将这个数据包从GE0/0/1接口转发出去。但转发前它需要为数据包封装新的二层帧头路由器需要知道目标IP 192.168.2.10 对应的MAC地址即PC2的MAC地址。路由器在GE0/0/1接口所在的网络192.168.2.0/24上广播ARP请求询问192.168.2.10的MAC。PC2应答告知自己的MAC地址。路由器将原始数据包源IP: 192.168.1.10 目标IP: 192.168.2.10重新封装源MAC地址改为GE0/0/1的MAC目标MAC地址改为PC2的MAC然后从GE0/0/1接口发出。PC2收到数据包发现目标IP是自己于是处理并回复。回复的过程完全对称PC2以192.168.2.1自己的网关作为下一跳将回复包发给路由器路由器再将其转发给PC1。至此一次完整的跨网段ping通信完成。你会在PC1的命令行看到来自192.168.2.10的回复。这个过程清晰地展示了路由器的核心功能基于IP地址进行逻辑寻址和转发并在不同网络间重写数据链路层的帧头MAC地址。家里的宽带路由器让你手机和互联网上的服务器通信原理与此完全一致只是路径上的路由器更多路由表更复杂。5. 引入DHCP让网络自动配置手动给每台PC配置IP地址在只有两台设备时还行但如果网络中有几十上百台设备呢手动配置不仅效率低下还容易出错、造成地址冲突。这时就需要DHCP动态主机配置协议登场了这也是你提供的热词中的高频词。我们将把路由器R1配置成DHCP服务器为两个网络中的PC自动分配IP地址、子网掩码、网关和DNS。5.1 在路由器上配置DHCP服务回到路由器R1的配置命令行我们需要为两个网段分别创建地址池并启用DHCP。[R1] dhcp enable // 全局开启DHCP功能 [R1] ip pool pool1 // 创建名为pool1的地址池用于192.168.1.0/24网段 [R1-ip-pool-pool1] network 192.168.1.0 mask 24 // 声明可分配的网段 [R1-ip-pool-pool1] gateway-list 192.168.1.1 // 指定网关地址 [R1-ip-pool-pool1] dns-list 8.8.8.8 // 指定DNS服务器示例用谷歌DNS [R1-ip-pool-pool1] excluded-ip-address 192.168.1.1 // 排除掉网关地址不分配 [R1-ip-pool-pool1] lease day 3 // 设置IP地址租期为3天 [R1-ip-pool-pool1] quit [R1] ip pool pool2 // 创建名为pool2的地址池用于192.168.2.0/24网段 [R1-ip-pool-pool2] network 192.168.2.0 mask 24 [R1-ip-pool-pool2] gateway-list 192.168.2.1 [R1-ip-pool-pool2] dns-list 8.8.8.8 [R1-ip-pool-pool2] excluded-ip-address 192.168.2.1 [R1-ip-pool-pool2] lease day 3 [R1-ip-pool-pool2] quit创建好地址池后还需要在对应的接口上启用DHCP服务并指定从哪个地址池分配。[R1] interface GigabitEthernet 0/0/0 [R1-GigabitEthernet0/0/0] dhcp select global // 接口采用全局地址池模式 [R1-GigabitEthernet0/0/0] quit [R1] interface GigabitEthernet 0/0/1 [R1-GigabitEthernet0/0/1] dhcp select global [R1-GigabitEthernet0/0/1] quit5.2 观察DHCP交互过程现在将PC1和PC2的IP地址获取方式从“静态”改为“DHCP”。在ENSP的PC配置界面选择“DHCP”选项然后点击“应用”。接着在PC的命令行里你可以输入ipconfig /renewWindows风格或dhclientLinux风格ENSP的PC通常支持来主动申请IP。此时用Wireshark捕获PC与路由器之间的流量你会看到经典的D-O-R-A四步交互过程DiscoverPC以广播形式发送DHCP Discover报文寻找网络中的DHCP服务器。Offer路由器DHCP服务器收到Discover后从地址池中挑选一个空闲IP以广播形式发送DHCP Offer报文回应报文中包含提供的IP、租期等信息。RequestPC可能会收到多个Offer如果网络中有多个DHCP服务器它选择其中一个并广播DHCP Request报文正式请求使用该IP。Acknowledge被选中的服务器发送DHCP Ack报文进行最终确认。PC收到Ack后将IP等信息配置到本地网卡完成自动获取。这个过程完成后你可以在PC上使用ipconfig或ifconfig命令查看自动获取到的IP地址、网关和DNS它们应该符合我们在地址池中的配置。也可以在路由器上使用display ip pool name pool1 used命令查看地址池中已分配的IP地址。实操心得在真实环境或更复杂的模拟中你可能会遇到DHCP服务不生效的问题。常见排查思路是第一检查路由器接口是否dhcp select global第二检查地址池的network声明是否与接口IP在同一网段第三使用display dhcp server statistics命令查看DHCP报文统计确认服务器是否收到了客户端的请求。这就是“dhcp检测工具”类软件在后台做的事情——监控和分析DHCP协议交互。6. 使用Wireshark进行深度协议分析配置和测试都成功了但我们不能只满足于“通了”。作为一个想真正理解网络的人我们必须看看“数据包到底长什么样”。Wireshark就是我们最好的显微镜。6.1 捕获与分析ARP与ICMP流量在ENSP中右键点击PC1与路由器之间的链路选择“开始抓包”Wireshark会自动启动并监听这条链路。然后在PC1上执行ping 192.168.2.10。停止抓包后你会在Wireshark中看到一系列数据包。过滤arp or icmp你可以清晰地看到最开始的可能是ARP请求/应答如果ARP缓存已过期。随后是ICMP Echo Request (ping请求) 和 ICMP Echo Reply (ping回复)。点击任意一个ICMP请求包在Wireshark的分层详情面板中你可以逐层展开Frame物理帧的详细信息如捕获时间、长度。Ethernet II数据链路层包含源MAC地址PC1和目标MAC地址路由器GE0/0/0。这印证了PC1将跨网段数据包发给了网关。Internet Protocol Version 4网络层包含源IP地址192.168.1.10和目标IP地址192.168.2.10。在整个传输过程中这两个IP地址是始终不变的。Internet Control Message ProtocolICMP协议详情包含类型Type 8是请求Type 0是回复、序列号等。你可以对比PC1发出的请求包和PC2收到的请求包需要在PC2的链路上也抓包。你会发现IP层以上的内容完全一样但Ethernet II层的源MAC和目标MAC地址完全不同。这正是路由器“路由转发”工作的铁证它修改了二层帧头但忠实地传递了三层IP包。6.2 解码DHCP全流程清空Wireshark在PC设置为DHCP后开始抓包然后重启PC网卡或执行续约命令。过滤bootp或dhcpDHCP协议基于BOOTP过滤两者皆可。你会看到清晰的Discover, Offer, Request, Ack四个报文。深入研究一个DHCP Offer包展开Bootstrap Protocol部分。找到Your (client) IP address字段这就是服务器提供给客户端的IP。找到Option: (t53, l1) DHCP Message Type值为2代表这是Offer报文。找到Option: (t51) IP Address Lease Time可以看到租期时间秒。找到Option: (t3) Router里面就是网关地址。找到Option: (t6) Domain Name Server里面是DNS服务器地址。通过WiresharkDHCP这个“自动配置魔法”的每一步都变得透明可视。当你未来遇到“dhcp协议报文被识别成malformed packet”这种问题时你就能想到可能是Wireshark的解析器出了问题或者报文确实存在畸形。你可以通过检查报文原始字节流或者尝试更换Wireshark版本来解决。7. 常见问题与进阶思考搭建和实验过程中你几乎一定会遇到一些问题。下面是一些典型问题的排查思路以及基于这个简单模型的进阶思考方向。7.1 典型问题排查速查表问题现象可能原因排查步骤PC之间无法ping通1. 物理链路未连通接口DOWN2. IP地址配置错误不在同一子网或冲突3. 防火墙或安全策略阻止ICMP1. 检查ENSP设备连线是否为绿色路由器使用display interface brief查看接口状态。2. 分别在PC和路由器接口使用ipconfig/display ip interface brief核对IP和掩码。3. 检查路由器是否有ACL或防火墙策略PC系统防火墙是否关闭模拟环境中可关闭。路由器无法ping通PC1. PC的防火墙阻止2. 路由器接口IP与PC不在同一网段1. 暂时关闭PC的防火墙测试。2. 仔细计算子网确保路由器接口IP是PC所在子网的网关地址。DHCP无法获取地址1. 路由器DHCP服务未开启或配置错误2. 地址池网段与接口网段不匹配3. 地址池中地址已耗尽1.display dhcp server statistics查看统计确认收到Discover。2. 核对ip pool的network和接口IP网段。3.display ip pool name [pool-name] used查看地址分配情况。ARP学习失败1. 链路层故障双工模式、速率不匹配2. 安全特性阻止如端口安全1. 在真实设备中检查接口双工和速率模拟器一般无此问题。2. 检查是否有配置端口安全、MAC地址过滤等。在PC和路由器上用arp -a和display arp查看学习情况。7.2 从简单模型到复杂网络这个简单的两台PC一台路由器的模型是理解所有复杂网络的基石。基于此你可以进行无限扩展引入交换机在路由器和多台PC之间加入交换机理解VLAN如何逻辑隔离广播域以及VLANIF如何作为三层网关。这直接对应热词中的“ensp关于vlan、链路聚合、dhcp、vrrp、vlanif、stp的综合实验”。多台路由器互联添加第二台路由器用串口线连接配置静态路由或动态路由协议如OSPF理解路由表是如何通过协议学习并扩散的。这涉及到“网络拓扑图”的绘制和“企业网络”的规划。实现网络冗余在两台路由器上配置VRRP虚拟路由器冗余协议为同一个子网提供备份网关实现高可用。当主网关故障时备份网关能无缝接管。模拟互联网访问将一台路由器配置为出口网关并配置NAT网络地址转换让内网的PC可以访问一个模拟的“公网”服务器用另一台PC模拟理解家庭宽带路由器的工作原理。结合高级工具使用libevent网络库编写一个简单的客户端/服务器程序跑在你搭建的这个虚拟网络上从应用层视角观察网络通信。每一次扩展都是对“IP寻址”、“路由转发”、“协议交互”这些基础概念的深化和巩固。当你亲手配置过VLAN、VRRP再去看相关的故障排查帖子或文档那种“原来如此”的感觉是完全不同的。网络知识的学习最忌讳的就是只看不练。这个简单的实验环境就是你最好的练功房。
返回列表