Kea 3.0.2 DHCP Server

Introduksjon til ISC Kea DHCP Server

ISC Kea pakken inneholder serverprogrammer for DHCP. Det er etterfølgeren til den gamle ISC DHCP serveren som er utgått siden desember 2022.

[Notat]

Notat

Utviklingsversjoner av BLFS kan kanskje ikke bygge eller kjøre noen pakker riktig hvis LFS eller avhengigheter har blitt oppdatert siden de siste stabile versjonene av bøkene.

Pakkeinformasjon

  • Nedlasting (HTTP): https://downloads.isc.org/isc/kea/3.0.2/kea-3.0.2.tar.xz

  • Nedlasting MD5 sum: a673e95637b708b3b1926c696cdf168b

  • Nedlastingsstørrelse: 6.3 MB

  • Estimert diskplass som kreves: 231 MB (47 MB installert; legg til 425 MB for tester)

  • Estimert byggetid: 6.4 SBU (med parallellitet=4; legge til 17 SBU for tester)

Kea Avhengigheter

Påkrevd

Boost-1.89.0 og log4cplus-2.1.2

Valgfri

MIT Kerberos V5-1.22.1, Valgrind-3.26.0, botan, cppcheck, libyang, og plantuml

Valgfri (for å regenerere dokumentasjon)

Doxygen-1.15.0, Graphviz-14.0.5, sphinx_rtd_theme-3.0.2, og texlive-20250308 (eller install-tl-unx)

Valgfrie database bakstykker

MariaDB-11.8.5 eller MySQL, og PostgreSQL-18.1

Kjernekonfigurasjon

Du må ha Packet Socket støtte. IPv6 støtte er valgfritt.

[*] Networking support --->                                                [NET]
  Networking options --->
    <*/M> Packet socket                                                 [PACKET]
    [*]   TCP/IP networking                                               [INET]
    <*>     The IPv6 protocol --->                                        [IPV6]

Installasjon av ISC Kea DHCP Server

Først, bruk noen nødvendige rettelser for boost-1.89.0:

sed -e "s/, modules: \['system'\]//" -i meson.build                      &&
sed -e "/shared_ptr.hpp/a#include <boost/asio/deadline_timer.hpp>"       \
    -i src/lib/asiolink/interval_timer.cc                                &&
sed -e "/posix_time_types.hpp/a#include <boost/asio/deadline_timer.hpp>" \
    -i src/lib/asiodns/io_fetch.cc                                       &&
sed -e "/posix_time_types.hpp/a#include <boost/asio/deadline_timer.hpp>" \
    -i src/lib/asiodns/tests/io_fetch_unittest.cc

Nå, installer ISC Kea DHCP Server ved å kjøre følgende kommandoer:

mkdir build &&
cd    build &&

meson setup ..             \
      --prefix=/usr        \
      --sysconfdir=/etc    \
      --localstatedir=/var \
      --buildtype=release  \
      -D crypto=openssl    \
      -D runstatedir=/run  &&

ninja

Hvis tester var aktivert, kjør ninja test for å teste resultatene. Det finnes tester som krever en aktiv database når noen av databasehakene er bygget. Noen tester kan mislykkes hvis IPv6 støtte ikke fungerer.

For å installere ISC Kea DHCP Server pakken, utsted følgende kommandoer som root bruker:

ninja install

Rett noen stier kodet i keactrl skriptet:

sed -e "s;\${prefix}/;;" -i /usr/sbin/keactrl

Opprett noen mapper og fiks tillatelsesinnstillingene deres som root bruker:

install -dm0750 /var/lib/kea
install -dm0750 /var/log/kea

Parameterforklaringer

-D crypto=openssl: Tillater bruk av OpenSSL for kommunikasjon med kontrollagenten og for DNS oppdateringer. Bruk -D crypto=botan hvis du vil bruke botan. Standardleverandøren er openssl.

-D postgresql=enabled eller -D mysql=enabled: ISC Kea kan lagre leiekontraktene på en database. Dette kan være nyttig i store miljøer som kjører en klynge med DHCP servere. Å bruke memfile bakstykket (som er en CSV fil som er lagret lokalt) er mulig uansett.

-D tests=enabled: Dette alternativet er nødvendig for å bygge testpakken. Bruk av dette alternativet fører til at byggestørrelsen øker betydelig, så det bør bare aktiveres hvis du skal kjøre testpakken.

