How to setup vyos to let it support netboot.xyz?

Hello Everyone,
Does anyone know how to setup dhcp option in vyos 1.3 to let it support netboot.xyz?

Hello,

You will need to configure the following:

set service dhcp-server use-dnsmasq enable
set service dns forwarding options \"dhcp-match=set:bios,60,PXEClient:Arch:00000\"
set service dns forwarding options \"dhcp-boot=tag:bios,netboot.xyz.kpxe,,SERVERIP\"
set service dns forwarding options \"dhcp-match=set:efi32,60,PXEClient:Arch:00002\"
set service dns forwarding options \"dhcp-boot=tag:efi32,netboot.xyz.efi,,SERVERIP\"
set service dns forwarding options \"dhcp-match=set:efi32-1,60,PXEClient:Arch:00006\"
set service dns forwarding options \"dhcp-boot=tag:efi32-1,netboot.xyz.efi,,SERVERIP\"
set service dns forwarding options \"dhcp-match=set:efi64,60,PXEClient:Arch:00007\"
set service dns forwarding options \"dhcp-boot=tag:efi64,netboot.xyz.efi,,SERVERIP\"
set service dns forwarding options \"dhcp-match=set:efi64-1,60,PXEClient:Arch:00008\"
set service dns forwarding options \"dhcp-boot=tag:efi64-1,netboot.xyz.efi,,SERVERIP\"
set service dns forwarding options \"dhcp-match=set:efi64-2,60,PXEClient:Arch:00009\"
set service dns forwarding options \"dhcp-boot=tag:efi64-2,netboot.xyz.efi,,SERVERIP\"

Replace SERVERIP with your PXE Boot Server.

Taken from netbootxyz - LinuxServer.io

We do not use dnsmasq

Was it used it previous versions or have that documentation blindly just coupled EdgeOS and Vyos together?

Probably EdgeOS feature
As we have containers we can use any app :blush:

I’m quite eager to get vyos to support netboot.xyz. With current 1.5.x it isn’t possible to set the dhcp-server client-classes config (not yet supported) to set the required client boot-file-name.

Here is an example kea DHCP snippet to set the correct boot-file-name:

    "client-classes": [
      {
        "name": "CLASS_IPXE",
        "test": "(option[77].exists and option[77].text == \"iPXE\")",
        "option-data": [
          {
            "name": "boot-file-name",
            "data": "http://boot.netboot.xyz/menu.ipxe"
          }
        ]
      },
      {
        "name": "CLASS_EFI_HTTP",
        "test": "not member(\"CLASS_IPXE\") and (option[93].exists and option[93].uint16 == 16)",
        "option-data": [
          {
            "name": "boot-file-name",
            "data": "http://boot.netboot.xyz/ipxe/netboot.xyz.efi"
          },
          {
            "name": "vendor-class-identifier",
            "data": "HTTPClient"
          }
        ]
      },
      {
        "name": "CLASS_EFI_7",
        "test": "not member(\"CLASS_IPXE\") and not member(\"CLASS_EFI_HTTP\") and (option[93].exists and option[93].uint16 == 7)",
        "option-data": [
          {
            "name": "boot-file-name",
            "data": "netboot.xyz.efi"
          }
        ]
      },
      {
        "name": "CLASS_DEFAULT",
        "test": "not member(\"CLASS_IPXE\") and not member(\"CLASS_EFI_HTTP\") and not member(\"CLASS_EFI_7\")",
        "option-data": [
          {
            "name": "boot-file-name",
            "data": "netboot.xyz.kpxe"
          }
        ]
      }
    ],

Above snippet is based on Docker Container | netboot.xyz

PS: Another kea netboot.xyz config example.

I was planning to use something similar with iVentoy. Same issue occurs, need to be able to define client classes based upon architecture in order to determine EFI or BIOS boot method, which currently does not seem to be supported.