About KeaMA

Kea Migration Assistant

More information about KeaMA tool


This utility translates most ISC DHCP configuration elements to the appropriate format for Kea. However, some elements of an ISC DHCP configuration file cannot be automatically translated to Kea format, either because some features of ISC DHCP are unsupported in Kea, or because Kea implements that functionality differently. In areas where the utility is unable to translate the configuration, it inserts diagnostic messages to highlight what was not translated, with references to issues in the Kea GitLab that provide more detail. These sections of the configuration will require manual review and adjustment.

This tool does not translate the DHCP active lease file. There is an experimental project to translate lease files, the KeaMA Leases tool.

Next Steps

Open the output file and look for log messages, which may include links to ISC GitLab issues with more information.

The major configuration areas that will likely require redesign are the failover or high-availability solution, client classification, and host reservations. Kea has an alternative to the DHCPv4 failover draft implemented in ISC DHCP: the Kea feature is called "High Availability," and it works equally well for both DHCPv4 and DHCPv6. Kea does support client classification, but there is no equivalent for ISC DHCP's hyper-flexible permit/deny scripting language. The option inheritance hierarchy in Kea is different than in ISC DHCP, and the configuration for custom vendor-specific options is also different. Kea has robust support for host reservations, but in ISC DHCP all host reservations are global. In Kea, host reservations are by default per-subnet, although global host reservations are also supported. The following resources may help with understanding your options for enabling these features in Kea:

Once you think your configuration file is ready, load it into the respective Kea DHCPv4 or DHCPv6 server and run the configuration checkers.

When you are ready to cut over from your old ISC DHCP server to Kea, you may want to also translate your active leases. For that, we recommend using the KeaMA Leases tool.

Getting Help

If you have problems using this tool, or want to report crashes or bugs with the tool, please open an issue in the KeaMA GitLab project page.

For advice on how to rewrite configuration elements that cannot be translated by machine, or other topics not addressed here, please post your questions on the kea-users mailing list.

Users whose organizations are interested in purchasing professional support services from ISC are encouraged to contact us at isc.org/contact.

  • 24 [bug] piotrek

    Fixed path to ChangeLog.md file, which is different when KeaMA web service is deployed from keama-docker image. (Gitlab #41)

  • 23 [build] tomek

    The left-over server code is now removed. Documentation, python tests are now included in the release tarball. (Gitlab #35)

  • 22 [func] piotrek

    Changelog is now displayed in Keama web interface, as a part of About KeaMA page. (Gitlab #30)

  • 21 [func] piotrek

    CSRF protection was force enabled in Keama web interface. (Gitlab #34)

  • 20 [func] piotrek

    Keama web flask random SECRET_KEY is now generated only once and stored in a file to make it persistent. This is to prevent issues with CSRF session token. (Gitlab #33)

  • 19 [build] tomek

    All python tests fixed. Added pylint. Added CI pipeline that runs pylint, builds keama code, and runs tests. (Gitlab #23)

  • 18 [func] piotrek

    Enhancements of keama web interface: whole web page was reformatted and is using now the same styling as official isc.org web page. The html form is sent asynchronously (ajax) and whole feedback to the user is displayed in asynchronous manner. Previous web interface was kept as a fallback legacy version in case JavaScript is not supported by browser (url /legacy). (Gitlab #31)

  • 17 [func] piotrek

    Enhancements of keama web interface: when needed, feedback is presented to the user in form of closable alert section on top of the page. (Gitlab #29)

  • 16 [func] piotrek

    Enhancements of keama web interface: when migration is done, display only those contents to the user which are available; feedback such as "file too large" or "your config has been shared" are now using the same base template for consistent styling; absolute file paths are hidden in stdout and stderr in production; added white-space wrapping for html pre tags - used to display stdout, stderr and kea generated config. (Gitlab #26)

  • 15 [build] tomek

    Compilation fix for FreeBSD. Tested on FreeBSD 13.0, but other OS versions are likely affected, too. (Gitlab #6)

  • 14 [func] tomek

    It is now possible to either upload a file or copy-paste its contents. It is now possible to add your comments if you share your configuration with ISC. The "share with ISC" button is now working properly. (Gitlab #25)

  • 13 [doc] manu

    Add the Kea Migration Assistant Docker option to the "Off-Line Migration" section.

  • 12 [build] tomek

    Fixed compilation error on Alpine 3.17. Also disabled -Werror option that might cause compilation failures in other cases. (Gitlab #24)

  • 11 [doc] vicky

    Web interface reworded. (Gitlab #17)

  • 10 [bug] fdupont

    Fixed potential infinite loop in handling pick-first-value and possibly other statements. (Gitlab #7)

  • 9 [func] tomek

    The keama now can report its version (using -v or --version. It now prints some information about the file being converted and its content. The internal help is now corrected. Thanks to Carsten Strotmann for reporting and sending a patch. (Gitlab #14)

  • 8 [func] tomek

    The web interface now has configurable timeout for keama conversion. This is useful to kill hanging processes if keama gets stuck. The default timeout is 30 seconds. (Gitlab #21)

  • 7 [func] tomek

    Basic web interface implemented for keama. The interface is written in python and uses Flask framework. (Gitlab #13)

  • 6 [build] tomek

    Converted system tests to python (pytest). (Gitlab #2)

  • 5 [build] tomek

    Removed many obsolete files, added new, short README and ChangeLog files. (Gitlab #1)

  • 4 [build] fdupont

Fixed build by gcc10. (Gitlab dhcp#116)

  • 3 [doc] fdupont

New documentation including this file. (Gitlab dhcp#34)

  • 2 [bug] fdupont

Fixed dhcp4 option 67 wrong name. (Gitlab dhcp#22)

  • 1 [func] fdupont

Initial revision.

For complete code revision history, see http://gitlab.isc.org/isc-projects/keama

LEGEND * [bug] General bug fix. This is generally a backward compatible change, unless it's deemed to be impossible or very hard to keep compatibility to fix the bug. * [build] Compilation and installation infrastructure change. * [doc] Update to documentation. This shouldn't change run time behavior. * [func] New feature. In some cases this may be a backward incompatible change, which would require a bump of major version. * [sec] Security hole fix. This is no different than a general bug fix except that it will be handled as confidential and will cause security patch releases.

*: Backward incompatible or operational change.