在Ubuntu Server 22.04上安裝Multipass並配置固定IP的注意事項

安裝Multipass很容易的,但配置固定IP就不是了。

另一個問題是官方文件都認為設定固定IP不是Multipass的範圍,它不想講太多。 但根據我的經驗,它的官方例子在Ubuntu Server 22.04並不能用。 (它可能可以在Ubuntu桌面上運行吧,但我不確定。)

以下是我在不斷踩坑後找到的解決方案。

通過snap安裝Multipass

簡單,無腦

sudo snap install multipass

在主機上配置Virtual Bridge

很重要,很重要,很重要,在所有操作之前停止multipass。然後使用"network-manager"包安裝命令工具"nmcli"。

sudo snap stop multipass.multipassd
sudo apt-get update && sudo apt-get install network-manager

修改NetworkManager配置,以便它可以管理所有bridge interface。預設情況下,有很多類型的接口它都不管的。您需要在'unmanaged-devices'行的末尾添加 ",except:type:bridge"。

sudo vim /usr/lib/NetworkManager/conf.d/10-globally-managed-devices.conf

NetworkManager Config Example

[keyfile]
unmanaged-devices=*,except:type:wifi,except:type:gsm,except:type:cdma,except:type:bridge

然後重新運行NetworkManager.service,並添加具有固定IP範圍的Bridge network interface。

sudo systemctl reload NetworkManager.service 
sudo nmcli connection add type bridge con-name localbr ifname localbr \
    ipv4.method manual ipv4.addresses 10.13.31.1/24

現在,如果您使用ip a檢查主機所有網卡,新network interface應該已經出現(但有機會是處於關閉狀態)。

將Multipass切換到lxd

Multipass網絡功能目前只在lxd後端上提供。

sudo snap start multipass.multipassd
# 在轉driver前,先刪掉所有VM。轉了之後就無法管控之前的VM
multipass delete --all && multipass purge
multipass set local.driver=lxd

以下指令與官方教學相同。

在VM中創建額外的網卡

在創建新的VM實例時創建額外的網卡。

# 建立新VM時指定它的網卡和mac地址
multipass launch --name test1 --network name=localbr,mode=manual,mac="52:54:00:4b:ab:cd"

# 修改設定檔,對應mac地址使用固定IP
multipass exec -n test1 -- sudo bash -c 'cat << EOF > /etc/netplan/10-custom.yaml
network:
    version: 2
    ethernets:
        extra0:
            dhcp4: no
            match:
                macaddress: "52:54:00:4b:ab:cd"
            addresses: [10.13.31.13/24]
EOF'

# 重啟VM實例網絡。
multipass exec -n test1 -- sudo netplan apply

# 然後,您應該在VM上看到固定IP列表。
multipass info test1