如何设置 kvm 在 linux 中使用路由器的 dhcp?

如何设置 kvm 在 linux 中使用路由器的 dhcp?

我是 kvm 新手,我的问题对某些人来说可能很明显。如何使用本地路由器 dhcp 而不是 kvm 本地 dhcp。本地 dhcp 的范围从 192.168.122.1 开始,我需要它使用范围从 192.168.100.1 开始的本地路由器。如何配置它?提前谢谢!

我的 /etc/libvirt/qemu/networks/default.xml

    <network>
      <name>default</name>
      <uuid>21f9eef3-c1ac-49a1-b413-574011a2c4d5</uuid>
      <forward mode='nat'/>
      <bridge name='virbr0' stp='on' delay='0'/>
      <mac address='52:54:00:38:20:3e'/>
      <ip address='192.168.122.1' netmask='255.255.255.0'>
        <dhcp>
          <range start='192.168.122.45' end='192.168.122.55'/>
          <host mac='52:54:00:05:d8:ba' name='pluto' ip='192.168.122.50'/>
          <host mac='52:54:00:84:bb:56' name='kali' ip='192.168.122.45'/>
        </dhcp>
      </ip>
    </network>

我在这篇文章中看到了一个建议KVM 网络 - 通过外部 DHCP 为每个 VM 分配 IP用此代码片段编辑此文件,但我不确定将其放在 xml 文件中的什么位置:

        <interface type='bridge'>
          <mac address='52:54:00:1c:00:3a'/>
          <source bridge='br0'/>
          <model type='e1000e'/>
          <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
        </interface>

答案1

您首先需要做的是将您的虚拟机管理程序的网络放在虚拟机可以连接的桥接接口上。

假设这将是,br0并且当前物理接口是eth0

任何 IP 配置eth0都应移至br0

执行此操作的方法始终取决于您如何配置网络,并且即使在同一个发行版上也有所不同(NetworkManager,netplan,systemd-networkd,经典发行版脚本 - 都有不同的配置)。

如果您想在命令行上执行一次此操作来尝试一下,下面的方法可能会有效,如果您搞砸了,重新启动会将您的配置恢复原样:

brctl addbr br0
ip a flush eth0
ip a add a.b.c.d/xx dev br0
brctl addif br0 eth0
ip link set br0 up

然后,您可以将新网络连接到桥接上的 VM(这可以在 VM 运行时完成),或者更改当前接口(这需要关闭 VM)。

一般来说,如果您使用virt-managerGUI,所有这一切都会变得容易得多,因为它可以让整个体验变得非常简单。

否则,您可以使用以下命令向您的虚拟机添加新网络:

virsh attach-interface --domain your-vm-name \
  --type bridge \
  --source br0 \
  --model virtio \
  --config \
  --live

这里--live将把配置添加到正在运行的机器,并将--config其保存到其 XML 文件中,以便在关闭虚拟机后它仍然存在。

或者,您可以virsh edit your-vm-name编辑现在的网络配置以模仿您发布的配置(替换当前配置,<interface>...</interface>使其成为类型桥接、源 br0。您可以保留模型和 mac 以及 pci 信息。

相关内容