Kea Migration Assistant
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.
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.
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
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
--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.
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)
New documentation including this file. (Gitlab dhcp#34)
Fixed dhcp4 option 67 wrong name. (Gitlab dhcp#22)
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.