一键登录 更安全快捷
邮箱登录
我已阅读并接受 用户协议 隐私政策

ESXi 8.0配置VLAN Trunk后虚拟机DHCP无法获取地址完整排查方案

ESXi 8.0虚拟交换机配置VLAN Trunk之后,虚拟机无法获取DHCP地址,排查多轮后找到核心问题:很多人会把Trunk VLAN配置绑定在物理网卡vmnic上,这是完全错误的逻辑;正确规则是Trunk允许通过的VLAN段必须配置在VMkernel端口,同时给虚拟机对应的端口组设置单一目标VLAN ID,流量才能正常剥离VLAN标签转发至虚拟机网卡,DHCP广播包正常交互获取IP。

有VMware全系列产品官方资源和定制版资源需求的可以移步:

一、现场踩坑完整背景

前段时间机房新装一台ESXi 8.0物理服务器,规划使用标准vSwitch搭建Trunk链路,上联核心交换机,需要承载多个业务VLAN虚拟机。

最开始配置思路出现重大偏差:直接编辑物理网卡vmnic0的VLAN参数,填写允许通行的Trunk VLAN段,虚拟机端口组没有填写对应的VLAN ID;配置完成后启动多台虚拟机,无论哪个VLAN网段都无法收到DHCP响应包,抓包发现虚拟机发出的DHCP Discover广播全部被虚拟交换机丢弃,核心交换机侧完全收不到虚拟机广播流量。

先后排查物理交换机Trunk放行、DHCP服务器地址池、网线链路、防火墙策略,全部无异常,翻阅VMware ESXi 8.0官方网络文档,才理清vSwitch、vmnic、VMkernel、端口组四者的VLAN标签处理逻辑,修正配置后虚拟机立刻正常获取DHCP地址,下面完整梳理故障根因、标准化配置步骤与全量排错清单。

1.1 ESXi虚拟交换机VLAN/Trunk底层转发逻辑(踩坑后梳理)

很多运维混淆物理交换机与ESXi虚拟交换机配置逻辑,物理交换机Trunk配置在网口,但是ESXi的vmnic物理网卡仅作为数据传输通道,本身不处理VLAN标签剥离、封装、过滤规则。

  • vmnic物理网卡:仅单纯透传带VLAN标签的二层流量,不做任何VLAN放行、过滤,无法配置Trunk允许VLAN列表;

  • VMkernel端口:承载ESXi管理、vMotion、存储流量,Trunk允许通行的VLAN段,必须在VMkernel端口中定义,用于告知虚拟交换机哪些带标签流量允许转发;

  • 虚拟机端口组:面向虚拟机虚拟网卡的出口,用来完成VLAN标签剥离动作,端口组填写单一VLAN ID后,虚拟交换机会把该VLAN的带标签流量剥离标签发给虚拟机,虚拟机发送的无标签流量自动封装对应VLAN标签上联物理交换机;

  • Trunk工作完整流程:上联物理交换机透传带VLAN标签流量→vmnic网卡透传至vSwitch→VMkernel放行对应VLAN段→匹配目标端口组VLAN ID→剥离标签转发给虚拟机,虚拟机DHCP广播包携带正确VLAN标签上联,DHCP服务器正常回应。

1.2 本次故障直接诱因

  1. 错误将Trunk允许VLAN配置在物理vmnic网卡,VMkernel端口未配置Trunk放行VLAN,vSwitch直接丢弃所有带标签流量;

  2. 虚拟机对应的端口组VLAN ID为空,虚拟交换机无法识别该端口归属的目标VLAN,流量无匹配转发规则,DHCP广播包无法出虚拟机网卡。

二、ESXi 8.0标准vSwitch Trunk标准化正确配置步骤

  1. 登录ESXi Web客户端,进入【网络】-【虚拟交换机】,新建或编辑现有标准vSwitch;

  2. 绑定上联物理网卡vmnic,物理交换机对应端口配置为Trunk,放行全部业务VLAN;

  3. 添加VMkernel端口,在VMkernel端口的VLAN设置中填写Trunk允许通行的VLAN范围,如10,20,30-40;这一步是Trunk生效的核心,替代错误的vmnic网卡配置;

  4. 为每一个业务网段单独创建虚拟机端口组,每个端口组的VLAN ID填写对应业务单一VLAN(例如业务A端口组VLAN=10,业务B端口组VLAN=20);

  5. 虚拟机编辑硬件,将网卡切换至对应业务端口组,保存配置重启虚拟机网卡;

  6. 虚拟机执行dhclient重新获取地址,正常收到DHCP分配IP。

