{{tag>linux docker kea dhcp}} ======Docker - DHCP Server====== Since mid 2023 I have been running a Docker ISC Kea Image using base Docker Alpine Linux images, with S6 init system. (ISC Kea is a modern replacement for their DHCP.) The main DHCP server runs on my main server and I have an automatic fall over back up on my separate Linux router. I basically followed the Kea template [[https://kea.readthedocs.io/en/latest/arm/config-templates.html#template-home-network-of-a-power-user|Home Network of a Power User]]. I was never quite sure I had the automatic fall over back-up working. On 2023-01-02 I modified a configuration file on the primary server with a syntax error, 8 days later I notice millions of lines of errors on my log files. Sure enough the backup had simply been working. I fixed up the simple syntax error and the primary server took back over. Everything basically worked as expected. ISC also has a project for a simple GUI interface primarily for Kea and basic for Bind9. There is apparently no Alpine package yet for Stork. ISC-Kea seems to be provided in a number of packages ^Package^Descriptiion^Comment^ |isc-kea-admin|This package provides backend database initialization and migration scripts and a DHCP benchmark tool. If you are not using a database backend, you may not need this.|Not using a database backend at this time| |isc-kea-common|Common libraries for the ISC Kea DHCP server. Install this.|Need this.| |isc-kea-ctrl-agent|This package provides the REST API service agent for Kea DHCP.|?| |isc-kea-dev|Development headers for ISC Kea DHCP server. Install if you plan to create any custom Kea hooks.|Probably do not need.| |isc-kea-dhcp4-server|DHCPv4 server.|Need this.| |isc-kea-dhcp6-server|DHCPv6 server.|Do not need at this time.| |isc-kea-dhcp-ddns-server|DDNS server.|Need this.| |isc-kea-doc|Kea documentation. Highly recommended.|On a Docker container?| |isc-kea-hook-flex-option|Flexible Options hook.|What is this?| |isc-kea-hook-ha|High Availability hook.|What is this?| |isc-kea-hook-lease-cmds|Lease Commands hook.|What is this?| |isc-kea-hook-mysql-cb|MySQL Configuration Backend.|Dont need this at this time.| |isc-kea-hook-pgsql-cb|PostgreSQL Configuration Backend.|Dont need this.| |isc-kea-hook-stat-cmds|Statistics Commands hook.|?| |isc-kea-http|This package is essential, install it.|It is essential...| |isc-kea-perfdhcp|Optional. Includes a DHCP performance testing tool from ISC.|?| |isc-kea-shell|Text client for Kea DHCP Control Agent.|?| ====Network Ports==== From IANA Service Name and Transport Protocol Port online [[https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml|Number Registry]]: bootps 67 {tcp, udp} Bootstrap Protocol Server (DHCP) bootpc 68 {tcp, udp} Bootstrap Protocol Client (DHCP) The Kea Control Agent uses port 8000 by default, but that value can be manually defined in its configuration file. (Usually located at /etc/kea/kea-ctrl-agent.conf.) This port needs to be open and accessible on every server that hosts a Kea DHCP service and a Kea Control Agent. ====Docker Network Type==== This is a good case where the Docker network type needs to be set to host. The DHCP server needs to be directly on the host to function. ====DHCP testing==== ''%%sudo nmap --script broadcast-dhcp-discover%%'' will test for DHCP servers on the same network. It will only report the first DHCP server discovered. ===Reference=== *[[https://serverfault.com/questions/171744/command-line-program-to-test-dhcp-service|Command line program to test DHCP service]] *[[https://nmap.org/book/toc.html|The Official Nmap Project Guide to Network Discovery and Security Scanning]] *[[https://www.redhat.com/sysadmin/nmap-scripting-engine|5 scripts for getting started with the Nmap Scripting Engine]] ====main dhcp4==== *''kea-dhcp4 -t /app/dhcpv4.conf'' to test the kea-dhcp4 configuration files ''/app/dhcpv4.conf'' *''kea-dhcp4 -c /app/dhcpv4.conf'' to start kea dhcp4 using configuration file ''/app/dhcpv4.conf'' ++++Use of symlink, TL;DR;| Using symlinks in is confusing when using Docker mounted directories. To control which dhcp4 config file to run (basic or plus): *''ln -s .config/dhcp_basic.conf .config/dhcp.conf'' to run basic *''ln -s .config/dhcp_plus.conf .config/dhcp.conf'' to run plus *The ''-f'' flag can be used to overwrite an existing link file instead of deleting first. The plus configuration allows a secondary backup dhcp server to be operated.++++ *''kea-dhcp4 -c /app/dhcpv4_plus.conf'' to start kea dhcp4 using configuration file ''/app/dhcpv4_plus.conf''. This configuration file is designed to work with the kea control agent setup. Where as the basic configuration ''/app/dhcpv4_basic.conf'' is not. ====ctrl-agent -t /app/kea-ctrl-agent.conf==== *''kea-ctrl-agent -t /app/kea-ctrl-agent.conf'' to test the kea-cont-agent configuration file ''/app/kea-ctrl-agent.conf'' *''kea-ctrl-agent -c /app/kea-ctrl-agent.conf'' to start the kea-cont-agent configuration file ''/app/kea-ctrl-agent.conf'' *[[https://kea.readthedocs.io/en/latest/arm/agent.html|The Kea Control Agent]] ====Kea logging==== *[[https://kb.isc.org/docs/kea-logging-configuration|Kea Logging Configuration]] I have stored log files in the .config directory that is a Docker mounted volume for persistence and easy external viewing outside container. The following logs files can be seen. * ''.config/log/kea-dhcp4-commands.log'' * ''.config/log/kea-dhcp4-dhcpsrv.log'' * ''.config/log/kea-dhcp4-leases.log'' * ''.config/log/kea-dhcp4.log'' * ''.config/log/kea-dhcp4-ha-hooks.log'' ====Kea Miscellaneous==== *''docker attach kptr-kea-1'' to attach to running container *''kea-dhcp4 -v'' To check running version =====References===== *KPTree.net's bare metal implementation of [[linux_router:dns_dhcp|dns - dhcp]], based upon ISC Bind9 and DHCP on Debian 10 (was originally Ubuntu). *ISC documentation *[[https://kea.readthedocs.io/en/latest/arm/config-templates.html#template-home-network-of-a-power-user|Template: Home Network of a Power User]] *[[https://kb.isc.org/docs/isc-kea-packages|Using Official ISC Packages for Kea]] *[[https://kb.isc.org/docs/kea-configuration-sections-explained|Kea Configuration Introduction]] *[[https://kb.isc.org/docs/kea-configuration-for-small-office-or-home-use|Kea Configuration for Small Office or Home Use]] *[[https://web-wilke.de/install-and-run-kea-dhcp-with-stork-on-debian-11/|Install and run KEA DHCP with Stork on Debian 11]] *[[https://github.com/JonasAlfredsson/docker-kea| JonasAlfredsson / docker-kea ]] <- docker_notes:docker-dns|Back ^ docker_notes:index|Start page ^ docker_notes:diun-ntfy|Next ->