如何在虚拟机中添加路由 NIC 设备

在向实例添加 路由 NIC 设备 时,必须将实例配置为使用链接本地网关 IP 作为默认路由。对于容器,此配置会自动为您完成。对于虚拟机,必须手动配置网关,或者通过 cloud-init 等机制配置。

要使用 cloud-init 配置网关,首先初始化一个实例

incus init images:ubuntu/22.04 jammy --vm

然后添加路由 NIC 设备

incus config device add jammy eth0 nic nictype=routed parent=my-parent-network ipv4.address=192.0.2.2 ipv6.address=2001:db8::2

在此命令中,my-parent-network 是您的父网络,IPv4 和 IPv6 地址位于父网络的子网中。

接下来,我们将使用 cloud-init.network-config 配置键将一些 netplan 配置添加到实例

cat <<EOF | incus config set jammy cloud-init.network-config -
network:
  version: 2
  ethernets:
    enp5s0:
      routes:
      - to: default
        via: 169.254.0.1
        on-link: true
      - to: default
        via: fe80::1
        on-link: true
      addresses:
      - 192.0.2.2/32
      - 2001:db8::2/128
EOF

netplan 配置添加了所需的 静态链接本地下一跳地址169.254.0.1fe80::1)。对于这些路由中的每一个,我们都将 on-link 设置为 true,它指定路由直接连接到接口。我们还添加了在路由 NIC 设备中配置的地址。有关 netplan 的更多信息,请参阅 其文档

注意

netplan 配置不包含名称服务器。要在实例中启用 DNS,您必须设置有效的 DNS IP 地址。如果主机上存在 incusbr0 网络,则可以将名称服务器设置为该 IP。

然后,您可以使用以下命令启动您的实例

incus start jammy

注意

在启动实例之前,请确保您已 配置了父网络 以启用代理 ARP/NDP。