[Kea-users] pxe booting

Darren Ankney darren.ankney at gmail.com
Tue Apr 2 12:57:00 UTC 2024


Hi,

Are you noticing any logged errors or are the clients just not
receiving the pxe boot file?  Can you look for the log messages that
pertain to testing for matches to each class?  It might be best to
work with one type of client at a time to get things working correctly
for that client.  Lessons learned will apply to the other clients.

Thank you,
Darren Ankney

On Mon, Apr 1, 2024 at 1:17 PM Andrew Meyer via Kea-users
<kea-users at lists.isc.org> wrote:
>
> Hello,
> I'm in the process of switching my ISC-DHCPd server running on RaspberrryPi and CentOS/RHEL to KEA.  However i'm having trouble with getting PXE boot configured with this.  I am using vmwarre / Proxmox for virtual machines and cobbler to do installations.
>
> I am using these sites as reference for pxe boot config but it doesn't seem to be working.
>
> https://www.growse.com/2018/08/29/pxe-booting-a-raspberry-pi.html
> https://forum.ipxe.org/showthread.php?tid=7986
> https://superuser.com/questions/1805388/pxe-boot-esxi-8-on-intel-nuc-12
> https://lists.isc.org/pipermail/kea-users/2022-February/003353.html
>
>
> Here is what I have configured in the current isc-dhcpd setup for pxe boot.
>
>     allow booting;
>     allow bootp;
>     always-broadcast on;
> #  class "vmware" { match if binary-to-ascii(16,8,":",substring(hardware, 1, 2)) = "00:29:1b"; }
>   class "pxeclients" { match if substring (option vendor-class-identifier, 0, 9) = "PXEClient"; next-server 10.1.2.3; if option arch = 00:06 { filename "grub/grub-x86.efi"; } else if option arch = 00:07 { filename "grub/grub-x86_64.efi"; } else if option arch = 00:09 { filename "grub/grub-x86_64.efi"; } else { filename "pxelinux.0"; }}
>      if exists user-class and option user-class = "iPXE" {
>         filename "http://10.1.2.3/cblr/svc/op/gpxe/system/[system]" ;
>      } elsif option arch != 00:00 {
>        filename "gpxe/snponly.efi" ;
>      } else {
>       filename "gpxe/undionly.kpxe" ;
>      }
> }
>
> Here is what I put in my kea-dhcpd4.conf
> {
>   "Dhcp4": {
>         "client-classes": [
>               {
>                 "name": "XClient_iPXE",
>                 "test": "substring(option[77].hex,0,4) == 'iPXE'",
>                 "boot-file-name": "http://<ServerIP>:<ServerPort>/<path>/<PHPfile>"
>               },
>               {
>                 "name": "UEFI-32-1",
>                 "test": "substring(option[60].hex,0,20) == 'PXEClient:Arch:00006'",
>                 "boot-file-name": "ipxe/i386/ipxe.efi"
>               },
>               {
>                 "name": "UEFI-32-2",
>                 "test": "substring(option[60].hex,0,20) == 'PXEClient:Arch:00002'",
>                 "boot-file-name": "ipxe/i386/ipxe.efi"
>               },
>               {
>                 "name": "UEFI-64-1",
>                 "test": "substring(option[60].hex,0,20) == 'PXEClient:Arch:00007'",
>                 "boot-file-name": "ipxe/x86_64/ipxe.efi"
>               },
>               {
>                 "name": "UEFI-64-2",
>                 "test": "substring(option[60].hex,0,20) == 'PXEClient:Arch:00008'",
>                 "boot-file-name": "ipxe/x86_64/ipxe.efi"
>               },
>               {
>                 "name": "UEFI-64-3",
>                 "test": "substring(option[60].hex,0,20) == 'PXEClient:Arch:00009'",
>                 "boot-file-name": "ipxe/x86_64/ipxe.efi"
>               },
>               {
>                 "name": "Legacy",
>                 "test": "substring(option[60].hex,0,20) == 'PXEClient:Arch:00000'",
>                 "boot-file-name": "ipxe/undionly.kpxe"
>               }
>         ],
>     "interfaces-config": { "interfaces": [] },
>     "control-socket": {
>         "socket-type": "unix",
>         "socket-name": "/run/kea/kea4-ctrl-socket"
>     },
>     "lease-database": {
>         "type": "memfile",
>         "lfc-interval": 3600,
>         "name": "/var/lib/kea/kea-leases4.csv"
>     },
>         "expired-leases-processing": {
>         "reclaim-timer-wait-time": 10,
>         "flush-reclaimed-timer-wait-time": 25,
>         "hold-reclaimed-time": 3600,
>         "max-reclaim-leases": 100,
>         "max-reclaim-time": 250,
>         "unwarned-reclaim-cycles": 5
>         },
>     "valid-lifetime": 600,
>     "max-valid-lifetime": 7200,
>     "subnet4": [
>       {
>         "id": 1,
>         "subnet": "10.150.1.0/24",
>         "next-server": "10.150.10.17",
>         "boot-file-name": "/pxeboot/pxelinux.0",
>         "pools": [ { "pool": "10.150.1.100 - 10.150.1.200" } ],
>         "option-data": [
>           {
>             "name": "routers",
>             "data": "10.150.1.2"
>           },
>           {
>             "name": "domain-name-servers",
>             "data": "10.150.10.20, 10.150.20.10, 1.1.1.1"
>           },
>           {
>             "name": "domain-name",
>         "code": 15,
>             "data": "example.net"
>           },
>         {
>             "name": "domain-search",
>             "data": "example.net, example.co"
>         }
>         ],
>         "reservations": [ { "hw-address": "1a:1b:1c:1d:1e:1f", "ip-address": "10.150.1.180",  "option-data": [ { "name": "domain-name-servers", "data": "10.150.10.20, 1.1.1.1" } ] } ]
>         },
>         {
>         "id": 2,
>         "subnet": "10.150.10.0/23",
>         "next-server": "10.150.10.17",
>         "boot-file-name": "/home/nfs/export/pxelinux.0",
>         "pools": [ { "pool": "10.150.10.100 - 10.150.11.200" } ],
>         "option-data": [
>         {
>                 "name": "routers",
>                 "data": "10.150.10.1"
>         },
>         {
>                 "name": "domain-name-servers",
>                 "data": "10.150.10.20, 10.150.20.10, 1.1.1.1"
>         },
>         {
>                 "name": "domain-name",
>                 "code": 15,
>                 "data": "example.net"
>         },
>         {
>             "name": "domain-search",
>             "data": "example.net, example.co"
>         }
>         ],
>         "reservations": [
>           {
>             "hw-address": "1a:1b:1c:1d:1e:1f",
>             "ip-address": "10.150.10.180",
>             "option-data": [
>               {
>                 "name": "domain-name-servers",
>                 "data": "10.150.10.20, 1.1.1.1"
>                 }
>               ]
>             }
>           ]
>         },
>         {
>         "id": 3,
>         "subnet": "10.150.100.0/24",
>         "pools": [ { "pool": "10.150.100.10 - 10.150.100.250" } ],
>         "option-data": [
>         {
>                 "name": "routers",
>                 "data": "10.150.100.1"
>         },
>         {
>                 "name": "domain-name-servers",
>                 "data": "10.150.10.20, 10.150.20.10, 1.1.1.1"
>         },
>         {
>                 "name": "domain-name",
>                 "code": 15,
>                 "data": "example.net"
>         },
>         {
>             "name": "domain-search",
>             "data": "example.net, example.co"
>         }
>         ],
>         "reservations": [
>           {
>             "hw-address": "1a:1b:1c:1d:1e:1f",
>             "ip-address": "10.150.100.180",
>             "option-data": [
>               {
>                 "name": "domain-name-servers",
>                 "data": "10.150.10.20, 1.1.1.1"
>                 }
>               ]
>             }
>           ]
>         },
>         {
>         "id": 4,
>         "subnet": "10.150.20.0/24",
>         "next-server": "10.150.10.17",
>         "boot-file-name": "/home/nfs/export/pxelinux.0",
>         "pools": [ { "pool": "10.150.20.100 - 10.150.20.200" } ],
>         "option-data": [
>         {
>                 "name": "routers",
>                 "data": "10.150.20.1"
>         },
>         {
>                 "name": "domain-name-servers",
>                 "data": "10.150.10.20, 10.150.20.10, 1.1.1.1"
>         },
>         {
>                 "name": "domain-name",
>                 "code": 15,
>                 "data": "example.net"
>         },
>         {
>             "name": "domain-search",
>             "data": "example.net, example.co"
>         }
>         ],
>         "reservations": [
>           {
>             "hw-address": "1a:1b:1c:1d:1e:1f",
>             "ip-address": "10.150.20.180",
>             "option-data": [
>               {
>                 "name": "domain-name-servers",
>                 "data": "10.150.10.20, 1.1.1.1"
>               }
>             ]
>           }
>         ]
>       }
>     ],
>     "loggers": [
>       {
>         "name": "kea-dhcp4",
>         "output_options": [
>           {
>             "output": "/tmp/kea-dhcp4.log",
>             "maxsize": 1048576,
>             "maxver": 8
>           }
>         ],
>         "severity": "INFO"
>       },
>       {
>         "name": "kea-dhcp4.packets",
>         "output_options": [
>           {
>             "output": "/tmp/kea-dhcp4-packets.log",
>             "maxver": 10
>           }
>         ],
>         "severity": "DEBUG",
>         "debuglevel": 99
>       }
>     ]
>   }
> }
>
>
>
> Thanks in advance!
>
> --
> ISC funds the development of this software with paid support subscriptions. Contact us at https://www.isc.org/contact/ for more information.
>
> To unsubscribe visit https://lists.isc.org/mailman/listinfo/kea-users.
>
> Kea-users mailing list
> Kea-users at lists.isc.org
> https://lists.isc.org/mailman/listinfo/kea-users


More information about the Kea-users mailing list