Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    DHCP PXE configuration on multiple LANs - wrong filename (Bug?)

    Scheduled Pinned Locked Moved DHCP and DNS
    1 Posts 1 Posters 404 Views 1 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • N Offline
      naughtydog
      last edited by

      Hello,

      something strange is happening over here.

      I have an PXE Server running on subnet 10.91.0.0/24 (IP 10.91.0.1) which i use to serve PXE on multiple LANs.

      For testing is use different boot filenames on each LAN.

      LAN 10.91.0.0/24
      ad65c961-b20c-4587-abaa-cbe97c1df8fe-image.png

      LAN 10.94.0.0/24
      8216cb5a-9c53-4115-82aa-49c5165cd4f9-image.png

      "Additional BOOTP/DHCP Options" is empty on both LANs.

      After booting up a Client on 10.91.0.0/24 i wondered why he received "undionly.kkpxe" instead of "ipxe.efi". I did a packet capture and indeed, the DHCP Server sends the wrong file.

      0.0.0.0.68 > 255.255.255.255.67: [udp sum ok] BOOTP/DHCP, Request from ea:75:25:77:f1:7e, length 359, xid 0x81068654, Flags [Broadcast] (0x8000)
        Client-Ethernet-Address ea:75:25:77:f1:7e
        Vendor-rfc1048 Extensions
          Magic Cookie 0x63825363
          DHCP-Message Option 53, length 1: Request
          Server-ID Option 54, length 4: 10.91.0.253
          Requested-IP Option 50, length 4: 10.91.0.169
          MSZ Option 57, length 2: 65280
          Parameter-Request Option 55, length 35: 
            Subnet-Mask, Time-Zone, Default-Gateway, Time-Server
            IEN-Name-Server, Domain-Name-Server, Hostname, BS
            Domain-Name, RP, EP, RSZ
            TTL, BR, YD, YS
            NTP, Vendor-Option, Requested-IP, Lease-Time
            Server-ID, RN, RB, Vendor-Class
            TFTP, BF, GUID, Option 128
            Option 129, Option 130, Option 131, Option 132
            Option 133, Option 134, Option 135
          GUID Option 97, length 17: 0.206.73.168.108.53.9.185.72.128.118.176.75.127.225.187.247
          NDI Option 94, length 3: 1.3.1
          ARCH Option 93, length 2: 7
          Vendor-Class Option 60, length 32: "PXEClient:Arch:00007:UNDI:003001"
      
      10.91.0.252.67 > 255.255.255.255.68: [udp sum ok] BOOTP/DHCP, Reply, length 306, xid 0x81068654, Flags [Broadcast] (0x8000)
        Your-IP 10.91.0.169
        Server-IP 10.91.0.1
        Client-Ethernet-Address ea:75:25:77:f1:7e
        file "undionly.kkpxe"
        Vendor-rfc1048 Extensions
          Magic Cookie 0x63825363
          DHCP-Message Option 53, length 1: ACK
          Server-ID Option 54, length 4: 10.91.0.252
          Lease-Time Option 51, length 4: 6155
          Subnet-Mask Option 1, length 4: 255.255.255.0
          Default-Gateway Option 3, length 4: 10.91.0.254
          Domain-Name-Server Option 6, length 8: 10.0.1.1,10.0.1.2
          Domain-Name Option 15, length 9: "net.intra"
          NTP Option 42, length 4: 10.91.0.254
          TFTP Option 66, length 9: "10.91.0.1"
      

      In the DHCP configuration file i found this:

      subnet 10.94.0.0 netmask 255.255.255.0 {
          pool {
                  option domain-name-servers 10.0.1.1,10.0.1.2;
                  deny dynamic bootp clients;
                  failover peer "dhcp_opt77";
      
                  range 10.94.0.1 10.94.0.200;
          }
      
          option routers 10.94.0.254;
          option domain-name "net.intra";
          option domain-name-servers 10.0.1.1,10.0.1.2;
          ping-check true;
          option ntp-servers 10.94.0.254;
          option tftp-server-name "10.91.0.1";
      
          next-server 10.91.0.1;
          if option arch = 00:06 {
                  filename "snponly.efi";
          } else if option arch = 00:07 {
                  filename "snponly.efi";
          } else if option arch = 00:09 {
                  filename "snponly.efi";
          } else {
                  filename "undionly.kkpxe";
          }
      
      }
      
      subnet 10.91.0.0 netmask 255.255.255.0 {
          pool {
                  option domain-name-servers 10.0.1.1,10.0.1.2;
                  deny dynamic bootp clients;
                  failover peer "dhcp_opt19";
      
                  filename "undionly.kkpxe";
                  range 10.91.0.100 10.91.0.200;
          }
      
          option routers 10.91.0.254;
          option domain-name "net.intra";
          option domain-name-servers 10.0.1.1,10.0.1.2;
          ping-check true;
          option ntp-servers 10.91.0.254;
          option tftp-server-name "10.91.0.1";
      
          next-server 10.91.0.1;
          if option arch = 00:06 {
                  filename "ipxe.efi";
          } else if option arch = 00:07 {
                  filename "ipxe.efi";
          } else if option arch = 00:09 {
                  filename "ipxe.efi";
          } else {
                  filename "ipxe.efi";
          }
      
      }
      

      "subnet 10.91.0.0" wrongly contains filename "undionly.kkpxe";, which belongs to "subnet 10.94.0.0"

      Looks like a bug to me.

      1 Reply Last reply Reply Quote 0
      • First post
        Last post
      Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.