必须配置NAT端口映射,否则虚拟机对外“隐身”;需确认虚拟机为NAT模式并获取192.168.x.x私有IP,宿主机VMnet8已启用,再通过虚拟网络编辑器或手动修改vmnetnat.conf添加端口转发规则,并重启VMware NAT Service服务,最后放行Windows防火墙对应端口。

想让外网或本机其他设备通过宿主机IP访问虚拟机里的Web服务、SSH或FTP,必须在Windows上为VMware虚拟机配置NAT端口映射——这一步不做,虚拟机始终处于“内网隐身”状态,外部根本连不到它。
确认虚拟机已运行在NAT模式并获取IP
打开虚拟机,执行 ip addr(Linux)或 ipconfig(Windows虚拟机),确认获得的是192.168.x.x段IP(如192.168.20.56),且网关指向VMnet8的默认网关(通常是192.168.20.2)。若IP是169.254.x.x或获取失败,说明NAT网络未通,先检查虚拟机设置里网络适配器是否选中“NAT模式”并勾选“连接时启用”。
回到宿主机,打开“控制面板→网络和 Internet→网络连接”,确认 VMware Network Adapter VMnet8 已启用且有正常IP(如192.168.20.1)。这是NAT通信的物理基础,缺一不可。
用图形界面配置端口映射(仅限VMware Workstation)
方法一:点击VMware顶部菜单栏 编辑 → 虚拟网络编辑器 → 选中 VMnet8(NAT模式)→ 点击右下角“更改设置”(需管理员权限)→ 切换到“NAT设置”选项卡 → 点击“端口转发”→ “添加”。
在弹出窗口中依次填写:
主机端口:比如填 8080(不能被宿主机其他程序占用);
类型:选 TCP(HTTP/SSH用TCP,FTP数据通道可能需UDP);
虚拟机IP地址:填刚才查到的虚拟机IP,如 192.168.20.56;
虚拟机端口:比如Web服务填 80,SSH填 22;
描述:写“Web服务”或“SSH调试”方便识别。
点两次“确定”保存。此时映射已写入VMware配置,但尚未生效——必须重启VMware NAT Service服务,否则所有设置都是纸上谈兵。
让 Windows 桌面程序在开机时静默自启并隐藏到系统托盘。特别适用于 Flutter、Electron 等无视 VBS/ProcessStartInfo 窗口样式、难以隐藏的顽固应用。提供「VBS 启动器 + Python ctypes/Win32 API」的隐藏窗口方案,可稳定把窗口收进托盘且不闪控制台。
手动修改配置文件(适用于VMware Player或Workstation无GUI权限场景)
第一步:定位配置文件。Win7及以上系统路径为:
C:\ProgramData\VMware\vmnetnat.conf
注意:ProgramData是隐藏文件夹,需在文件资源管理器地址栏直接粘贴路径并回车,或开启“显示隐藏的项目”。
第二步:用记事本(**务必以管理员身份运行**)打开该文件,在末尾新增一行:
[incomingtcp]
8080 = 192.168.20.56:80
格式严格为“主机端口 = 虚拟机IP:虚拟机端口”,等号前后不能有空格,TCP和UDP需分不同节写(UDP对应[incomingudp])。
第三步:保存文件后,以管理员身份打开命令提示符,依次执行:
net stop "VMware NAT Service"
net start "VMware NAT Service"
如果提示服务不存在,请检查服务名是否完整输入,或运行 sc query | find /i "natservice" 确认真实服务名。
放行Windows防火墙端口
即使映射配置完成、服务已重启,若宿主机防火墙拦截了主机端口,外网仍无法访问。必须手动放行:
打开“控制面板→系统和安全→Windows Defender 防火墙→高级设置→入站规则→新建规则→端口→TCP→特定本地端口(填你设的8080)→允许连接→全选域/专用/公用→命名(如“VMware Web映射”)→完成。
这一步漏掉,所有前面操作等于白做。尤其注意:若映射的是80或443这类常用端口,要确认IIS、Apache等宿主机服务没抢先占用,否则NAT映射会静默失败。

















