DHCP File Configurations
-
I originally had my DHCP file working for UEFI Machines, but would not work for Legacy machines. I changed this to recommended ones on the Wiki Example 2 and now neither UEFI or Legacy will work. When I boot any machine it will get stuck trying to start IPv4. Here is my DHCP file:
# dhcpd.conf # # Sample configuration file for ISC dhcpd # # option definitions common to all supported networks... option domain-name "xxxxxx"; #option domain-name-servers x.x.x.x; default-lease-time 600; max-lease-time 7200; # Use this to enble / disable dynamic dns updates globally. #ddns-update-style none; option space PXE; option PXE.mtftp-ip code 1 = ip-address; option PXE.mtftp-cport code 2 = unsigned integer 16; option PXE.mtftp-sport code 3 = unsigned integer 16; option PXE.mtftp-tmout code 4 = unsigned integer 8; option PXE.mtftp-delay code 5 = unsigned integer 8; option arch code 93 = unsigned integer 16; # RFC4578 use-host-decl-names on; ddns-update-style interim; ignore client-updates; next-server x.x.x.x; authoritative; # A slightly different configuration for an internal subnet. subnet x.x.x.x netmask x.x.x.x { option subnet-mask x.x.x.x; range dynamic-bootp x.x.x.x x.x.x.x; default-lease-time 21600; max-lease-time 43200; option domain-name-servers x.x.x.x; option routers x.x.x.x; class "UEFI-32-1" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00006"; filename "i386-efi/ipxe.efi"; } class "UEFI-32-2" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00002"; filename "i386-efi/ipxe.efi"; } class "UEFI-64-1" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00007"; filename "snponly.efi"; } class "UEFI-64-2" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00008"; filename "ipxe.efi"; } class "UEFI-64-3" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00009"; filename "ipxe.efi"; } class "Legacy" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00000"; filename "undionly.kkpxe"; } }
Any ideas?
-
First the shaming… Obfuscating internal or private address ranges doesn’t help debug your issues. I can’t hack 192.168.x.x networks since that address range isn’t routable across the internet. All that does is keep us from helping you. Now if you do have public address numbers there, you have bigger problems than fog at the moment.
With that said, if pxe booting is not going good, I have a tutorial that will help us drive to the answer: https://forums.fogproject.org/topic/9673/when-dhcp-pxe-booting-process-goes-bad-and-you-have-no-clue
Upload the pcap to a google drive or other network share and then either post the link here, or if you don’t want to post it to a public forum IM me and I will take a look at it and tell you what I see.
Also when you updated your dhcp server configuration make sure you restart the dhcp server to pick up the new settings. Be sure that the dhcp server is actually running by using
sudo ps aux|grep dhcp
that should return the process info for the dhcp server. -
@imagingmaster21 I’ve just tried that config and it works great. Though last time when we were talking on chat you had
filename "snponly.efi";
set for allUEFI-...
classes. Maybe that’s the difference.This all depends heavily on the machines you are trying to PXE boot and so the config can be all good but still you have issues if the clients just don’t like the iPXE binary you choose.
I’d suggest setting
snponly.efi
in all the UEFI classes again and try. -
@sebastian-roth we had an extensive IM chat session. The OP found where the issue was and identified the need for snponly.efi for a specific hardware configuration. I had him start with the examples from the fog wiki and work from there. Where we left it was he was going to see if he could collect the system uuid to see if we could write a better dhcp filter to only send i386-efi/snponly.efi for that specific model and send ipxe.efi for the remainder of the arch 0007 hardware types.