尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

华为eNSP实战:VLAN间通信配置,单臂路由与三层交换机VLANIF方案详解

华为eNSP实战:VLAN间通信配置,单臂路由与三层交换机VLANIF方案详解 这次我们继续做 VLAN 间通信配置实验的第二个部分。上一轮实验我们已经完成了 VLAN 划分、Access 口和 Trunk 口的配置也验证了不同 VLAN 在二层是隔离的。但真实办公网络不可能让部门之间永远完全隔离比如财务系统要被全公司访问监控网段要被运维终端管理这时候就必须解决 VLAN 间的通信配置问题。这篇博客直接用华为 eNSP 搭建一套可复现的实验环境手把手完成两个 VLAN 互通的完整配置不仅给出命令还会说明为什么要这么配、验证时看什么、踩坑后怎么排错。这个实验的核心价值不复杂一是理解三层路由怎么介入二层隔离网络二是掌握华为设备上两种最常见的 VLAN 间通信方案——单臂路由和三层交换机 VLANIF。前者适合学习原理适合小型网络后者是现网最常用的做法对后续学习 DHCP、ACL、VRRP 都有帮助。文中会覆盖 VLAN 划分、Trunk 放行、子接口封装、VLANIF 网关配置、路由表检查、PC 端 ping 验证以及用脚本批量采集状态的思路。比较适合正在刷 HCIA/HCIP 实验、或者工作中需要维护华为交换机的读者。1. 核心能力速览能力项说明实验类型网络实验VLAN 间路由配置核心知识点VLAN、Access、Trunk、单臂路由子接口、三层交换机 VLANIF、路由转发实验工具华为 eNSP 模拟器推荐设备S5700 交换机、AR 系列路由器、PC 终端网络规模两台 PC、两个 VLAN、一台三层设备即可启动方式eNSP 拓扑内手动启动设备命令行配置批量任务支持可用脚本批量 ping、批量采集设备状态无对外 HTTP API适用场景HCIA/HCIP 备考、网络原理验证、真实网络割接前的配置预演资源占用随设备数量变化建议宿主机内存 8GB 以上难度偏低适合 VLAN 入门后的第二个实验从能力速览就能判断这个实验的核心不是学一条命令而是理解“二层隔离、三层互通”的完整链路。后面所有配置都会围绕这个链路展开。2. 适用场景、使用边界与合规提醒先说适用场景。实验一“单臂路由”适合小型办公网络例如一台二层交换机加一台路由器用路由器子接口承担多个 VLAN 的网关实验二“三层交换机 VLANIF”适合园区网和办公网网关放在交换机上路由转发由交换机内部完成性能和可靠性都更好。如果你是备考 HCIA两个实验都应该亲手敲一遍如果只是日常维护建议重点掌握 VLANIF 方案因为现网中它出现频率更高。使用边界也要说清楚。eNSP 是华为官方模拟器适合功能验证和配置练习但它不能完全模拟硬件转发能力例如真实设备的线速转发、芯片级 ACL、堆叠特性都可能和真实设备有差异。因此模拟器里跑通的配置不能直接当作现网割接依据真机操作必须经过评审、变更窗口和安全检查。合规和授权方面这个实验在模拟器内完成不涉及生产网络风险很低。但如果你把类似方案迁移到真实办公网要注意几点网络设备的管理账号密码不能使用弱口令对生产设备做配置变更前必须获得网络管理员的授权涉及跨部门 VLAN 访问时要遵守企业安全策略不能私自打开不必要的互访通道。另外使用 eNSP 时请从官方渠道下载不要在来路不明的网站获取安装包。3. 环境准备与实验拓扑设计3.1 eNSP 安装与运行环境开始实验前先确认宿主机环境。eNSP 是 Windows 下的图形化模拟工具安装包内通常自带依赖组件。安装时建议以管理员身份运行关闭杀毒软件或把 eNSP 加入白名单否则虚拟网卡或设备进程可能被拦截导致 AR 路由器启动失败。安装路径不要带中文尽量选择纯英文目录比如D:\eNSP可以避免不少奇怪问题。宿主机配置建议内存 8GB 以上CPU 4 核以上磁盘剩余空间 10GB 以上。实验过程中设备数量不多但每启动一台 AR 路由器或交换机都会占用一定资源。如果机器配置偏低启动多台设备会很慢甚至出现“设备启动失败”的提示。遇到这种情况先关闭其他大内存软件再重新启动设备。3.2 实验拓扑与 IP 规划本实验在 eNSP 中搭建两个方案共用一套 VLAN 规划方案 APC1 和 PC2 接入同一台二层交换机 S5700交换机上联一台 AR 路由器路由器通过子接口实现 VLAN 间通信即单臂路由。方案 B把方案 A 中的二层交换机换成三层交换机 S5700PC1 和 PC2 仍然接 access 口在三层交换机上创建 VLANIF 接口作为各 VLAN 网关。VLAN 和 IP 地址规划如下设备接口/VLANIP 地址网关说明PC1VLAN10192.168.10.1/24192.168.10.254业务终端PC2VLAN20192.168.20.1/24192.168.20.254业务终端路由器子接口 / VLANIF10VLAN10 网关192.168.10.254/24—方案 A 是 GE0/0/0.10方案 B 是 Vlanif10路由器子接口 / VLANIF20VLAN20 网关192.168.20.254/24—方案 A 是 GE0/0/0.20方案 B 是 Vlanif20PC 的 IP 地址和掩码设置好后一定要把网关填上。很多人在实验里配完了交换机但 PC 仍然 ping 不通往往就是网关没写或者写错了网段。接下来的每个方案都会围绕这个 IP 规划展开。4. 实验配置单臂路由实现 VLAN 间通信先做方案 A也就是经典的单臂路由实验。拓扑上的设备是SW-L2 二层交换机连接两台 PC再用一个 trunk 口上联 AR 路由器。路由器的物理接口只有一个但可以通过子接口切出逻辑接口每个子接口处理一个 VLAN 的报文从而实现“一条物理链路带多个 VLAN 流量”。4.1 二层交换机配置交换机上的操作很简单核心是三个步骤创建 VLAN、把终端口划入对应 VLAN、上联口配置为 trunk 并放行相关 VLAN。命令如下system-view sysname SW-L2 # 创建 VLAN 10 和 VLAN 20 vlan batch 10 20 # G0/0/1 接 PC1划入 VLAN 10 interface GigabitEthernet0/0/1 port link-type access port default vlan 10 quit # G0/0/2 接 PC2划入 VLAN 20 interface GigabitEthernet0/0/2 port link-type access port default vlan 20 quit # G0/0/24 上联路由器使用 trunk放行 VLAN 10 和 20 interface GigabitEthernet0/0/24 port link-type trunk port trunk allow-pass vlan 10 20 quit这段配置的关键在 trunk 口。如果不放行 VLAN 10 和 VLAN 20那么即使路由器子接口配置正确带 VLAN tag 的报文也过不到路由器。另一个容易忽略的点是 PVID。默认情况下 trunk 口的 PVID 是 VLAN 1我们这里不需要修改保持原样即可。如果贸然执行port trunk pvid vlan 10反而可能让不带 tag 的报文被当作 VLAN 10 处理引入意外问题。这也是热搜词里“port trunk pvid vlan 10”经常被讨论的原因实际场景中 PVID 必须结合业务流量类型来决定不要盲目设置。配置完可以用display vlan查看 VLAN 和端口成员确认 G0/0/1 在 VLAN10、G0/0/2 在 VLAN20、G0/0/24 是 trunk 且允许 VLAN10 和 20。4.2 路由器子接口配置交换机把带 tag 的报文送到路由器后路由器需要按 VLAN 识别报文。做法是在物理接口上创建子接口并用dot1q termination vid绑定对应 VLAN。命令如下system-view sysname AR-Router # 子接口 .10 处理 VLAN 10 的报文作为 VLAN 10 网关 interface GigabitEthernet0/0/0.10 dot1q termination vid 10 ip address 192.168.10.254 255.255.255.0 arp broadcast enable quit # 子接口 .20 处理 VLAN 20 的报文作为 VLAN 20 网关 interface GigabitEthernet0/0/0.20 dot1q termination vid 20 ip address 192.168.20.254 255.255.255.0 arp broadcast enable quit三条命令都很重要。dot1q termination vid是让子接口识别带 VLAN tag 的报文ip address是给该 VLAN 的终端提供网关arp broadcast enable则是让子接口能够响应终端发出的 ARP 广播请求。华为模拟器中如果漏配arp broadcast enable很容易出现终端能 ping 通自己网关但 ping 不通对端的情况因为在跨网段通信前PC 会先通过 ARP 学习网关的 MAC 地址而子接口默认不处理广播 ARP 报文网关就“不存在”。配置完成后用下面的命令检查路由器和交换机的状态# 路由器上查看接口 IP display ip interface brief # 路由器上查看路由表 display ip routing-table # 交换机上查看 VLAN 和端口 display vlan路由器路由表里应该能看到192.168.10.0/24和192.168.20.0/24两个直连网段分别关联到子接口 GE0/0/0.10 和 GE0/0/0.20。看到这两条直连路由说明单臂路由的“路由半边”已经就绪。5. 实验配置三层交换机 VLANIF 实现 VLAN 间通信方案 B 使用三层交换机替代二层交换机加路由器。在三层交换机上每个 VLAN 可以创建一个 VLANIF 逻辑接口接口 IP 就是该 VLAN 的网关。VLANIF 接口一旦配置了 IP交换机会自动生成直连路由报文在交换机内部就能完成跨 VLAN 路由转发不需要外部路由器。5.1 三层交换机基础配置先规划设备角色SW-L3 作为三层交换机G0/0/1 接 PC1 属于 VLAN10G0/0/2 接 PC2 属于 VLAN20。命令如下system-view sysname SW-L3 # 创建 VLAN 10 和 VLAN 20 vlan batch 10 20 # 创建 VLANIF 接口并配置网关 IP interface Vlanif10 ip address 192.168.10.254 255.255.255.0 quit interface Vlanif20 ip address 192.168.20.254 255.255.255.0 quit # 接入终端接口 interface GigabitEthernet0/0/1 port link-type access port default vlan 10 quit interface GigabitEthernet0/0/2 port link-type access port default vlan 20 quit配置完成后三层交换机上不需要额外写静态路由因为 VLANIF10 和 VLANIF20 都属于直连路由。可以在交换机上执行display ip routing-table会看到两条直连路由Destination/Mask Proto Pre Cost Flags NextHop Interface 192.168.10.0/24 Direct 0 0 D 192.168.10.254 Vlanif10 192.168.20.0/24 Direct 0 0 D 192.168.20.254 Vlanif20看到这两条路由就说明三层交换机的网关和路由都生效了。相较于单臂路由这种方案没有物理链路带宽瓶颈因为三层转发发生在交换机内部所以现网中大多数 VLAN 间通信都采用 VLANIF。5.2 两种方案背后的路由逻辑单臂路由和 VLANIF 的差别本质上就是“网关放在哪”的问题。单臂路由把网关放在路由器子接口上所有跨 VLAN 流量都必须经过那条 trunk 上联链路收敛到一个物理口带宽和可靠性都有限。VLANIF 把网关放在交换机内部转发由交换机完成不再依赖外部链路。但要注意VLANIF 方案要求交换机必须是三层交换机纯二层交换机无法创建 VLANIF 接口。6. 功能测试与效果验证实验配置完成后最重要的一步是验证“不同 VLAN 的主机确实能通信”。这里给出完整的验证流程不管方案 A 还是方案 B 都适用。6.1 PC 端连通性测试在 eNSP 中双击 PC1打开命令行首先验证 PC1 到自身网关ping 192.168.10.254如果网关通说明 PC1 到 VLAN10 网关的二层链路没有问题。然后验证到 PC2 的跨网段通信ping 192.168.20.1预期结果是能够收到回包。如果 ping 不通不要继续加复杂的配置先按顺序排查第一步看 PC 的 IP 地址和网关是否配对第二步看交换机端口是否正确划入对应 VLAN第三步看 router 或三层交换机是否配置了网关 IP第四步看 trunk 口是否放行了对应 VLAN。很多跨 VLAN 不通最后查出来只是 PC 网关没写。为了进一步确认转发路径可以在 PC1 上执行tracert 192.168.20.1路径中第一跳应该是网关 192.168.10.254后续到达 192.168.20.1。这能直观地说明跨 VLAN 流量先到网关再由网关转发到目标网段。6.2 关键状态命令观察验证完连通性后建议在设备上多敲几个查看命令这些命令对排查很有帮助。在交换机上查看 MAC 地址表display mac-address你会看到 PC1 的 MAC 地址在 VLAN10 的 G0/0/1 口PC2 的 MAC 地址在 VLAN20 的 G0/0/2 口。如果交换机没有学习到终端 MAC通常说明 PC 没有发出任何报文或者端口类型和 VLAN 划分有问题。还可以查看 ARP 表display arp在路由器或三层交换机上ARP 表里应该能看到 192.168.10.1 和 192.168.20.1 的映射记录。只有 ARP 学习成功后续数据报文才能正确封装二层头。ARP 表缺失时重点检查 PC 的网关配置和子接口的arp broadcast enable是否遗漏。另外华为设备上常用display interface brief或者display int vlan brief来快速确认接口状态display interface brief display int vlan brief前者查看物理和逻辑接口的状态后者查看 VLANIF 接口和对应 VLAN 的概况适合快速确认哪些 VLAN 已经有三层接口。7. 自动化批量验证与性能观察这个项目本身不提供 Web API也不存在 HTTP 接口服务但它仍然可以做自动化验证。网络设备通常支持 Telnet 或 SSH 登录我们可以用脚本批量登录多台设备采集接口状态、路由表、VLAN 信息甚至批量执行 ping。下面给出两种常见的自动化思路。7.1 设备开启 Telnet/SSH 管理在实验环境里为了方便脚本连接可以给设备配置管理地址和远程登录功能。以 eNSP 中的 AR 路由器为例先给接口配置管理 IP比如使用 VLANIF 或物理接口的地址然后开启 Telnet# 以路由器 G0/0/0 接口为管理口配置管理 IP interface GigabitEthernet0/0/0 ip address 192.168.100.1 255.255.255.0 quit # 开启 Telnet 管理 user-interface vty 0 4 authentication-mode password set authentication password cipher Huawei123 protocol inbound telnet quit这个配置只建议在模拟器或隔离实验环境使用。真实生产环境必须先使用 SSH密码复杂度要符合企业要求管理地址也不应该直接暴露到办公网。eNSP 中设备默认支持 Telnet 登录时注意宿主机需要和模拟器网络连通具体地址和端口以 eNSP 拓扑右下角的启动信息为准。7.2 使用 Python 批量采集设备状态拿到设备管理能力后可以用 Python 脚本批量采集所有设备的接口信息和路由表。以下是一个较通用的 Telnet 示例具体地址、用户名、密码需要按实验环境替换import telnetlib import time # 设备列表按实际规划填写管理 IP 和端口 devices [ {host: 192.168.100.1, port: 23, password: Huawei123}, {host: 192.168.100.2, port: 23, password: Huawei123}, ] commands [ display version, display ip interface brief, display ip routing-table, ] for dev in devices: print( * 40) print(fLogin to {dev[host]}) try: tn telnetlib.Telnet(dev[host], dev[port], timeout10) tn.read_until(bPassword:, timeout5) tn.write(dev[password].encode(ascii) b\n) time.sleep(1) for cmd in commands: tn.write(cmd.encode(ascii) b\n) time.sleep(2) output tn.read_very_eager().decode(ascii, errorsignore) print(f--- {cmd} ---) print(output) tn.write(bquit\n) tn.close() except Exception as e: print(fconnect failed: {e})这段代码的关键是“登录一条设备批量执行多条命令采集回显”。如果你要在 PC 上批量 ping 多个网段的地址也可以用 Python 的subprocess调系统 pingimport subprocess host_list [ 192.168.10.1, 192.168.10.254, 192.168.20.1, 192.168.20.254, ] for host in host_list: result subprocess.run( [ping, -n, 2, host], capture_outputTrue, textTrue, encodinggbk ) if TTL in result.stdout or ttl in result.stdout: print(f{host} OK) else: print(f{host} FAIL)这种批量验证方式很适合在实验后快速确认整网连通性。注意脚本中密码不要写死在共享代码里实验环境可以用生产环境要使用密钥或凭据管理工具。7.3 资源占用与性能观察方法eNSP 启动多台设备后宿主机 CPU 和内存占用会明显上升。你可以在 Windows 任务管理器里观察进程资源占用常见的 eNSP 相关进程包括Router.exe、Switch.exe和设备模拟进程。设备启动顺序是从下往上逐个点击不要一次性全选启动否则宿主机容易卡死。为了降低资源占用有几种做法实验过程中只启动当前需要的设备不用的接口保持 shutdown设备启动完成后可以关闭设备的“抓包”功能避免额外消耗内存如果同时开多个实验最好关闭已经验证完的设备。观察资源占用时重点关注 CPU 峰值和剩余内存一旦出现“设备启动失败”可以先退出 eNSP 再重新打开避免进程残留导致后续设备无法启动。8. 常见问题与排查方法下面是 VLAN 间通信实验中最常遇到的问题每一项都有排查路径和解决方案。问题现象可能原因排查方式解决方案eNSP 设备启动失败虚拟化组件异常或资源不足检查任务管理器确认内存和 CPU 占用关闭其他程序重新启动 eNSP必要时重装依赖组件接口显示 down设备未启动完成或线缆未连接查看设备状态灯和接口状态等待设备启动完成删除线缆重新连线PC ping 不通自己网关PC 网关未配置或配置错误在 PC 上ipconfig查看地址和网关重新填写 IP、掩码和网关同 VLAN 能通跨 VLAN 不通网关设备未配置 VLAN 接口或路由缺失在路由设备上display ip routing-table配置子接口或 VLANIF并确认 IP 与 PC 网段一致跨 VLAN 不通且 ARP 表里没有对端网关子接口缺少arp broadcast enable查看子接口配置补上arp broadcast enable交换机和路由器之间的 trunk 不通trunk 口未放行 VLAN在交换机上display vlan增加port trunk allow-pass vlan 10 20终端 MAC 没被交换机学习端口类型或 VLAN 划分错误display mac-address检查 access 口的port default vlan三层交换机 VLANIF 接口 up 但 ping 不通VLANIF 启用了 IP 但物理接口没有对应 VLAN 成员display vlan查看端口归属将接入终端端口划入正确 VLAN路由器或交换机命令敲不进去用户视图没有进入系统视图检查提示符或[先执行system-view端口 security 导致 MAC 被锁定实验环境误开启端口安全display interface查看端口状态关闭端口安全或重启接口以上这些问题是实验过程中被问得最多的。绝大多数情况下只要按照“从终端到网关再跨设备”的顺序排查都能在几分钟内定位到根因。切忌在 PC ping 不通时反复修改路由器和交换机的高级参数那是舍本逐末。9. 最佳实践、总结与下一步这套实验做完你至少应该带走几个习惯第一先画好 IP 规划表再动手配置不要边配边想VLAN ID、网关地址、PC 地址都提前列清楚能省一半排错时间第二配置设备时使用结构化命令把system-view、接口视图、quit这些层级写清楚方便你自己复查第三验证时从底层开始逐层测试先测同一 VLAN 内互通再测跨 VLAN不要一上来直接 ping 跨网段。对真实网络的落地场景我会特别强调三层交换机 VLANIF 方案的优先级。它不仅配置简洁还能避免单臂路由带来的链路口瓶颈和单点故障。对于需要跨交换机部署的 VLAN还要同步检查所有中间链路是否都配置了 trunk 并放行对应 VLAN。基于 IP 子网的 VLAN 划分、多 VLAN 网卡配置、交换机上的聚合链路等进阶话题也都可以从这个实验延伸出去。这次实验最值得尝试的点是用一台 eNSP 里的设备把“二层隔离”变成“三层互通”用命令验证路由表的出现过程。最先应该验证的是 PC1 ping 网关再 ping PC2最容易踩的坑是 trunk 放行 VLAN 漏配置以及路由器子接口缺少arp broadcast enable。后续你可以继续在这个拓扑上加 DHCP 服务器、ACL 访问控制、不同网段的 VRRP 网关冗余进一步把 VLAN 间通信和企业实际组网场景接起来。建议先把这篇收藏配置的时候随时对照。
返回列表