-D krb5=enabled: Denne bryteren muliggjør integrering med Kerberos for autentisering av klientdatamaskiner i et bedriftsmiljø.

Konfigurere ISC Kea DHCP Server

Støtte for IPv4, IPv6 og DDNS er delt inn i separate servere som kjører uavhengig av hverandre. Hver av dem har sin egen konfigurasjonsfil. Ytterligere konfigurasjonsfiler kommer fra keactrl agenten som brukes til å kontrollere serverne på en enklere måte.

Merk at Kea Control Agent er utdatert siden versjon 3.0.0. Ikke forveksle kea-ctrl-agent med keactrl.

Rådfør deg med Kea Administrator Reference Manual for detaljert informasjon om konfigurasjonen av ISC Kea siden det er et ganske kapabelt system. Konfigurasjonen vist nedenfor er et minimum for å få en DHCP server kjørende, men den inkluderer allerede konfigurasjon for DDNS (dynamisk DNS). Det oppsettet er best for små nettverk med få klienter og lave mengder nettverkstrafikk. For større installasjoner med tusenvis av kunder, ISC Kea kan konfigureres til å bruke databaser som (mariadb eller postgresql) for å lagre leiekontraktene og bygge en klynge med flere noder. Den kan integreres med ISC Stork som er et administrasjonsdashbord til ISC Kea.

Hvis du vil starte DHCP serveren ved oppstart, installer /etc/rc.d/init.d/kea-dhcpd init skriptet inkludert i blfs-bootscripts-20250225 pakken:

make install-kea-dhcpd

Konfigurasjonsfiler

/etc/kea/keactrl.conf, /etc/kea/kea-ctrl-agent.conf, /etc/kea/kea-dhcp4.conf, /etc/kea/kea-dhcp6.conf, og /etc/kea/kea-dhcp-ddns.conf

Kea kontrollkonfigurasjon

keactrl brukes til å kontrollere uavhengige servere (IPv4, IPv6, DDNS). Konfigurasjonsfilen, /etc/kea/keactrl.conf, er installert som standard og inkluderer mange baneinnstillinger som er definert fra configure ved byggetiden. Det inkluderer også innstillinger for å spesifisere hvilken av serverne som skal være startet.

  • Kontrollagent

    Kontrollagenten er en nisse som tillater (re)konfigurasjon av Kea DHCP tjenesten via REST API. Sett ctrl_agent=yes for å starte kontrollagent (tjeneste som gir en REST API), sett ctrl_agent=no i tilfelle kontrollagenten ikke er nødvendig.

  • IPv4 DHCP server

    Denne nissen håndterer forespørsler om IPv4 adresser. Sett dhcp4=yes for å starte den, sett dhcp4=no i tilfelle IPv4 tjenesten ikke er nødvendig.

  • IPv6 DHCP server

    Denne nissen håndterer forespørsler om IPv6 adresser. Sett dhcp6=yes for å starte den, sett dhcp6=no i tilfelle IPv6 tjenesten ikke er nødvendig.

  • Dynamic DNS

    Denne nissen brukes til å oppdatere en DNS server dynamisk når Kea tildeler en IP adresse til en enhet. Sett dhcp_ddns=yes for å aktivere det, sett dhcp_ddns=no hvis dynamiske DNS oppdateringer ikke er nødvendig.

Netconf tjenesten er ikke installert fordi de nødvendige avhengighetene ikke er installert av BLFS, og det er komplisert å konfigurere den riktig.

Med følgende kommando vil Kea bli konfigurert til å starte DHCP tjenesten for IPv4 og dynamisk DNS oppdatering, mens kontrollagenten og DHCP tjenesten for IPv6 forblir nede. Juster kommandoen til å matche dine behov på startet tjenester og utfør som root bruker:

sed -e "s/^dhcp4=.*/dhcp4=yes/" \
    -e "s/^dhcp6=.*/dhcp6=no/" \
    -e "s/^dhcp_ddns=.*/dhcp_ddns=yes/" \
    -e "s/^ctrl_agent=.*/ctrl_agent=no/" \
    -i /etc/kea/keactrl.conf

Kontrollagentkonfigurasjon

Den oppgitte konfigurasjonen kan brukes uten endringer. I BLFS lagres imidlertid objekter som sockets i /run heller enn i /tmp.

