在 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 可能根本没路由到外网。
按这个顺序排查,一般三步内解决
- 虚拟机能不能拿到地址:
ip addr里有10.211.55.x就说明 NAT 正常。 - 能不能到网关:
ping 10.211.55.2。不通就是虚拟网卡或 Parallels 网络服务的问题,重启 Parallels 的网络组件模块。 - 能不能到外网 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 的实际局域网地址。
什么时候该换思路
如果你经常需要在虚拟机、容器、甚至手机热点之间共享同一条加速线路,逐个配环境变量会很累,而且每换一个网络环境就要重配一次。这类需求更适合在网络层统一处理,具体可以看 全局模式和分流模式怎么选,以及 多设备同时在线的规则。