Skip to content

vkhamsao/dhcpd6-unnumbered

 
 

Repository files navigation

dhcpd6-unnumbered

What is dhcpd6d-unnumbered?

  • dhcpd6d-unnumbered is a stateless dhcpd6 server that looks at interface routes against an accepted prefix-filter and will handout dhcpd6 replies with the requested information.
  • currently tested bootstrapping baremetal linodes using UEFI HTTP IPv6 but could be extended for other use cases.

How Does it Work?

  • it listens on the dhcpd6 server multicast address on each interface
  • the interface is checked against a regex. only matching interfaces are handled (default tap.*_0), not matching are ignored completely
  • if the interfaces matches are regex
    • routes for that interface are looked up.
    • a route that matches our accept-prefix filter is handed out in the IA_NA option
  • if a boot-url is requested we hand out a file depending on the user class
    • currently tested is using the UEFI IPv6 HTTP from there you can handout an ipxe.efi with embedded chain.
      • Sample (Must compile with IPv6 enabled):
        #!ipxe
        
        ifconf -c ipv6
        # chain http://[2600:3c02::f03c:93ff:fe60:1d33]/boot2.php?mac=${mac}&domain=${domain}&uuid=${uuid}&manufacturer=${manufacturer}&product=${product}&serial=${serial}
        chain --autofree http://boot.netboot.xyz
        boot
        

NOTES:

  • Currently the server hands out ia_na non-temporary address, dns servers, domain-name, search domain, hostname. RA's are still needed for the default gw, set a nd-prefix in the accepted prefix range with the offlink flag set, managed-flag set, and other config flag set.

Usage:

dhcpd6-unnumbered -help

Example:

/dhcpd6d-unnumbered -regex "et1$" -accept-prefix "2000:1234::/64" -loglevel debug  -http-url "http://[2000:1234::1234]/ipxe.efi"

Build:

GOOS=LINUX go build

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 99.4%
  • Dockerfile 0.6%