三、配置完成后仍无法获取DHCP的补充排查方向

  1. 上联物理交换机校验:确认交换机Trunk端口放行对应VLAN,未配置VLAN黑名单、ACL拦截DHCP 67/68端口;

  2. 端口组校验:确认虚拟机网卡绑定的端口组VLAN ID填写正确,禁止端口组VLAN设置为4095(全Trunk混杂模式极易引发标签错乱);

  3. VMkernel校验:VMkernel端口Trunk VLAN范围包含虚拟机所属VLAN,无遗漏、无格式填写错误;

  4. 虚拟机防火墙校验:虚拟机内部系统防火墙未拦截UDP 67/68 DHCP广播端口;

  5. DHCP服务器校验:目标VLAN网段存在可用IP地址池,服务器网关、中继配置正常,可正常接收跨VLAN广播;

  6. 虚拟交换机混杂模式校验:业务虚拟机端口组无需开启混杂模式,仅抓包场景开启,混杂模式开启会引发广播风暴,干扰DHCP广播交互。

四、高频故障排错清单(现场实操遇到的各类问题)

故障现象根因分析标准解决方案
vSwitch配置Trunk后,所有虚拟机都无法获取DHCPTrunk VLAN放行规则配置在vmnic物理网卡,VMkernel未配置允许VLAN段删除vmnic上错误VLAN配置,在VMkernel端口填写Trunk允许VLAN列表
端口组未填写VLAN ID,虚拟机DHCP完全无响应虚拟交换机无法匹配流量所属VLAN,DHCP广播包直接丢弃给每个业务虚拟机端口组设置对应单一VLAN ID
同交换机部分VLAN虚拟机可以获取IP,部分VLAN失败VMkernel端口Trunk VLAN范围遗漏故障网段VLAN修改VMkernel VLAN列表,补充缺失业务VLAN段
端口组VLAN ID设置为4095混杂模式,DHCP地址时有时无4095全标签混杂模式流量标签错乱,广播包冲突丢失取消4095,每个业务端口组配置固定单一VLAN
虚拟机端口组VLAN配置正确,仍收不到DHCP广播上联物理交换机Trunk未放行对应VLAN,或ACL拦截DHCP端口登录核心交换机检查Trunk允许VLAN列表,放开UDP67/68端口
虚拟机可以静态配置IP通外网,DHCP无法自动获取虚拟机系统防火墙拦截DHCP广播UDP端口,DHCP服务器无广播中继关闭虚拟机防火墙UDP 67/68拦截,VLAN跨网段场景配置DHCP中继

五、运维高频误区避坑(现场踩坑复盘总结)

1. 误区:ESXi Trunk配置和物理交换机一样,直接在物理网卡vmnic配置允许VLAN即可纠正:ESXi虚拟交换机的物理网卡仅做流量透传,不具备VLAN过滤能力,Trunk允许通行VLAN必须配置在VMkernel端口,直接配置vmnic完全失效,虚拟机无法收发带标签广播流量。

2. 误区:搭建Trunk环境,虚拟机端口组不需要填写VLAN ID,VMkernel配置好Trunk就能自动识别纠正:虚拟机网卡无法识别802.1Q VLAN标签,必须依靠端口组剥离标签;端口组不设置VLAN ID,虚拟交换机无法完成标签剥离封装,DHCP广播流量无法正常转发。

3. 误区:想要多VLAN虚拟机共用端口组,端口组VLAN设置4095全Trunk混杂模式最省事纠正:4095混杂模式会让端口接收所有带标签流量,极易产生广播风暴、流量标签混乱,DHCP广播包冲突丢失;规范做法是一个业务VLAN对应独立端口组,设置固定VLAN ID。

4. 误区:只要VMkernel配置了Trunk VLAN,不管端口组怎么设置,虚拟机都能正常通信纠正:VMkernel仅控制哪些带标签流量允许进入vSwitch,端口组是流量出口匹配规则,二者缺一不可;缺少任意一项都会导致流量丢弃,DHCP无法交互。

5. 误区:DHCP获取失败一定是DHCP服务器或者物理交换机问题,不需要排查ESXi虚拟交换机VLAN配置纠正:本次故障物理网络、DHCP服务全部正常,核心故障点在于ESXi虚拟交换机VLAN配置逻辑错误;遇到虚拟机DHCP异常,优先排查vSwitch、VMkernel、端口组三层VLAN配置,再排查物理网络。

用户留言 User Comments