Multipass、virt-manager 和桥接网络

Multipass、virt-manager 和桥接网络

我刚开始使用 Multipass,我发现有些文档很稀疏(或者我不知道如何正确找到它)。我正在运行 19.10,安装了 QEMU 和 libvirt。我为 Windows 10 VM 创建了一个名为 br0 的桥接以太网接口,我需要它与我的其他工作站位于同一子网中。这部分工作正常。我运行了命令“sudo multipass 设置 local.driver=libvirt“然后创建了我的第一个多通道实例。

我遇到的第一个问题是我必须使用多通连接方法是登录虚拟机并创建一个用户(默认的“ubuntu”用户除外),然后让新用户成为 sudo 的成员。这是因为我搞不清楚如何通过 virt-manager 控制台以多通道 sudo 用户 ubuntu 的身份登录虚拟机。完成此操作后,我便能够以新用户身份登录 virt-manager 控制台并安装 openssh-server。我关闭了虚拟机,将 virt-manager 中的 NIC 更改为桥接以太网接口,重新启动了虚拟机,虚拟机从我的 DHCP 服务器收到 IP,并且可以通过 SSH 从网络上的任何其他工作站或虚拟机直接访问。

不幸的是,这样做会破坏“多通连接vm01“连接到 VM 的方法(事实上,它会破坏针对该实例的 CLI 的任何多通道命令),现在唯一的连接方式是通过 SSH(或 virt-manager 控制台)。

是否有某个配置文件用于指示 multipass 在新的桥接接口上查找虚拟机?我实际上可以接受它在 virt-manager 下作为独立虚拟机运行(事实上,这是一种启动 Ubuntu 虚拟机的绝佳方式,无需在 virt-manager 中创建新虚拟机、附加 ISO 等)。但我可以预见,如果将 multipass CLI 链接断开到实例,未来可能会出现问题。

答案1

感谢您试用 Multipass。在 Multipass 中,我们默认使用 Ubuntu 云镜像,因此需要注意一些事项。默认情况下,云镜像没有启用密码的用户。但是,由于它们是云镜像,因此您可以使用它们cloud-init以多种不同的方式配置 Multipass 实例。 cloud-init文档可在以下位置找到https://cloudinit.readthedocs.io/en/latest/。其中有许多不同配置的示例。此外,还有一篇简短的博客文章https://ubuntu.com/blog/using-cloud-init-with-multipass关于cloud-init与 Multipass 一起使用。

关于网络和与multipass实例的连接,是的,我们需要连接ssh,因此,我们需要能够轻松发现实例的 IP 地址。使用桥接网络的最佳方法是通过添加第二个接口,cloud-init然后将 libvirt 指向第二个接口以进行桥接网络,并保持 NAT 网络完好无损,以便multipass可以连接到它。

我希望这个帮助能祝你好运!

答案2

我有一个类似的用例 - 除了使用 SSH 工具之外,我发现对于服务器用例来说,使用 nginx 也非常有帮助,例如从无头 ubuntu 服务器托管多通道 VM 的用例。

例如,我在多通道虚拟机的 3000 端口上运行 Rails Web 服务器,并将其与主机上的 9000 端口通过 ssh 链接,这样就可以从任意位置连接到我的主机<host ip>:8080

1. 将多通道链接到主机
sudo ssh -L 9000:localhost:3000 \ 
    -i /var/snap/multipass/common/data/multipassd/ssh-keys/id_rsa \
    ubuntu@<multipass instance ip> 
2. 允许从主机外部访问多通道

现在使用 nginx,我将使用主机的 IP 连接到端口 9000,并在端口 8080 上公开该端口以供外部连接。

server {
    listen 8080;
    server_name development;
    location / {
        proxy_pass http://localhost:9000;
    }
}

相关内容