很多人在 Hyper-V 里装好虚拟机之后,碰到的第一个拦路虎就是网络。虚拟机上网不稳定、宿主机访问不了虚拟机、局域网里的其他电脑找不到虚拟机、IP 老是漂移……这些问题几乎每天都能在技术社群里看到有人问。我自己从 Hyper-V 刚出的时候就开始折腾它,中间踩过的坑不比各位少,这篇文章就把我这些年积累的 Hyper-V 网络配置经验一次性讲透,重点放在端口映射和固定 IP 这两个实战场景上,希望能帮你少走弯路。
这篇文章适合所有正在用或准备用 Hyper-V 做开发、测试、运维的朋友,不管你是刚接触虚拟化的新手,还是已经被网络问题折磨了一阵子的老手,都能在这里找到可以直接照着抄的方案。
1. Hyper-V 网络模型与三种虚拟交换机的选型思路
在动手配置之前,先把底层模型搞明白。Hyper-V 的网络核心是虚拟交换机(Virtual Switch),你可以把它理解成虚拟机里面的一张虚拟网卡,所有网络流量都从它身上过。Hyper-V 一共提供三种类型的虚拟交换机,搞清楚它们的区别,很多配置问题就迎刃而解了。
1.1 三种虚拟交换机的区别与适用场景
外部虚拟交换机(External):这种交换机直接桥接到你宿主机的一块物理网卡上,虚拟机通过这块物理网卡跟外界通信。选这种模式时,虚拟机和宿主机就像接在同一台物理交换机上的两台独立电脑,局域网里的其他设备也能直接访问虚拟机。这是最接近物理服务器部署的方式,也是绝大多数生产环境的选择。
内部虚拟交换机(Internal):这种交换机只允许宿主机和虚拟机之间通信,虚拟机之间也可以互访,但虚拟机无法直接访问外部网络。如果你只是想在宿主机和虚拟机之间传文件、做调试,不需要虚拟机上网,用这种就够了。
专用虚拟交换机(Private):这是隔离性最强的一种,只允许虚拟机之间互相通信,连宿主机都被排除在外。适合做隔离测试环境、恶意软件分析这类场景。
我在实际项目里用得最多的还是外部虚拟交换机。特别提醒一下,在 Windows 10/11 和 Windows Server 上,系统还会默认自带一个叫“Default Switch”的交换机,这是微软为了方便用户快速上手预置的 NAT 模式虚拟交换机。它开箱即用,虚拟机装好就能上网,但用的是 NAT 转发,外部设备无法直接访问虚拟机,而且 IP 分配方式是动态的,不适合做固定 IP 和端口映射。
1.2 为什么外部交换机是最优解
拿最常见的场景来说:你在笔记本上装了 Hyper-V,虚拟机里跑了一个 Web 服务,想让手机通过局域网访问这个服务。如果用的是 Default Switch,你的手机根本找不到这台虚拟机。换成外部虚拟交换机,把无线网卡(或有线网卡)桥接进去,虚拟机就变成了局域网里一台“有真实 IP 的电脑”,手机直接访问虚拟机的局域网 IP 就能打开 Web 页面。
外部交换机的核心逻辑就是“桥接”。你在 Hyper-V 管理器里新建外部虚拟交换机时选中的那块物理网卡,会被虚拟交换机驱动接管。之后宿主机本身的网络通信、虚拟机对外的网络通信,全都通过这块物理网卡进行。要注意的是,这块物理网卡上原本配置的 IP 地址会被转移到一个叫“vEthernet (交换机名称)”的虚拟网卡上,这其实是正常的,不用慌。
1.3 建交换机时的两个关键细节
创建外部虚拟交换机有几个坑。第一,如果你用的是无线网卡做桥接,Windows 会弹出一个提示“将你的无线网卡绑定到虚拟交换机上可能会导致你的无线网络断开”,这是正常的,点“是”即可。第二,创建过程中物理网卡会短暂掉线,如果你正连着远程桌面操作宿主机,请务必在操作前确认自己有其他途径访问这台机器,否则创建的一瞬间你就跟服务器失联了。
从命令行的角度,创建外部虚拟交换机可以用 PowerShell:
New-VMSwitch -Name "ExternalSwitch" -NetAdapterName "以太网" -AllowManagementOS $true这里-AllowManagementOS $true参数非常关键,它决定宿主机自己是否还能通过这块物理网卡上网。如果设成$false,宿主机就会断网,这一点我在刚接触 Hyper-V 时吃过亏,希望你别再踩一次。
2. 虚拟机固定 IP 配置:让 IP 永不漂移的三种方案
动态 IP 是虚拟机网络配置里最烦人的问题。今天虚机 IP 是 192.168.1.100,明天重启就变成 192.168.1.105,你写的脚本、做的端口映射、配置的远程连接全都得跟着改。解决固定 IP 的问题,本质上有三种思路,我按推荐程度从高到低排序。
2.1 方案一:在虚拟机操作系统内部直接设置静态 IP
这是最直接、最推荐的做法。虚拟机里的系统就是一个完整的操作系统,你直接在里面按普通物理机的配置方式设置静态 IP 就行。比如 Ubuntu 22.04 的配置方式,编辑/etc/netplan/目录下的 yaml 文件。
先看一下当前的网卡名称和状态:
ip a找到你的网卡名(通常是 eth0 或者 ens33 之类),然后编辑 netplan 配置:
sudo nano /etc/netplan/01-network-manager-all.yaml写入以下内容:
network: version: 2 ethernets: eth0: dhcp4: false addresses: - 192.168.1.100/24 routes: - to: default via: 192.168.1.1 nameservers: addresses: - 223.5.5.5 - 119.29.29.29然后应用配置:
sudo netplan apply注意,如果你对网卡的命名不确定,别瞎猜,直接ip a看一眼最稳妥。DNS 地址我填的是国内公共 DNS,你如果用的是企业内网环境,也可以填内网 DNS 地址。
Windows Server 虚拟机就更简单了,打开“网络和共享中心 → 更改适配器设置”,右键以太网网卡 → 属性 → 双击“Internet 协议版本 4 (TCP/IPv4)”,直接填入 IP、子网掩码、网关和 DNS 即可。这个方法最根本、最稳定,因为它直接从操作系统层面锁死了 IP。
2.2 方案二:在 Hyper-V 层面设置 MAC 地址静态化
这种方法治理的是“虚拟机 MAC 地址漂移”的问题。Hyper-V 虚拟机默认使用动态 MAC 地址,每次虚拟机启动时可能都不一样。如果你们公司的 DHCP 服务器绑定了 MAC 地址和 IP 的对应关系,那么 MAC 一变,IP 就不可能固定下来。
在 Hyper-V 管理器中,右键虚拟机 → 设置 → 网络适配器 → 高级功能,会看到一个“MAC 地址”选项,默认是“动态”。改成“静态”,然后手动填一个 MAC 地址。例如填00-15-5D-01-02-03。
这个 MAC 地址要遵守一定的规则:Hyper-V 默认的动态 MAC 地址以00-15-5D开头,这是 Microsoft 的 OUI。手动设置静态地址时,建议也沿用这个前缀,既合规又能避免跟局域网里的物理设备冲突。设置完成之后,配合公司 DHCP 服务器的 MAC 绑定,IP 就能稳定下来。
2.3 方案三:在 DHCP 服务器上做保留
这个方案适合你有 DHCP 服务器管理权限的场景。在 Windows Server 的 DHCP 管理界面里,右键对应作用域 → 保留 → 新建保留,输入虚拟机的 MAC 地址和你想要固定下来的 IP 地址即可。以后这个 MAC 地址每次向 DHCP 请求 IP 时,都会拿到同一个地址。
这三个方案不是互斥的,生产环境我建议这么组合:在虚拟机内部设静态 IP 是根本,同时配合 Hyper-V 的静态 MAC 地址。这样即使换了网络环境、重装了 DHCP,虚拟机的 IP 依然是你指定的那个。
2.4 踩坑记录:静态 IP 配置后宿主机失联
刚接触 Hyper-V 那会儿,我犯过一个低级错误。在一台承担文件共享业务的宿主机上新建外部虚拟交换机,创建完成后宿主机的 IP 变成了 169.254.x.x(APIPA 自动专用地址),跟整个局域网断了。原因就是我没加-AllowManagementOS $true参数,导致宿主机失去了通过这块物理网卡通信的能力。
所以请记住:外部虚拟交换机创建之后,宿主机原来绑定在物理网卡上的 IP 会自动转移到“vEthernet (交换机名)”这块虚拟网卡上。如果你想要宿主机继续拥有固定的局域网 IP,需要去“更改适配器设置”里,找到那个“vEthernet (交换机名)”的网卡,把原来的静态 IP 重新配置上去。
3. 端口映射实战:从宿主机转发到虚拟机
很多场景下,我们并不希望给虚拟机一个完全暴露的局域网 IP,而是希望把宿主机的某个端口转发到虚拟机的某个端口。比如你在自己电脑上用 Hyper-V 跑了一个测试环境,不想让路由器去端口映射,直接让宿主机把 8080 转发到虚拟机的 80 端口,这就用到了 Windows 自带的端口转发机制。
3.1 使用 netsh 命令实现端口代理(端口映射)
在 Windows 的 Hyper-V 场景下,最常用的端口转发工具是netsh interface portproxy。它相当于在宿主机的网络栈里加了一道“中间人”,当外部请求访问宿主机的某个 TCP 端口时,它会把流量转交给目标虚拟机的 IP 和端口。执行以下命令即可:
netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=80 connectaddress=192.168.1.100这个命令的含义是:宿主机监听所有网卡的 8080 端口,收到请求后转发到 192.168.1.100 的 80 端口。
删除这条规则也很简单:
netsh interface portproxy delete v4tov4 listenport=8080 listenaddress=0.0.0.0查看当前所有已配置的端口转发规则:
netsh interface portproxy show all注意:
netsh interface portproxy只支持 TCP 协议的转发,不支持 UDP。如果你需要转发 UDP 流量(比如 DNS 查询、日志采集),需要改用其他工具,比如用socat在 Linux 虚拟机里处理,或者在宿主机上通过 Hyper-V 的负载均衡功能实现。
3.2 Ubuntu 虚拟机内部的端口监听设置
端口映射不仅仅是宿主机设置转发就完了,虚拟机内部的防火墙也得配合。Ubuntu 默认防火墙是 ufw,如果开启了,需要放行对应端口:
sudo ufw allow 80/tcp sudo ufw status如果你在虚拟机里跑的是 Docker 容器,还要注意 Docker 的端口发布。静态 IP 配置好了以后,虚拟机里的 Web 应用监听在 0.0.0.0:80,这个端口才能从外部访问。
我碰到过一种情况:宿主机端口转发配好了,虚拟机里的端口也在监听,但外部就是访问不通。排查到最后发现是 Ubuntu 的 iptables 规则做了拦截,通过sudo iptables -L看了才发现 DOCKER 链里有规则跟转发端口冲突。所以配置完端口映射,先在本机确认一下服务真的监听在 0.0.0.0 上,而不是 127.0.0.1。
3.3 Default Switch 场景下的端口映射特殊处理
如果你想用 Hyper-V 自带的 Default Switch(NAT 网络),又想从宿主机访问虚拟机里的服务,这个需求有点特殊。因为 Default Switch 本身就是一个 NAT 交换机,虚拟机拿到的 IP 是 172.x.x.x 的内网地址。
我的建议:固定 IP 用应用层配置(第 2 章),端口转发用 netsh(第 3 章),网络模型就用外部虚拟交换机(第 1 章)。不要在这上面混用 Default Switch,否则网络链路变长之后,排查问题的成本会成倍增加。用外部交换机 + 虚拟机内部固定 IP + 宿主机 netsh 转发,这个组合最清爽,责任边界最清晰。
4. 常见问题与排查技巧实录
实战中我积累了很多排查经验,这里挑高频问题整理成速查表,方便你直接照着排查。
| 现象 | 可能原因 | 排查步骤 | 解决方法 |
|---|---|---|---|
| 虚拟机无法上网 | 外部交换机桥接的物理网卡选择错误 | 检查虚拟机设置 → 网络适配器 → 虚拟交换机名称 | 换成正确的虚拟交换机 |
| 宿主机断网 | 创建外部交换机时未允许管理操作系统共享该网卡 | 检查“vEthernet”网卡是否有 IP | 给 vEthernet 网卡配置静态 IP |
| 虚拟机 IP 总变 | MAC 地址为动态 | 查看虚拟机网卡的 MAC 地址设置 | 改为静态 MAC,或在 DHCP 上做保留 |
| 宿主机访问不了虚拟机 | 端口转发规则错误或防火墙拦截 | netsh portproxy show all 查看规则 | 修正监听 IP,检查 Windows 防火墙是否放行 |
| 虚拟机重启后 IP 漂移 | 内部未设置静态 IP | 查看虚拟机内部网络配置 | 按第 2 章方案设置固定 IP |
| 外部无法访问虚拟机 | 路由器未配置端口映射 | 确认外部访问路径 | 在路由器上将公网端口映射到宿主机端口 |
4.1 每次宿主机重启后端口转发失效
这是 Windows 的一个老毛病。netsh interface portproxy添加的规则确实会持久化保存,但如果你改过 Windows 防火墙策略,或者启用了 IP Helper 服务并且把它停掉了,就可能导致转发规则不生效。遇到的情况是:重启之前规则好好的,重启之后就访问不通了。解决办法是重新执行一次add命令,或者在服务列表里确认iphlpsvc(IP Helper)服务处于运行状态。
顺带提一句,netsh interface portproxy有个特性:监听地址写0.0.0.0表示监听所有网卡。但如果你同时开着 VMware、VirtualBox 等虚拟化软件,它们创建的虚拟网卡也会被监听,这可能会带来安全风险。建议监听地址尽量写宿主机在局域网中的那个确切 IP,例如listenaddress=192.168.1.10。
4.2 Hyper-V 与 VMware 共存的网络冲突
很多开发者的电脑上同时装了 Hyper-V 和 VMware,但是这两个虚拟化平台的网络虚拟化方式不同,很容易产生冲突。VMware 默认使用自己的 VMnet 网卡,如果开启 Hyper-V,VMware 会提示“您的主机不满足在启用 Hyper-V 或 Device/Credential Guard 的情况下运行 VMware”之类的错误。
这种情况下,要么关闭 Hyper-V 只用 VMware,要么只用 Hyper-V。我个人的经验是:在 Windows 10/11 专业版上,能用 Hyper-V 就优先用 Hyper-V,它的性能、稳定性和与 Windows 的集成度都更好。如果因为特殊原因必须用 VMware,需要关闭 Hyper-V 功能(控制面板 → 程序和功能 → 启用或关闭 Windows 功能 → 取消勾选 Hyper-V),并且关闭内核隔离中的内存完整性,然后重启。
4.3 Windows 家庭版没有 Hyper-V 的情况
Windows 11 家庭版默认没有 Hyper-V 功能开关,很多人折腾半天在“启用或关闭 Windows 功能”里找不到 Hyper-V。其实你可以通过命令行来绕过这个限制。以管理员身份运行 PowerShell,执行以下两行代码:
dism.exe /online /enable-feature /featurename:Microsoft-Hyper-V /all /norestart也许一次不行,需要重启后再执行一次。但要注意,家庭版的许可证里不包含 Hyper-V 功能,强行开启属于变通方案,稳定性不保证。如果你想用虚拟化做正经开发,直接升级到专业版或者用 VMware Workstation Player(个人免费版)更省心。
4.4 如何验证端口映射配置生效
配置完成后,别急着说“搞定了”,先自己验证一遍。在宿主机本地用 PowerShell 测试端口连通性:
Test-NetConnection 127.0.0.1 -Port 8080如果显示 TcpTestSucceeded 为 True,说明宿主机上的端口已经在监听了。然后从另一台局域网电脑上访问宿主机的 IP 和端口测试。如果通不了,按这个顺序检查:
- Windows 防火墙是否放行了 8080 端口的入站连接,新建入站规则或直接执行
netsh advfirewall firewall add rule name="Port8080" dir=in action=allow protocol=TCP localport=8080 - 虚拟机内部的防火墙是否放行了对应端口
- netsh 转发规则里的目标 IP 和端口是否与虚拟机实际配置一致
排查问题的时候,不要同时改多个变量,还原现场、每改动一个配置就测试一次,这是最效率的排查方式。
4.5 WSL 与 Hyper-V 的纠缠
有些朋友问“WSL2 和 Hyper-V 有什么关系?为什么我开 WSL2 之后 Hyper-V 管理器里看不到任何虚拟机?”这里简单说明一下。WSL2 确实基于 Hyper-V 架构运行轻量级虚拟机,但它的虚拟化层是独立的,不需要你在 Hyper-V 管理器里手动创建虚拟机。如果你既用 WSL2 又用 Hyper-V,正常的。如果Hyper-V 管理器里空白,不是坏了,而是你确实还没创建任何虚拟机。至于Windows 功能里没有 Hyper-V,多半是家庭版系统,参考第 4.3 节的方案处理。
5. 一套实战配置流程:从创建交换机到完成端口映射
大多数人看文章喜欢直接照着一步一步做,我把固定 IP 和端口映射这两件事整合成一套标准操作流程,你照着走一遍基本就能解决 90% 的 Hyper-V 网络问题。
5.1 第一步:创建外部虚拟交换机
打开“Hyper-V 管理器”,在右侧操作面板点击“虚拟交换机管理器”。选择“新建虚拟网络交换机”,类型选“外部”,然后给它取一个清晰的名字,例如“External_ETH”。
在“连接类型”里选择“外部网络”,并在下拉框中选中你的物理网卡(这块网卡必须是虚拟机对外通信的物理通道)。建议勾选“允许管理操作系统共享此网络适配器”,这个选项对应 PowerShell 里的-AllowManagementOS $true。不勾的话宿主机就会失去这个物理网卡的 IP,直接断网。
创建完成后,去“网络和共享中心 → 更改适配器设置”看一下,应该能看到一个名字类似“vEthernet (External_ETH)”的网卡。这就是宿主机现在真正使用的网卡。如果之前的静态 IP 丢了,把它配回这块 vEthernet 网卡上。
5.2 第二步:给虚拟机分配外部交换机
在 Hyper-V 管理器中选中你的虚拟机,右键 → 设置 → 网络适配器。在“虚拟交换机”下拉框里,选择刚才创建的“External_ETH”。
接着在左侧找到“网络适配器”下的“高级功能”,把“MAC 地址”从“动态”改成“静态”,并填一个以00-15-5D开头的地址。这一步的目的在第 2 章已经讲过了,为了配合后续固定 IP 的稳定性。
5.3 第三步:在虚拟机内设置固定 IP
这一步需要你进入虚拟机操作系统内部操作。如果虚拟机是 Linux,按照第 2.1 节的方法配置 netplan 或编辑/etc/network/interfaces都行。如果虚拟机是 Windows,直接在图形界面配置 IPv4 属性即可。
配置完之后,在虚拟机里验证一下:
ip addr show ping 192.168.1.1如果虚拟机能 ping 通网关,说明网络通畅。再ping 223.5.5.5验证一下外网连通性。
5.4 第四步:在宿主机上配置端口转发
如果上一节你已经配置好了固定 IP,现在可以直接做端口映射。举一个具体例子:虚拟机 IP 是 192.168.1.100,虚拟机里的 Web 服务监听 80 端口,你希望外部通过宿主机的 8080 端口访问这个 Web 服务。那么宿主机上执行:
netsh interface portproxy add v4tov4 listenaddress=192.168.1.10 listenport=8080 connectaddress=192.168.1.100 connectport=80我建议listenaddress写宿主机的实际局域网 IP(例如 192.168.1.10),而不是0.0.0.0,这样更安全。如果你搞不清楚宿主机 IP 是什么,执行:
ipconfig找到 vEthernet (External_ETH) 网卡对应的 IPv4 地址即可。
5.5 第五步:放行防火墙
宿主机上的 Windows 防火墙默认会拦截外部对 8080 端口的访问,需要手动放行。以管理员身份运行 PowerShell:
netsh advfirewall firewall add rule name="Allow 8080 to VM" dir=in action=allow protocol=TCP localport=8080如果你之后不想放行这个端口了,用这个命令删除规则:
netsh advfirewall firewall delete rule name="Allow 8080 to VM"虚拟机内部的防火墙也要记得放行对应端口,这个我前面已经提过了,别忽略。
5.6 第六步:验证整条链路
在宿主机本地测试:
Test-NetConnection 192.168.1.10 -Port 8080然后从局域网的其他电脑测试这个端口。如果能通,恭喜你,链路已经打通。如果不同,再按第 4 节的排查表逐项检查。
6. 关于 Hyper-V 网络性能的几个经验
我个人实际测试下来,Hyper-V 外部虚拟交换机的网络性能已经接近物理机的 90% 以上,正常场景完全够用。但如果你的业务对网络延迟和吞吐量有要求,有几个经验供你参考。
6.1 开启 SR-IOV 让网卡直通
如果物理网卡支持 SR-IOV(单根 I/O 虚拟化),可以在虚拟机网络适配器的“硬件加速”里勾选“启用 SR-IOV”。启用后,虚拟机可以通过物理网卡的硬件虚拟化功能直接访问网卡,绕过了 Hyper-V 虚拟交换机这一层的软件处理,延迟和 CPU 开销都会明显下降。
启用 SR-IOV 有两个前提:物理网卡必须支持 SR-IOV,并且虚拟交换机创建时必须勾选“启用单根 I/O 虚拟化 (SR-IOV)”。如果你的虚拟机是运行在笔记本上的,我建议跳过这个选项,笔记本的无线网卡基本都不支持 SR-IOV。
6.2 数据路径优化与网卡队列
Hyper-V 还支持虚拟机的虚拟队列(VMQ)和接收端缩放(RSS),这些都可以在多核处理器环境下提升网络性能。在虚拟机设置 → 网络适配器 → 硬件加速里,把“虚拟队列”和“IPsec 任务卸载”都开启。
有一个小细节,如果虚拟机里跑的是高吞吐的 Web 服务,建议给虚拟机分配至少 2 个虚拟 CPU,并确保宿主机的 CPU 负载不要长期打满,否则网络中断和超时是不可避免的。
6.3 关于 NAT 模式的性能侧面
顺带提一下,如果你在 Hyper-V 里用了 NAT 模式或 Default Switch,网络性能会比外部交换机略差一些。原因很简单,NAT 需要对每个数据包进行地址转换,这需要额外的 CPU 计算。外部交换机走的是桥接模式,数据包是二层的,转换工作量小,延迟也更低。所以追求性能的场景,尽量用外部交换机连接物理网络,不要贪图 Default Switch 的方便。
7. 进阶技巧:让 Hyper-V 虚拟机开机自启后自动恢复网络
很多人的虚拟机是 7x24 小时常开的,一旦宿主机重启,虚拟机如果不会自启,网络服务就会中断,还得手动连上去开机,非常烦人。
设置虚拟机自启用 PowerShell 就可以:
Set-VM -Name "你的虚拟机名称" -AutomaticStartAction Start如果需要,还可以设置自动停止行为:
Set-VM -Name "你的虚拟机名称" -AutomaticStopAction Save这样宿主机重启时虚拟机会自动进入保存状态,宿主机启动后虚拟机再自动启动,网络服务恢复得很快。配这个功能的同时,检查一下虚拟机里的静态 IP 配置是否跟宿主机在同一个网段,可以省掉很多连接不上的烦恼。
再分享一个经验:如果你在虚拟机里跑的是数据库或缓存服务(比如 MySQL、Redis),建议把AutomaticStopAction设成Save而不是ShutDown。Save 会把内存状态完整写盘,重启后自动恢复到之前的状态,服务不用冷启动,拉起的耗时几乎为零。缺点是需要足够的磁盘空间存放 Virtual Machines 目录下的 .bin 文件。
我自己早期在虚拟机里跑测试数据库时,宿主机一旦意外重启,数据库就起不来,后来发现是重启后虚拟机的网络没自动恢复,数据库进程依赖的网络地址绑定失败。设置了自启之后,同时配合虚拟机内部的 systemd 服务自启,整个链路就非常省心了。
8. 写在最后:我踩过的最值得分享的一个坑
如果整篇文章只能留一段话,我想讲讲这个故事。有一回我把一台 Hyper-V 虚拟机配置好了外部交换机,也设了固定 IP,端口映射全都通了,一切正常。然后第二天早上到公司,发现虚拟机访问不到了。这是一台跑着内部 Git 服务的重要虚拟机。
排查过程费了不少劲,最后发现原因是我前一天晚上给宿主机的无线网卡开了“随机硬件地址”功能。Windows 的“随机硬件地址”会让物理网卡的 MAC 地址周期性变化,而 Hyper-V 外部虚拟交换机是绑定物理网卡的。物理网卡 MAC 一变,交换机与新网卡之间的通信瞬间中断,宿主机和虚拟机同时失联。
之后我把所有物理机的网卡“随机硬件地址”功能关掉,再没出过这类问题。
这个坑属于“配置之外”的范畴,往往比静态 IP 和端口映射本身更隐蔽。所以当你发现 Hyper-V 网络配置一切正常却突然失联时,先检查宿主机的物理网卡状态,再查交换机状态,最后再看虚拟机内部配置。排查顺序对了,效率就上来了。