cat > /etc/kea/kea-ctrl-agent.conf << "EOF"
// Begin /etc/kea/kea-ctrl-agent.conf
{
  // This is a basic configuration for the Kea Control Agent.
  // The RESTful interface will be available at http://127.0.0.1:8000/
  "Control-agent": {
    "http-host": "127.0.0.1",
    "http-port": 8000,
    "control-sockets": {
      "dhcp4": {
        "socket-type": "unix",
        "socket-name": "/run/kea/kea4-ctrl-socket"
      },
      "dhcp6": {
        "socket-type": "unix",
        "socket-name": "/run/kea/kea6-ctrl-socket"
      },
      "d2": {
        "socket-type": "unix",
        "socket-name": "/run/kea/kea-ddns-ctrl-socket"
      }
    },

    "loggers": [
      {
        "name": "kea-ctrl-agent",
        "output_options": [
          {
            "output": "/var/log/kea/kea-ctrl-agent.log",
            "pattern": "%D{%Y-%m-%d %H:%M:%S.%q} %-5p %m\n"
          }
        ],
        "severity": "INFO",
        "debuglevel": 0
      }
    ]
  }
}
// End /etc/kea/kea-ctrl-agent.conf
EOF

IPv4 DHCP Server Konfigurasjon

En eksempelkonfigurasjonsfil opprettes i /etc/kea/kea-dhcp4.conf. Juster filen slik at den passer dine behov eller overskriv den ved å kjøre følgende kommando som root bruker (du må redigere denne filen uansett: minst interfaces feltet, ddns-qualifying-suffix feltet, og nesten alle feltene i Subnet4):

cat > /etc/kea/kea-dhcp4.conf << "EOF"
// Begin /etc/kea/kea-dhcp4.conf
{
  "Dhcp4": {
    // Add names of your network interfaces to listen on.
    "interfaces-config": {
      "interfaces": [ "eth0", "eth2" ]
    },

    "control-socket": {
      "socket-type": "unix",
      "socket-name": "/run/kea/kea4-ctrl-socket"
    },

    "lease-database": {
      "type": "memfile",
      "lfc-interval": 3600,
      "name": "/var/lib/kea/kea-leases4.csv"
    },

    "expired-leases-processing": {
      "reclaim-timer-wait-time": 10,
      "flush-reclaimed-timer-wait-time": 25,
      "hold-reclaimed-time": 3600,
      "max-reclaim-leases": 100,
      "max-reclaim-time": 250,
      "unwarned-reclaim-cycles": 5
    },

    "renew-timer": 900,
    "rebind-timer": 1800,
    "valid-lifetime": 3600,

    // Enable DDNS - Kea will dynamically update the BIND DNS server
    "ddns-send-updates" : true,
    "ddns-qualifying-suffix": "your.domain.tld",
    "dhcp-ddns" : {
      "enable-updates": true
    },

    "subnet4": [
      {
        "id": 1001,   // Each subnet requires a unique numeric id
        "subnet": "192.168.56.0/24",
        "pools": [ { "pool": "192.168.56.16 - 192.168.56.254" } ],
        "option-data": [
          {
            "name": "domain-name",
            "data": "your.domain.tld"
          },
          {
            "name": "domain-name-servers",
            "data": "192.168.56.2, 192.168.3.7"
          },
          {
            "name": "domain-search",
            "data": "your.domain.tld"
          },
          {
            "name": "routers",
            "data": "192.168.56.2"
          }
        ]
      }
    ],

    "loggers": [
      {
        "name": "kea-dhcp4",
        "output_options": [
          {
            "output": "/var/log/kea/kea-dhcp4.log",
            "pattern": "%D{%Y-%m-%d %H:%M:%S.%q} %-5p %m\n"
          }
        ],
        "severity": "INFO",
        "debuglevel": 0
      }
    ]
  }
}
// End /etc/kea/kea-dhcp4.conf
EOF

IPv6 DHCP Server Konfigurasjon

Konfigurasjonen for IPv6 er lik konfigurasjonen av IPv4. Konfigurasjonsfilen er /etc/kea/kea-dhcp6.conf.

Dynamisk DNS konfigurasjon

