三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

基于ENSP的中小型企业网搭建实战:VLAN、DHCP与静态路由配置详解

基于ENSP的中小型企业网搭建实战:VLAN、DHCP与静态路由配置详解

1. 项目缘起:为什么我还在用ENSP搭建企业网?

如果你刚入行网络,或者正在备考华为认证,大概率会听到一个名字:ENSP。没错,就是那个让无数网工又爱又恨的华为官方模拟器。爱它,是因为它免费、功能相对完整,能模拟出华为数通产品的大部分特性;恨它,是它那脆弱的兼容性、时不时启动失败40的报错,以及官方下载渠道的时有时无。最近总有人问:“ENSP是不是不让下载了?”“ENSP Pro好用吗?” 我的回答是:对于学习和验证中小型网络架构的核心思想与配置逻辑,经典的ENSP(Enterprise Network Simulation Platform)依然是最佳选择之一。它的价值不在于模拟设备的版本有多新,而在于它能让你在一个零成本的沙盒里,把VLAN、DHCP、静态路由、VRRP这些基础但至关重要的技术,像搭积木一样亲手“搭”出来,并亲眼看到数据包是如何流动的。

今天这个项目,我就带大家用ENSP,从零开始模拟搭建一个典型的、具备实际参考价值的中小型企业网。这个网络麻雀虽小,五脏俱全:我们会划分不同部门的VLAN实现广播域隔离,配置三层交换机作为网关实现VLAN间通信,部署DHCP服务器为终端自动分配IP地址,还会用到静态路由让网络互通。整个过程,我会附上每一步的详细配置命令和背后的思考逻辑,你完全可以跟着“抄作业”。无论你是想巩固基础的网络工程师,还是正在学习的学生,这篇文章都能给你一个清晰、可复现的实操蓝本。

2. 实验拓扑设计与核心设备选型逻辑

动手敲命令之前,设计拓扑和选择设备是第一步,这决定了整个实验的复杂度和仿真度。一个不合理的设计,会让后续配置事倍功半。

2.1 拓扑结构:经典三层架构的简化版

典型的企业网,尤其是中小型网络,普遍采用接入-汇聚-核心的三层架构。但在我们的模拟环境中,为了聚焦核心配置逻辑,我将其简化为两层:接入/汇聚层核心/路由层。这个简化模型足以承载VLAN、网关、DHCP等核心技术的验证。

我设计的拓扑如下:

  • 一台三层交换机(S5700):作为整个网络的“心脏”。它身兼多职:
    • 接入层交换机:通过Access或Trunk接口连接下面的PC。
    • 汇聚层交换机:为不同VLAN创建虚拟接口(VLANIF),充当各VLAN的默认网关,实现VLAN间路由。
    • DHCP服务器:为各个VLAN内的终端自动分配IP地址、网关和DNS。
  • 两台接入层交换机(S3700):用于扩展端口,连接更多终端设备。它们通过Trunk链路与核心三层交换机相连,透传多个VLAN的数据。
  • 四台PC:代表不同部门的终端用户,例如市场部、研发部。
  • 一台路由器(AR2220):模拟出口网关或连接另一个网络(如总部或互联网)。用于演示静态路由的配置。

这个拓扑的核心思想是:让三层交换机承担绝大部分功能。在真实中小型场景中,一台性能足够的三层交换机也常常同时承担汇聚和核心交换的角色,我们的模拟正是基于这一常见实践。

2.2 设备选型与启动避坑指南

在ENSP中,设备选型不是选性能最强的,而是选最稳定、兼容性最好的。

  • 三层交换机:华为S5700系列。这是ENSP里最经典、最稳定的三层交换机镜像。功能全面,支持我们需要的所有特性(VLANIF、DHCP Server、静态路由)。避免使用太新或太冷的型号,容易遇到镜像问题。
  • 二层交换机:华为S3700系列。稳定可靠,作为纯接入层设备绰绰有余。
  • 路由器:华为AR2220。同样是经久耐用的型号,满足基础路由需求。
  • PC:使用ENSP自带的PC。它功能简单,但足够用于测试网络连通性(ping)和获取DHCP地址。

