Many thanks for your try. I tested that two weeks ago, forget this code it is too old.
Heureka, I broke the looop. :-) Yeeeeehaaa
Please add this to uefi and break the loop part on the documentation page.
First never use UEFI and DNSmasq in proxy mode combined. The DNSmasq does not answer! I double checked that with the dhcp-logs.
I waited for the PXEClient String to transfer ipxe.efi from tftproot. After that I let DNSmasq match iPXE strings with option 175.
Besides you see I also integrated pxelinux for "bios / legacy" and several other uefi architectures.
You have to place on root at tftp the "bootstrap.ipxe / boot.ipxe".
Only one line is needed in the script for ipxe.efi in boot.ipxe:
tftproot/boot.ipxe
Code:
chain http://192.168.1.2/boot.ipxe
The /etc/dnsmasq.conf
Code:
##Global settings
#Interface
interface=enp1s0
#port=0
#Log everything in syslog
log-dhcp
listen-address=192.168.1.2
no-hosts
#PXE boot
#pxe-prompt="Press F8 for boot menu", 10
#pxe-service=X86PC, “Boot from networkâ€, pxelinux
#pxe-service=X86PC, "Boot from local hard disk", 0
#Domain settings
domain=boot.lan
#DHCP settings
dhcp-range=192.168.1.3,192.168.1.254,72h
#dhcp-host=MAC:IP
dhcp-option=3,192.168.1.2
dhcp-option=42,192.168.1.2
#dhcp-option=vendor:MSFT,2,li
#dhcp-boot=pxelinux.0
#dhcp-boot=net:Name,Bootfile
dhcp-authoritative
dhcp-match=set:bios,60,PXEClient:Arch:00000
dhcp-boot=tag:bios,pxelinux.0,192.168.1.2
dhcp-match=set:efi32,60,PXEClient:Arch:00006
dhcp-boot=tag:efi32,syslinux32.efi,192.168.1.2
#load ipxe.efi from tftp server
dhcp-match=set:efibc,60,PXEClient:Arch:00007
dhcp-boot=tag:efibc,ipxe.efi,192.168.1.2
#wait for match that contains iPXE sends request to dnsmasq and option 175 a 2nd boot-file
dhcp-match=set:iPXE,175
dhcp-boot=tag:iPXE,boot.ipxe #file is on tftp-root
dhcp-match=set:efi64,60,PXEClient:Arch:00009
dhcp-boot=tag:efi64,efi64/syslinux.efi,192.168.1.2
#TFTP settings
enable-tftp
tftp-root=/var/lib/tftpboot