Hvis det er en BIND-9.20.16 server som kjører, ISC Kea kan oppdatere DNS oppføringene når det gir en IP adresse til en klient. En eksempelkonfigurasjon fil er opprettet i /etc/kea/kea-dhcp-ddns.conf. Juster filen slik at den passer dine behov eller overskriv den ved å kjøre følgende kommando som root bruker:

cat > /etc/kea/kea-dhcp-ddns.conf << "EOF"
// Begin /etc/kea/kea-dhcp-ddns.conf
{
  "DhcpDdns": {
    "ip-address": "127.0.0.1",
    "port": 53001,
    "control-socket": {
      "socket-type": "unix",
      "socket-name": "/run/kea/kea-ddns-ctrl-socket"
    },

    "tsig-keys": [
      {
        "name"      : "rndc-key",
        "algorithm" : "hmac-sha256",
        "secret"    : "1FU5hD7faYaajQCjSdA54JkTPQxbbPrRnzOKqHcD9cM="
      }
    ],

    "forward-ddns" : {
      "ddns-domains" : [
        {
          "name" : "your.domain.tld.",
          "key-name": "rndc-key",
          "dns-servers" : [
            {
              "ip-address" : "127.0.0.1",
              "port" : 53
            }
          ]
        }
      ]
    },

    "reverse-ddns" : {
      "ddns-domains" : [
        {
          "name" : "56.168.192.in-addr.arpa.",
          "key-name": "rndc-key",
          "dns-servers" : [
            {
              "ip-address" : "127.0.0.1",
              "port" : 53
            }
          ]
        }
      ]
    },

    "loggers": [
      {
        "name": "kea-dhcp-ddns",
        "output_options": [
          {
            "output": "/var/log/kea/kea-ddns.log",
            "pattern": "%D{%Y-%m-%d %H:%M:%S.%q} %-5p %m\n"
          }
        ],
        "severity": "INFO",
        "debuglevel": 0
      }
    ]
  }
}
// End /etc/kea/kea-dhcp-ddns.conf
EOF
[Notat]

Notat

Verdien av secret er bare et eksempel. Generer nøkkelen for installasjonen din ved å bruke rndc-confgen -a kommandoen eller tsig-keygen kommandoen som begge er levert av BIND-9.20.16.

I denne eksempelkonfigurasjonen antas det at DNS serveren kjører på samme maskin som Kea gjør (tilgjengelig via 127.0.0.1) og at denne maskinen har IP 192.168.56.2.

Innhold

Installerte Programmer: keactrl, kea-admin, kea-ctrl-agent, kea-dhcp4, kea-dhcp6, kea-dhcp-ddns, kea-lfc, kea-msg-compiler, og kea-shell
Installerte Biblioteker: libkea-asiodns.so, libkea-asiolink.so, libkea-cc.so, libkea-cfgrpt.so, libkea-config.so, libkea-cryptolink.so, libkea-d2srv.so, libkea-database.so, libkea-dhcp_ddns.so, libkea-dhcp.so, libkea-dhcpsrv.so, libkea-dns.so, libkea-eval.so, libkea-exceptions.so, libkea-hooks.so, libkea-http.so, libkea-log.so, libkea-log-interprocess.so, libkea-mysql.so, libkea-pgsql.so, libkea-process.so, libkea-stats.so, libkea-tcp.so, libkea-util.so, og libkea-util-io.so
Installerte Mapper: /etc/kea, /run/kea, /usr/include/kea, /usr/lib/kea, /usr/lib/python3.14/site-packages/kea, /usr/share/kea, /usr/share/doc/kea-3.0.2, /var/lib/kea, og /var/log/kea

Korte Beskrivelser

keactrl

er et verktøy for å kontrollere (start/stopp) serverprosessene.

kea-admin

er et skallskript som utfører vedlikehold av DHCP databasen

kea-ctrl-agent

er en daemon som eksponerer et RESTful kontrollgrensesnitt for administrasjon av Kea servere

kea-dhcp4

er DHCP serverdaemonen som leverer IPv4 adresser

kea-dhcp6

er DHCP serverdaemonen som leverer IPv6 adresser

kea-dhcp-ddns

er DHCP serverdaemonen som utfører dynamiske DNS oppdateringer

kea-lfc

er serviceprosessen fjerner overflødig informasjon fra filene som brukes til å gi vedvarende lagring for memfil database bakstykket. Den drives av Kea DHCP serveren

keashell

er en RESTful klient til ISC Kea DHCP servicer.