> 注意:关于令人头疼的“启动失败40”这是ENSP最常见的问题,根本原因在于VirtualBox网卡兼容性或设备镜像文件损坏。我的解决流程通常是:

  1. 检查VirtualBox网络设置:确保ENSP使用的虚拟网卡(如VirtualBox Host-Only Ethernet Adapter)处于“启用”状态,且IP地址不要冲突。
  2. 重新注册设备:在ENSP菜单栏选择“工具”->“注册设备”。勾选所有设备,点击“注册”。这相当于刷新设备与VirtualBox的关联。
  3. 替换设备镜像文件:如果上述步骤无效,可能是镜像文件(.cc)损坏。需要从可靠的来源重新下载对应设备的镜像文件,并替换到ENSP安装目录的C:\Program Files\Huawei\eNSP\plugin路径下对应文件夹内。
  4. 使用ENSP Pro或兼容模式:如果经典ENSP实在无法解决,可以尝试ENSP Pro(华为新一代模拟器),或者以管理员身份、兼容模式运行ENSP。

一个稳定的实验环境是成功的一半,花点时间解决启动问题,后续的实验会顺畅很多。

3. 基础网络构建:VLAN划分与链路配置

这是构建任何企业网的第一步,目的是将广播域隔离,提升安全性和网络性能。很多新手容易混淆port link-typeport default vlanpvid的概念,这里我会彻底讲清楚。

3.1 VLAN规划与设计思路

我们假设公司有两个主要部门:市场部(VLAN 10)和研发部(VLAN 20)。此外,为网络设备的管理预留一个管理VLAN(VLAN 99)。

VLAN ID网段网关用途接口分配
10192.168.10.0/24192.168.10.1市场部S3700-1: G0/0/1
20192.168.20.0/24192.168.20.1研发部S3700-2: G0/0/1
99192.168.99.0/24192.168.99.1设备管理交换机管理接口

为什么这么规划?VLAN 10和20用于业务隔离,使用常见的24位掩码,地址足够且规划清晰。VLAN 99单独分离管理流量,这是一种安全最佳实践,避免业务流量干扰设备管理,也防止从业务网段直接访问设备。

3.2 配置详解:Access、Trunk、PVID与VLAN ID

配置从核心三层交换机(S5700)开始。

第一步:在三层交换机上创建VLAN并配置Access接口

# 进入系统视图 <Huawei> system-view [Huawei] sysname Core-SW # 批量创建VLAN 10, 20, 99 [Core-SW] vlan batch 10 20 99 # 配置连接PC的接口为Access类型,并加入对应的VLAN # 假设G0/0/1连接市场部PC(VLAN 10) [Core-SW] interface GigabitEthernet 0/0/1 [Core-SW-GigabitEthernet0/0/1] port link-type access # 接口模式设为Access [Core-SW-GigabitEthernet0/0/1] port default vlan 10 # 将接口加入VLAN 10 [Core-SW-GigabitEthernet0/0/1] quit # 同理配置其他直接连接PC的Access接口...

关键点理解port link-type access决定了这个接口只能承载一个VLAN的数据帧,并且帧进出时不带VLAN Tag。port default vlan 10则指定了这个接口属于哪个VLAN。当PC发送的无Tag帧进入这个Access接口时,交换机会给它打上VLAN 10的Tag;当交换机向这个接口发送带VLAN 10 Tag的帧时,会先剥离Tag再发出。

第二步:配置交换机之间的Trunk链路核心交换机与接入交换机之间需要传递多个VLAN的流量,必须配置为Trunk。

# 在核心交换机上,配置连接接入交换机的接口为Trunk [Core-SW] interface GigabitEthernet 0/0/24 # 假设用24口连接接入交换机 [Core-SW-GigabitEthernet0/0/24] port link-type trunk # 接口模式设为Trunk [Core-SW-GigabitEthernet0/0/24] port trunk allow-pass vlan all # 允许所有VLAN通过 # 或者更精确地:port trunk allow-pass vlan 10 20 99 [Core-SW-GigabitEthernet0/0/24] quit

第三步:在接入交换机上完成配置以接入交换机S3700-1为例,它下连市场部PC,上连核心交换机。

