Finally upgrading from isc-dhcp-server to isc-kea for my homelab

0
33

[ad_1]

Damaged down that approach, the migration did not look terribly scary—and it is made simpler by the truth that the Kea default config recordsdata come full of descriptive feedback and configuration examples to crib from. (And, once more, ISC has completed an excellent job with the docs for Kea. All variations, from deprecated to bleeding-edge, have thorough and extensive online documentation if you happen to’re interested in what a given possibility does or the place to use it—and, as famous above, there are additionally the provided pattern config recordsdata to tear aside if you would like extra detailed examples.)

Configuration time for DHCP

We’ve got two Kea purposes to configure, so we’ll do DHCP first after which get to the DDNS facet. (Although the DHCP config file additionally incorporates a bunch of DDNS stuff, so I assume if we’re being pedantic, we’re setting each up without delay.)

The primary file to edit, if you happen to put in Kea by way of package deal supervisor, is /and many others/kea/kea-dhcp4.conf. The file ought to have already got some fairly sane defaults in it, and it is value taking a second to look via the feedback and see what these defaults are and what they imply.

Here is a calmly sanitized model of my working kea-dhcp4.conf file:

{
  "Dhcp4": {
    "control-socket": {
      "socket-type": "unix",
      "socket-name": "/tmp/kea4-ctrl-socket"
    },
    "interfaces-config": {
      "interfaces": ["eth0"],
      "dhcp-socket-type": "uncooked"
    },
    "dhcp-ddns": {
      "enable-updates": true
    },
    "ddns-conflict-resolution-mode": "no-check-with-dhcid",
    "ddns-override-client-update": true,
    "ddns-override-no-update": true,
    "ddns-qualifying-suffix": "bigdinosaur.lan",
    "authoritative": true,
    "valid-lifetime": 86400,
    "renew-timer": 43200,
    "expired-leases-processing": {
      "reclaim-timer-wait-time": 3600,
      "hold-reclaimed-time": 3600,
      "max-reclaim-leases": 0,
      "max-reclaim-time": 0
    },
    "loggers": [
    {
      "name": "kea-dhcp4",
      "output_options": [
        {
          "output": "syslog",
          "pattern": "%-5p %mn",
          "maxsize": 1048576,
          "maxver": 8
        }
      ],
      "severity": "INFO",
      "debuglevel": 0
      }
    ],
    "reservations-global": false,
    "reservations-in-subnet": true,
    "reservations-out-of-pool": true,
    "host-reservation-identifiers": [
      "hw-address"
    ],
    "subnet4": [
      {
        "id": 1,
        "subnet": "10.10.10.0/24",
        "pools": [
          {
            "pool": "10.10.10.170 - 10.10.10.254"
          }
        ],
        "option-data": [
          {
            "name": "subnet-mask",
            "data": "255.255.255.0"
          },
          {
            "name": "routers",
            "data": "10.10.10.1"
          },
          {
            "name": "broadcast-address",
            "data": "10.10.10.255"
          },
          {
            "name": "domain-name-servers",
            "data": "10.10.10.53"
          },
          {
            "name": "domain-name",
            "data": "bigdinosaur.lan"
          }
        ],
        "reservations": [
          {
            "hostname": "host1.bigdinosaur.lan",
            "hw-address": "aa:bb:cc:dd:ee:ff",
            "ip-address": "10.10.10.100"
          },
          {
            "hostname": "host2.bigdinosaur.lan",
            "hw-address": "ff:ee:dd:cc:bb:aa",
            "ip-address": "10.10.10.101"
          }
        ]
      }
    ]
  }
}

The primary stanzas arrange the management socket on which the DHCP course of listens for administration API instructions (we’re not going to arrange the administration software, which is overkill for a homelab, however this can make sure the socket exists if you happen to ever determine to go in that course). Additionally they arrange the interface on which Kea listens for DHCP requests, they usually inform Kea to hear for these requests in uncooked socket mode. You virtually actually need uncooked as your DHCP socket sort (see here for why), however this can be set to udp if wanted.

[ad_2]

Source link