Parallels 虚拟机没网?Mac 共享网络排查

在 Mac 上跑 Parallels Desktop,宿主机上网一切正常,虚拟机里浏览器转圈、ping 也不通——这种「宿主好好的,虚拟机没网」的情况,八成不是虚拟机坏了,而是网络模式选错,或者代理只绑在了回环地址上。

先分清共享网络和桥接

Parallels 的虚拟机网络配置里有三个选项,含义差别很大:

  • 共享网络(Shared):虚拟机藏在 Mac 后面做 NAT,拿到的是 10.211.55.x 段的地址,网关通常是 10.211.55.2,也就是你的 Mac。
  • 桥接网络(Bridged):虚拟机直接接到物理网卡上,从路由器拿一个和 Mac 同网段的地址,局域网里其他设备能直接访问它。
  • 仅主机(Host-Only):只有 Mac 和虚拟机之间能通,出不了外网。

如果你只是想让虚拟机上网,用共享网络最省事;如果虚拟机要当服务器给局域网里其他设备访问,才需要桥接。

共享网络下,为什么代理「明明开着」却不通

这是最常见的一种。你在 Mac 上开了代理客户端,浏览器正常,虚拟机里却完全连不上。原因很具体:多数代理客户端默认只监听 127.0.0.1,也就是只接受本机回环过来的连接。虚拟机的流量是从 10.211.55.x 这个虚拟网卡进来的,源地址不是回环,直接被拒。

解决方式只有一个:在代理客户端里打开「允许局域网连接」或「Allow LAN」,让它监听 0.0.0.0。然后给虚拟机配上网关地址:

export http_proxy=http://10.211.55.2:7890
export https_proxy=http://10.211.55.2:7890

不确定宿主地址时,在虚拟机里看默认网关:

ip route | grep default
# 或 macOS 上直接看
ifconfig | grep "inet 10.211"

DNS 是最容易被忽略的一环

能 ping 通 IP、但域名解析不出来,是 DNS 没走对。分两步查:

# 看虚拟机用的是哪个 DNS
cat /etc/resolv.conf

# 直接测解析
nslookup example.com
dig example.com +short

如果 resolv.conf 里是 10.211.55.2 而解析超时,说明 Mac 上的 DNS 服务没转发出去;如果里面是一个内网 DNS(公司网络常见),那台 DNS 可能根本没路由到外网。

按这个顺序排查,一般三步内解决

  1. 虚拟机能不能拿到地址:ip addr 里有 10.211.55.x 就说明 NAT 正常。
  2. 能不能到网关:ping 10.211.55.2。不通就是虚拟网卡或 Parallels 网络服务的问题,重启 Parallels 的网络组件模块。
  3. 能不能到外网 IP:ping 1.1.1.1。通说明路由没问题,问题在 DNS 或代理。
💡 一个快速验证:在虚拟机里执行 curl -v --max-time 5 http://10.211.55.2:7890。能返回代理的错误页或握手响应,说明端口是通的,剩下的只是环境变量没配;直接 connection refused,就是 Allow LAN 没开。

桥接模式下的另一个坑

桥接时虚拟机会拿到和 Mac 同网段的地址,看起来更「正常」,但如果你的网络环境对 MAC 地址做了准入控制(学校、酒店、部分企业网),新设备要先认证才能上网。表现是 IP 拿到了,但什么都连不上。

另外,桥接模式下虚拟机和 Mac 是平级的,代理不能靠回环共享,必须开 Allow LAN 并用 Mac 的实际局域网地址。

什么时候该换思路

如果你经常需要在虚拟机、容器、甚至手机热点之间共享同一条加速线路,逐个配环境变量会很累,而且每换一个网络环境就要重配一次。这类需求更适合在网络层统一处理,具体可以看 全局模式和分流模式怎么选,以及 多设备同时在线的规则。

相关阅读:连接失败排查、连上了但打不开网页。