<Huawei> system-view [Huawei] sysname Access-SW-1 [Access-SW-1] vlan batch 10 99 # 接入层只需要创建其端口涉及的VLAN # 配置连接PC的接口为Access,加入VLAN 10 [Access-SW-1] interface GigabitEthernet 0/0/1 [Access-SW-1-GigabitEthernet0/0/1] port link-type access [Access-SW-1-GigabitEthernet0/0/1] port default vlan 10 [Access-SW-1-GigabitEthernet0/0/1] quit # 配置上连核心交换机的接口为Trunk [Access-SW-1] interface GigabitEthernet 0/0/24 [Access-SW-1-GigabitEthernet0/0/24] port link-type trunk [Access-SW-1-GigabitEthernet0/0/24] port trunk allow-pass vlan 10 99 # 只允许必要的VLAN [Access-SW-1-GigabitEthernet0/0/24] quit

3.3 深度辨析:PVID与VLAN ID的区别与配置场景

这是高频问题。简单来说:

  • VLAN ID:是数据帧的“身份证”,标识这个帧属于哪个VLAN。它存在于数据帧的802.1Q Tag头部。
  • PVID (Port Default VLAN ID):是端口的“默认标签”。它决定了如何处理进入该端口的、不带Tag的数据帧

配置场景分析

  1. Access端口port default vlan 10这条命令同时做了两件事:a) 将接口加入VLAN 10;b) 将接口的PVID设置为10。所以对于Access口,VLAN ID和PVID是同一个值。
  2. Trunk端口:情况复杂得多。Trunk口默认PVID是VLAN 1。这意味着,如果一个无Tag帧进入Trunk口,交换机会给它打上PVID(VLAN 1)的Tag。这通常不是我们想要的!因为Trunk链路通常只传输有Tag的帧。

一个关键配置建议:对于纯Trunk链路(只传输带Tag的帧,两端都是交换机),我强烈建议手动修改其PVID为一个不使用的VLAN(比如VLAN 999),并确保该VLAN不在allow-pass列表中。这可以避免意外的无Tag帧被错误地标记和转发。

[Core-SW] interface GigabitEthernet 0/0/24 [Core-SW-GigabitEthernet0/0/24] port link-type trunk [Core-SW-GigabitEthernet0/0/24] port trunk pvid vlan 999 # 修改PVID为无用VLAN [Core-SW-GigabitEthernet0/0/24] port trunk allow-pass vlan 10 20 99 # 不允许VLAN 999通过

这样,即使有无Tag帧误入Trunk口,也会被打上VLAN 999的Tag,而由于Trunk不允许该VLAN通过,帧将被丢弃,增强了网络的确定性。

4. 实现网络“大脑”:三层交换与VLAN间路由

VLAN划分好了,部门之间是隔离了,但业务需要互通怎么办?这就需要三层交换机登场,扮演“网关”的角色,实现VLAN间的路由。

4.1 创建SVI接口并配置IP地址

SVI(Switch Virtual Interface),在华为设备上就是VLANIF接口。它为每个VLAN创建一个虚拟的三层接口,并配置IP地址,这个地址就是该VLAN内所有主机的默认网关。

在三层交换机(Core-SW)上配置:

[Core-SW] interface Vlanif 10 # 创建VLAN 10的虚拟接口 [Core-SW-Vlanif10] ip address 192.168.10.1 24 # 配置网关IP [Core-SW-Vlanif10] description For-Marketing-Dept # 可选:添加描述 [Core-SW-Vlanif10] quit [Core-SW] interface Vlanif 20 [Core-SW-Vlanif20] ip address 192.168.20.1 24 [Core-SW-Vlanif20] quit [Core-SW] interface Vlanif 99 [Core-SW-Vlanif99] ip address 192.168.99.1 24 [Core-SW-Vlanif99] quit

配置完成后,使用display ip interface brief命令查看,应该能看到Vlanif10/20/99接口的IP地址信息,并且物理状态和协议状态都是UP(前提是相应的VLAN内存在UP的Access端口或Trunk端口)。

> 注意:一个常见的“坑”如果发现Vlanif接口始终是DOWN状态,请检查:

  1. 对应的VLAN是否已经创建?(display vlan)
  2. 该VLAN内是否有物理接口处于UP状态且加入了该VLAN?即使是一个连接了PC的Access口,只要物理链路UP,就能带起Vlanif接口。如果所有端口都是Trunk,需要确保至少有一个Trunk口允许该VLAN通过且链路UP。

