libvirt NAT 配置 - DHCP 不起作用

libvirt NAT 配置 - DHCP 不起作用

我想使用 libvirt 网络 NAT 配置。

libvirt 说https://wiki.libvirt.org/page/Virtual_network_%22default%22_has_not_been_started

“1)如果你没有在物理机上使用 dnsmasq 为物理网络,你应该完全禁用 dnsmasq”

这与我的上下文相对应,因此我在主机系统中停止并禁用 dnsmasq。

在 qemu 系统中:

virsh # net-edit default

<network>
 <name>default</name>
 <uuid>b6ef8506-d4c7-4bba-9fe7-8f971ea87d10</uuid>
 <forward mode='nat'>
  <nat>
   <port start='1024' end='65535'/>
  </nat>
 </forward>
 <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:06:86:de'/>
  <domain name='circus.net'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
   <dhcp>
    <range start='192.168.122.2' end='192.168.122.10'/>
   </dhcp>
  </ip>
</network>

我启动默认网络:

virsh # net-start default
Network default started

virsh # net-list
Name State Autostart Persistent
----------------------------------------------------------
default active no yes

我开始客人 S0 和 S1

virsh # start S0
Domain S0 started

virsh # start S1
Domain S1 started

virsh # list
Id Name State
----------------------------------------------------
1 S0 running
2 S1 running

但 DHCP 似乎不起作用:

virsh # net-dhcp-leases default
Expiry Time MAC address Protocol IP address Hostname Client ID or DUID
-------------------------------------------------------------------------------

在主机上:

ping: S1: Name or service not known

我已尝试过:

在 virt-manager 中

hostnamectl set-hostname server1
hostnamectl set-hostname server0

virsh # shutdown S0
virsh # shutdown S1
virsh # net-destroy default

在主机上:

tcpdump -i virbr0

在 qemu 中:

virsh # net-start default
virsh # start S0
virsh # start S1

tcpdump 没有看到任何到达 virbr0 的信息

我的问题是:在这种情况下如何让 DHCP 工作?

其他问题:

1.据说,在 libvirt 中,nat 配置应该开箱即用(默认配置),无需执行任何操作。“开箱即用”到底是什么意思?这里的 S1 和 S0 都默认将 FQDN 设置为 localhost.localdomain ,那么 libvirt DHCP 如何区分 S0 和 S1?

2.如果我想自定义我的 dnsmasq 配置(例如,像 log-facility=/var/log/dnsmasq.log 这样的配置),conf 文件在哪里?不在 /etc/dnsmasq.conf 中,也不在 /etc/dnsmasq.d/anyname.conf 中,因为 dnsmasq 无法在主机上运行?

答案1

我在 Debian 系统上遇到了同样的问题,并发布了一个解决方案,希望它能有所帮助,或者如果有人能改进它,那就太好了:)

在将以下内容添加到来宾域 XML 文件后,主机到来宾的连接即可正常工作:

<interface type='bridge'>
  <source bridge='virbr0'/>
  <model type='virtio'/>
</interface>

这会在客户系统中创建一个之前未见过的网络接口。然后我dhclient在客户虚拟机内的接口上运行,它获得了一个 192.168.122.x 地址,其中的端口可供主机系统访问。

相关内容