You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu服务器上通过Cockpit创建的Win11虚拟机可访问局域网及互联网但无法访问宿主机

Ubuntu服务器上通过Cockpit创建的Win11虚拟机可访问局域网及互联网但无法访问宿主机

我碰到过好几个用户遇到和你一模一样的问题,其实根源是Cockpit里的「Direct attachment」网络模式的特性导致的,我来给你拆解下原因和具体的解决办法:

先明确问题根源

Cockpit里的「Direct attachment」底层用的是macvtap驱动,这个模式的设计初衷是让虚拟机直接和物理网卡通信,性能很好,但有个天生的限制:虚拟机可以和局域网内的任何设备(包括路由器、其他电脑)通信,但默认情况下和宿主机之间无法直接互通。因为macvtap会绕过宿主机的网络栈,虚拟机发的数据包不会经过宿主机的网络接收路径,自然就到不了宿主机内核,反过来也一样。

你的环境信息梳理(方便对照)

  • 宿主机(Ubuntu Server)IP:192.168.178.2
  • Win11虚拟机IP:192.168.178.219
  • 网关/局域网DNS:192.168.178.1 / 192.168.178.2
  • 虚拟机路由表正常,默认网关指向路由器,所以能正常上外网和访问其他LAN设备

解决办法(两种任选)

方法一:给宿主机的macvtap接口加同网段IP(不用改VM配置)

这个方法不用动虚拟机的设置,只需要在宿主机上操作:

  1. 找到对应的macvtap接口:
    在Ubuntu宿主机的终端里执行:
    ip link show
    
    找名字格式类似macvtap@enpXsX的接口(比如你的物理网卡是enp0s3,对应的macvtap可能是macvtap0@enp0s3)
  2. 给macvtap接口加同网段IP:
    选一个局域网里没被占用的IP(比如192.168.178.3),执行:
    sudo ip addr add 192.168.178.3/24 dev macvtap0
    
    (把macvtap0换成你找到的实际接口名,IP换成你可用的)
  3. 测试:回到Win11虚拟机里,ping 192.168.178.3,应该能通了。如果要让这个IP永久生效,可以把配置加到你的网络管理工具里——比如用Netplan的话,编辑/etc/netplan/xxx.yaml,添加这个接口的IP配置;用ifupdown的话,编辑/etc/network/interfaces。

方法二:改用桥接模式(彻底解决互通问题)

如果觉得方法一有点绕,直接把虚拟机的网络改成桥接模式更直观,桥接模式下宿主机和虚拟机完全在同一个广播域,默认就能互通:

  1. 先把Win11虚拟机关机
  2. 登录Cockpit的虚拟机管理界面,找到这个Win11 VM,点击「编辑」
  3. 找到网络配置部分,把「Direct attachment」改成「Bridge」,然后选择你的物理网卡(比如enp0s3)
  4. 启动虚拟机,现在测试访问宿主机的192.168.178.2,应该就能正常ping通、访问服务了

额外排查点(概率较低,但可以确认)

虽然你说其他局域网设备能访问宿主机,大概率不是防火墙的问题,但也可以快速排查下:
在Ubuntu宿主机执行:

sudo ufw status

看看有没有规则拒绝来自192.168.178.219的流量;如果用的是iptables,执行sudo iptables -L -n检查INPUT链的规则,确保没有阻止VM的IP段。

备注:内容来源于stack exchange,提问作者Ignazio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 08:54:33