让台式机 + 手机/平板同时访问虚拟机里的 PC 站 & App 接口(80 & 8080)
一、准备工作
-
主机系统:Windows 10/11(含 VMware Workstation 16/17)
-
虚拟机系统:CentOS 7/8(其他 Linux 同理)
-
目标:
-
台式机浏览器访问
http://192.168.X.Y→ PC 站(80) -
手机/平板同 Wi-Fi 访问
http://192.168.X.Y:8080→ App 接口(8080)
-
-
先找到"正在上网"的那块物理网卡:
Win+R → cmd →
ipconfig记录 IPv4 地址 / 子网掩码 / 默认网关 / 网卡描述 (后文称【上网卡】)。
示例:
bash
无线局域网适配器 WLAN 3
IPv4 地址 . . . . . . 192.168.2.27
子网掩码 . . . . . . 255.255.255.0
默认网关 . . . . . . 192.168.2.1
二、VMware 桥接配置
| 步骤 | 详细操作 |
|---|---|
| 1 | 关闭 CentOS 虚拟机(关机而非挂起)。 |
| 2 | 打开 VMware → 菜单 编辑 → 虚拟网络编辑器。 |
| 3 | 右下角点 更改设置 → 点 是 提权。 |
| 4 | 选中 VMnet0 (默认桥接)→ 选 桥接模式 → 下拉框选【上网卡】: 无线就选带 Wireless/Wi-Fi 的;有线就选 Intel/Realtek Ethernet。 ⚠ 不要选 Virtual、Bluetooth、Direct 字样。 |
| 5 | 点 应用 → 确定。 |
三、虚拟机网卡选型
| 步骤 | 操作 |
|---|---|
| 1 | 选中虚拟机 → 右键 设置 → 网络适配器。 |
| 2 | 选 桥接模式(B) → 可勾选 复制物理网络连接状态 → 确定。 |
四、CentOS 获取同网段 IP(两条路线,二选一)
A. 全自动 DHCP
bash
nmcli device connect ens33
dhclient ens33
ip addr show ens33
看到 192.168.2.xxx/24 即可继续。
B. 固定静态 IP(推荐服务器)
假设要给虚拟机 192.168.2.226,网关 192.168.2.1
bash
cat > /etc/sysconfig/network-scripts/ifcfg-ens33 <<'EOF'
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.2.226
NETMASK=255.255.255.0
GATEWAY=192.168.2.1
DNS1=223.5.5.5
EOF
systemctl restart network
ip addr show ens33
确认出现 192.168.2.226/24。
五、主机链路验证
Windows cmd 执行:
ping 192.168.2.226
必须 TTL=64 通;不通回退第二章重新选桥接卡。
六、开放服务端口
1. 保证服务监听在 0.0.0.0
| 服务 | 启动示例 |
|---|---|
| SpringBoot PC 站 | java -jar pc.jar --server.address=0.0.0.0 --server.port=80 |
| SpringBoot App 接口 | java -jar app.jar --server.address=0.0.0.0 --server.port=8080 |
| Node/Express | npm start -- --host 0.0.0.0 --port 8080 |
| Nginx | listen 80; 默认即 0.0.0.0 |
检查监听:
ss -lntp | grep -E ':80|:8080'
必须出现 0.0.0.0:80 / 0.0.0.0:8080 或 :::80 / :::8080。
2. 防火墙放行
bash
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
firewall-cmd --list-ports # 查看已放行
若用 iptables:
bash
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
七、最终验证
| 客户端 | 访问地址 | 期望结果 |
|---|---|---|
| 台式机浏览器 | http://192.168.2.226 |
PC 站首页 |
| 手机/平板同一 Wi-Fi | http://192.168.2.226:8080/api/health |
JSON 返回 |
八、一键回滚(可选)
若想恢复 NAT 上网:
虚拟机设置 → 网络适配器 → 选 NAT 模式 → 确定 → 重启虚拟机即可。
九、常见问题速查表
| 现象 | 根因 | 解决 |
|---|---|---|
| 虚拟机拿不到 192.168.2.xxx | 桥接绑错卡 / DHCP 被关 | 回第二章重选【上网卡】;或改用第四章静态 |
| 能 ping 但端口不通 | 服务只监听 127.0.0.1 | 启动加 --server.address=0.0.0.0 |
| 手机 ping 不通 | 路由器开"AP 隔离" | 登录路由器关掉隔离;或改用 NAT 端口映射 |
| 重启主机后不通 | 桥接卡自动变 | 重新执行第二章,把 VMnet0 绑回当前【上网卡】 |
十、附录:常用命令汇总
bash
# 重启网络
systemctl restart network
# 看网关 / DNS
ip route | grep default
cat /etc/resolv.conf
# 实时抓包
tcpdump -i ens33 -nn host 192.168.2.27
# Windows 清 ARP 缓存
arp -d *