4.2 开启路由功能与直连路由

默认情况下,华为三层交换机的路由功能是开启的。配置完Vlanif接口的IP地址后,交换机就会自动生成直连路由(Direct)。

[Core-SW] display ip routing-table # 查看路由表

你应该能看到类似下面的路由条目:

Route Flags: R - relay, D - download to fib ------------------------------------------------------------------------------ Routing Tables: Public Destinations : 7 Routes : 7 Destination/Mask Proto Pre Cost Flags NextHop Interface 192.168.10.0/24 Direct 0 0 D 192.168.10.1 Vlanif10 192.168.10.1/32 Direct 0 0 D 127.0.0.1 Vlanif10 192.168.20.0/24 Direct 0 0 D 192.168.20.1 Vlanif20 192.168.20.1/32 Direct 0 0 D 127.0.0.1 Vlanif20 192.168.99.0/24 Direct 0 0 D 192.168.99.1 Vlanif99 192.168.99.1/32 Direct 0 0 D 127.0.0.1 Vlanif99

ProtoDirect的就是直连路由。这意味着,现在连接在VLAN 10和VLAN 20下的PC,如果手动配置了正确的IP地址和网关(192.168.10.1/192.168.20.1),它们之间已经可以互相ping通了!因为三层交换机根据路由表,知道192.168.10.0/24和192.168.20.0/24这两个网段都直接连接在自己的Vlanif接口上,可以进行数据转发。

5. 自动化管理:配置DHCP服务器为终端分配IP

手动给每台PC配置IP地址太麻烦,也不符合实际运维场景。让三层交换机兼任DHCP服务器,是中小型网络非常常见的做法。

5.1 全局启用DHCP服务与地址池配置

首先,需要在全局开启DHCP功能。

[Core-SW] dhcp enable # 全局使能DHCP服务

然后,为每个VLAN创建独立的DHCP地址池。

# 为VLAN 10(市场部)创建地址池 [Core-SW] ip pool vlan10_pool # 创建名为vlan10_pool的地址池 [Core-SW-ip-pool-vlan10_pool] network 192.168.10.0 mask 24 # 定义分配的网络段 [Core-SW-ip-pool-vlan10_pool] gateway-list 192.168.10.1 # 指定网关地址 [Core-SW-ip-pool-vlan10_pool] dns-list 8.8.8.8 # 指定DNS服务器,这里用谷歌公共DNS示例 [Core-SW-ip-pool-vlan10_pool] excluded-ip-address 192.168.10.1 192.168.10.10 # 排除一段地址(网关及预留地址) [Core-SW-ip-pool-vlan10_pool] lease day 3 # 设置租期3天 [Core-SW-ip-pool-vlan10_pool] quit # 为VLAN 20(研发部)创建地址池 [Core-SW] ip pool vlan20_pool [Core-SW-ip-pool-vlan20_pool] network 192.168.20.0 mask 24 [Core-SW-ip-pool-vlan20_pool] gateway-list 192.168.20.1 [Core-SW-ip-pool-vlan20_pool] dns-list 8.8.8.8 [Core-SW-ip-pool-vlan20_pool] excluded-ip-address 192.168.20.1 192.168.20.10 [Core-SW-ip-pool-vlan20_pool] lease day 3 [Core-SW-ip-pool-vlan20_pool] quit

配置要点解析

  • excluded-ip-address:这个命令非常实用。它用于排除地址池中不分配给客户端的IP段。通常我们会把网关地址(.1)以及可能用于服务器、网络设备的地址(如.2到.10)排除掉,避免冲突。
  • lease:设置地址租期。对于办公网络,3-7天是比较合理的设置。租期太短会增加DHCP报文交互频率,太长则不利于地址回收。

5.2 在VLANIF接口上启用DHCP服务器功能

创建了地址池,还需要在对应的网关接口上启用DHCP服务,并指定使用哪个地址池。

