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

如何阻止Multipass管理的Ubuntu 22.04虚拟机访问主机局域网及主机本身,同时保留互联网访问权限

如何阻止Multipass管理的Ubuntu 22.04虚拟机访问主机局域网及主机本身,同时保留互联网访问权限

没问题,我来帮你搞定这个需求!因为你只能通过SSH访问主机,所以所有操作都在主机上完成就行,不用碰虚拟机内部。下面是一步步的操作步骤:

第一步:确认关键网络信息

首先得搞清楚Multipass虚拟机所在的子网,以及主机的局域网子网,这样才能精准设置拦截规则:

  • 查看你的Multipass虚拟机IP和状态:
    multipass list
    
    记下虚拟机的IP(比如192.168.64.2)。
  • 查看Multipass网桥的子网信息:
    ip addr show multipass0
    
    找到类似inet 192.168.64.1/24的行,后面的192.168.64.0/24就是Multipass子网(记为MULTIPASS_SUBNET)。
  • 查看主机的局域网子网:
    ip addr | grep -E 'inet (?!127.0.0.1|192.168.64)' | awk '{print $2}'
    
    这个命令会自动排除回环地址和Multipass子网,得到你的局域网子网(比如192.168.1.0/24,记为LAN_SUBNET)。同时记下你的局域网接口名(比如enp0s3,可以从ip addr的输出里找到)。

第二步:用iptables设置拦截规则

我们通过iptables来限制虚拟机的访问范围,同时保留互联网访问能力:

  1. 阻止Multipass子网访问局域网:
    sudo iptables -A FORWARD -s $MULTIPASS_SUBNET -d $LAN_SUBNET -j DROP
    
  2. 阻止Multipass虚拟机访问主机本身:
    sudo iptables -A INPUT -s $MULTIPASS_SUBNET -j DROP
    
  3. 确保主机开启IP转发(保证虚拟机能正常访问互联网,Multipass默认可能已经开启,但保险起见检查一下):
    sudo sysctl -w net.ipv4.ip_forward=1
    
    为了让这个设置重启后依然生效,执行:
    echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
    

第三步:保存规则防止重启失效

Ubuntu重启后默认会重置iptables规则,所以我们需要安装工具来保存规则:

sudo apt update && sudo apt install -y iptables-persistent

安装过程中会弹出提示,问你是否保存当前的IPv4和IPv6规则,直接选Yes就好。

可选:用ufw替代iptables(更直观)

如果你习惯用ufw(Ubuntu默认防火墙),也可以用下面的命令配置:

  1. 允许虚拟机的流量转发到互联网:
    sudo ufw allow in on multipass0 out on any
    
  2. 拒绝虚拟机访问局域网:
    sudo ufw deny in on multipass0 out on <你的局域网接口名> to $LAN_SUBNET
    
  3. 拒绝虚拟机访问主机:
    sudo ufw deny in on multipass0 from $MULTIPASS_SUBNET to any
    
  4. 重启ufw让规则生效:
    sudo ufw reload
    

配置完成后,你可以测试一下:比如在虚拟机里ping局域网内的其他设备,应该ping不通;ping主机的局域网IP也不行,但ping外网地址(比如8.8.8.8)应该能正常连通。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 13:20:29