Libvirt提供bootp选项而不需要configuration

我有一个在libvirt中configuration的虚拟networking,并configuration为提供DHCP(通过dnsmasq),但没有configuration为提供bootp信息(见下文),但是当我启动一个iPXE ISO,并在wireshark看stream量,我看到DHCP服务该虚拟networking似乎正在响应下一个服务器参数:

bootp.ip.server 192.168.122.1

这会导致一个问题,因为我想使用另一台服务器作为DHCP代理来提供PXE信息,为此,libvirt的DHCP服务并没有提供下一个服务器的值。

如何让libvirt虚拟networking发送该值?

编辑:似乎geeting libvirt的dnsmasq忽略bootp请求可以通过将folling语句添加到/var/lib/libvirt/dnsmasq/defaut.conf来完成:

 dhcp-ignore: bootp 

…遗憾的是,当libvirt重新启动时,thi文件被覆盖。 不知道是否有一个可configuration的模板,可以放置所有虚拟networking的参数。

虚拟networkingconfiguration:

 <network connections='3'> <name>default</name> <uuid>59535def-2082-42f4-8e5e-a68f6f0fffbd</uuid> <forward mode='nat'> <nat> <port start='1024' end='65535'/> </nat> </forward> <bridge name='virbr0' stp='on' delay='0'/> <mac address='52:54:00:1c:02:0e'/> <ip address='192.168.122.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.122.2' end='192.168.122.254'/> </dhcp> </ip> </network> 

来自iPXE的DHCP请求:

 16:04:59.394149 IP (tos 0x0, ttl 64, id 2237, offset 0, flags [none], proto UDP (17), length 441) 0.0.0.0.bootpc > 255.255.255.255.bootps: [udp sum ok] BOOTP/DHCP, Request from 52:54:00:35:45:c5, length 413, xid 0xb665d069, secs 11, Flags [Broadcast] (0x8000) Client-Ethernet-Address 52:54:00:35:45:c5 Vendor-rfc1048 Extensions Magic Cookie 0x63825363 DHCP-Message Option 53, length 1: Request MSZ Option 57, length 2: 1472 ARCH Option 93, length 2: 0 NDI Option 94, length 3: 1.2.1 Vendor-Class Option 60, length 32: "PXEClient:Arch:00000:UNDI:002001" CLASS Option 77, length 4: "iPXE" Parameter-Request Option 55, length 21: Subnet-Mask, Default-Gateway, Domain-Name-Server, LOG Hostname, Domain-Name, RP, Vendor-Option Vendor-Class, TFTP, BF, Option 128 Option 129, Option 130, Option 131, Option 132 Option 133, Option 134, Option 135, Option 175 Option 203 T175 Option 175, length 51: 177.5.1.16.236.129.57.34.1.1.25.1.1.33.1.1.24.1.1.235.3.1.0.0.38.1.1.17.1.1.19.1.1.23.1.1.21.1.1.39.1.1.16.1.2.18.1.1.27.1.1 Client-ID Option 61, length 7: ether 52:54:00:35:45:c5 GUID Option 97, length 17: 0.36.246.109.48.115.66.98.75.170.28.144.120.91.142.203.164 Server-ID Option 54, length 4: 192.168.122.1 Requested-IP Option 50, length 4: 192.168.122.178 END Option 255, length 0 

来自libvirt的DHCP响应:

 16:04:59.487750 IP (tos 0xc0, ttl 64, id 11805, offset 0, flags [none], proto UDP (17), length 328) 192.168.122.1.bootps > 255.255.255.255.bootpc: [udp sum ok] BOOTP/DHCP, Reply, length 300, xid 0xb665d069, secs 11, Flags [Broadcast] (0x8000) Your-IP 192.168.122.178 Server-IP 192.168.122.1 Client-Ethernet-Address 52:54:00:35:45:c5 Vendor-rfc1048 Extensions Magic Cookie 0x63825363 DHCP-Message Option 53, length 1: ACK Server-ID Option 54, length 4: 192.168.122.1 Lease-Time Option 51, length 4: 3600 RN Option 58, length 4: 1800 RB Option 59, length 4: 3150 Subnet-Mask Option 1, length 4: 255.255.255.0 BR Option 28, length 4: 192.168.122.255 Default-Gateway Option 3, length 4: 192.168.122.1 Domain-Name-Server Option 6, length 4: 192.168.122.1 END Option 255, length 0 PAD Option 0, length 0, occurs 8 

您需要实际禁用该networking的libvirt中的DHCP设置。 返回的服务器不是下一个服务器,而是DHCP服务器是谁,当然这是libvirt的本地接口。 您需要从libvirt的angular度完全禁用DHCP,并让您的外部DHCP服务器完成所有工作。 这不是微不足道(如果可能的话)将libvirtconfiguration为DHCP中继,并将消息转发到原始服务器。