[Core-SW] interface Vlanif 10 [Core-SW-Vlanif10] dhcp select global # 接口采用全局地址池模式 # 系统会自动选择与接口IP网段匹配的全局地址池(即vlan10_pool) [Core-SW-Vlanif10] quit [Core-SW] interface Vlanif 20 [Core-SW-Vlanif20] dhcp select global [Core-SW-Vlanif20] quit

dhcp select global是最常用的方式,表示该接口下的DHCP客户端将从全局配置的地址池中获取IP。华为设备会根据请求报文到达的接口所属网段,自动匹配对应的全局地址池。

5.3 客户端测试与故障排查

现在,可以将PC的IP地址获取方式设置为“DHCP”。在ENSP的PC上,右键选择“设置”,在网络配置中勾选“DHCP”。然后打开命令行,输入ipconfigdisplay ip interface brief(ENSP PC的命令)来查看获取到的IP地址、网关和DNS。

如果PC无法获取IP,通常的排查顺序是:

  1. 检查物理链路:PC到交换机的链路是否UP?交换机之间的Trunk是否允许了该VLAN?
  2. 检查DHCP配置
    • display ip pool name vlan10_pool all查看地址池配置和地址分配情况。
    • display dhcp server statistics查看DHCP服务器统计信息,看是否有收到Discover报文。
  3. 抓包分析:在ENSP中,可以在链路或接口上右键“开始抓包”,使用Wireshark过滤bootpdhcp报文,这是最直接的排查手段。观察DHCP四步(Discover, Offer, Request, Ack)是否完整。

> 注意:关于“Bad address”或“Malformed packet”如果在真实环境或更复杂的模拟中,使用Wireshark抓包时看到DHCP报文被识别为“Malformed packet”(畸形包),这通常是因为Wireshark的解析问题。可以在Wireshark的“分析”菜单 -> “启用的协议”中,确保BOOTP/DHCP是勾选状态。或者,尝试在过滤栏直接输入udp.port == 67 or udp.port == 68来查看相关UDP报文,忽略解析错误。

6. 打通“任督二脉”:配置静态路由实现全网互通

目前,我们的三层交换机已经实现了内部VLAN间的互通。但是,如果网络中有路由器(比如模拟出口设备),或者有多台三层设备,就需要配置路由来实现不同网段之间的通信。

6.1 场景引入:连接“出口”路由器

我们在拓扑中加入一台路由器(AR2220),模拟公司的出口网关。假设路由器的G0/0/0接口连接核心交换机,IP为192.168.99.254/24(属于管理VLAN 99)。路由器另一个接口(如G0/0/1)模拟外网口,IP为1.1.1.1/30。

首先,配置核心交换机与路由器互联的接口。我们在核心交换机上用一个物理接口(例如G0/0/23)连接路由器,并将其划入管理VLAN 99。

[Core-SW] interface GigabitEthernet 0/0/23 [Core-SW-GigabitEthernet0/0/23] port link-type access # 与路由器对接,通常用Access [Core-SW-GigabitEthernet0/0/23] port default vlan 99 [Core-SW-GigabitEthernet0/0/23] quit

然后,在路由器上配置接口IP:

<Huawei> system-view [Huawei] sysname Router [Router] interface GigabitEthernet 0/0/0 [Router-GigabitEthernet0/0/0] ip address 192.168.99.254 24 [Router-GigabitEthernet0/0/0] quit [Router] interface GigabitEthernet 0/0/1 [Router-GigabitEthernet0/0/1] ip address 1.1.1.1 30 [Router-GigabitEthernet0/0/1] quit

此时,核心交换机(192.168.99.1)和路由器(192.168.99.254)在同一个网段,可以互相ping通。但是,路由器并不知道如何到达192.168.10.0/24和192.168.20.0/24这两个内部网段。同样,内部PC也不知道如何到达路由器另一侧的网络(1.1.1.0/30)。

6.2 静态路由配置命令与原理

我们需要在双方设备上添加静态路由条目,告诉它们去往未知网段的数据包应该扔给谁。

在核心交换机上配置默认路由: 对于核心交换机,除了直连的三个内部网段,其他所有去往外部的流量(比如访问互联网),都应该发给路由器(网关)。

[Core-SW] ip route-static 0.0.0.0 0.0.0.0 192.168.99.254

这条命令的意思是:目的地址和掩码均为0.0.0.0,代表“所有网络”。下一跳地址是192.168.99.254,即路由器接口地址。这叫做默认路由,是静态路由的一种特殊形式,用于指向“最后的出口”。

在路由器上配置回程路由: 路由器收到了来自内部网络(如192.168.10.0/24)要出去的数据包,但它回复数据包时,需要知道如何回到这些内部网段。

[Router] ip route-static 192.168.10.0 24 192.168.99.1 [Router] ip route-static 192.168.20.0 24 192.168.99.1

这两条命令是精确路由,告诉路由器:要去往192.168.10.0/24192.168.20.0/24这两个网段,请把数据包交给192.168.99.1(核心交换机)。

6.3 路由验证与排错思路

配置完成后,务必进行验证。

  1. 查看路由表:在核心交换机上display ip routing-table,应该能看到一条0.0.0.0/0的静态路由(ProtoStatic)。在路由器上,应该能看到两条指向192.168.99.1的静态路由。
  2. 长ping测试:在VLAN 10下的PC上,尝试ping路由器的外网口地址1.1.1.1
    • 如果成功,恭喜,全网路由已通。
    • 如果失败,进行分段排查:
      • 第一步:PC ping 自己的网关(192.168.10.1)。不通则检查VLAN和DHCP配置。
      • 第二步:在核心交换机上 ping 路由器(192.168.99.254)。不通则检查物理链路、接口VLAN和IP配置。
      • 第三步:在核心交换机上 ping 路由器外网口(1.1.1.1)。不通则检查核心交换机的默认路由和路由器接口配置。
      • 第四步:在路由器上 ping PC的IP地址(如192.168.10.11)。不通则检查路由器上的回程静态路由。

这种“分段ping”的思路,是定位网络层故障最经典、最有效的方法,能快速将问题范围缩小到某一段链路或某一台设备上。

7. 综合检验与进阶思考:从“通”到“优”

至此,一个具备基础功能的中小型企业网模拟环境已经搭建完成。我们可以进行综合测试:确保同一VLAN内PC互通,不同VLAN间PC互通,所有PC能通过DHCP获取地址,并且能ping通“外网”(路由器对端地址)。

但这只是起点。一个健壮的企业网还需要考虑更多:

1. 生成树协议(STP):在我们的拓扑中,如果接入交换机之间存在冗余链路,就会形成二层环路,导致广播风暴。必须在交换机上启用STP(如RSTP或MSTP)。配置命令通常很简单:stp mode rstpstp root primary/secondary指定根桥,但理解和排查STP状态才是关键。

2. 网关冗余(VRRP):如果核心交换机只有一台,它宕机了整个网络就瘫痪了。实际部署中,核心层会采用两台交换机做堆叠或配置VRRP协议,实现网关冗余。VRRP的配置涉及虚拟IP、优先级和抢占,是保证网络高可性的重要手段。

3. 链路聚合(Eth-Trunk):在核心交换机与接入交换机之间,或者两台核心交换机之间,可以使用多条物理链路捆绑成一条逻辑链路(Eth-Trunk),增加带宽和可靠性。配置时需注意两端模式一致(LACP模式或手工模式)。

4. 安全与接入控制:可以在交换机接口上配置端口安全(如限制MAC地址数量),或者在VLANIF接口上配置ACL(访问控制列表),限制部门间的访问权限。对于设备管理,可以配置Telnet或SSH,并应用ACL只允许管理VLAN的地址访问。

5. DHCP中继:如果DHCP服务器不在客户端所在的广播域内(比如部署在独立的服务器上),就需要在网关设备(三层交换机)上配置DHCP中继(dhcp relay),将客户端的广播请求转换为单播,转发给指定的DHCP服务器。

搭建这个模拟环境最大的收获,不是记住了几条命令,而是理解了数据从一台PC发出后,经过接入交换机打上VLAN Tag,通过Trunk链路,到达三层交换机根据IP路由表转发,或者由DHCP服务器回应请求的完整过程。下次当你再听到VLAN、Trunk、SVI、静态路由这些词时,脑子里浮现的应该是一个动态的、可交互的网络模型,而不仅仅是枯燥的概念。ENSP的价值就在于此——它让抽象的理论变成了可视化的、可操作的技能。

← 返回列表