[自分用メモ][DHCP] ISC Kea DHCP serverが正常に起動しない問題

AIX、UNIX、LinuxARM
Screenshot_2019-04-21 Kea DHCP server Internet Systems Consortium

LinuxのDHCPdなツールといえば、最近まではISC DHCPdのほぼ一択の状況でしたが、最近はISCが新たに書き直したKea DHCP serverが推奨されているようです。

早速、テスト環境で構築してみているのですが問題が発生しております。

問題

ISC、dhcpd やめるってよ - 次世代 ISC DHCP サーバー Kea 導入・設定ガイド : NETBUFFALO
僕らが普段インターネットへ接続するとき IP アドレスを自動取得するのに必ずと言ってよいほどお世話になっている DHCP サーバー。 オープン・ソースかつ大規模構成でも利用可能といえば ISC(Internet Systems Consor...

とりあえずの試しの環境なので、docker containerでalpine linuxベースで構築します。

FROM arm64v8/alpine:edge AS build
ARG PKGS="kea@testing kea-dhcp4@testing kea-dhcp6@testing kea-keactrl@testing kea-utils@testing kea-admin@testing "

RUN echo "@testing http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories 
    && apk add --update --no-cache ${PKGS}

WORKDIR /etc/kea
CMD ["keactrl", "start"]

現象

docker runしてみます。

$ docker run --network=host --rm -t kometchtech/kea:latest kea-dhcp6 -c /etc/kea/kea-dhcp6.conf
kea-dhcp6Fatal error during start up: log4cplus is not initialized and implicit initialization is turned off

んあ、log4cplusが初期化されない、みたいなerrorで起動しません。

log4cplusについて確認するため、Githubにレポジトリがあるようなので確認してみます。

GitHub - log4cplus/log4cplus: log4cplus is a simple to use C++ logging API providing thread-safe, flexible, and arbitrarily granular control over log management and configuration. It is modelled after the Java log4j API.
log4cplus is a simple to use C++ logging API providing thread-safe, flexible, and arbitrarily granular control over log ...

最新のv2.0.4で以下のような更新がありました。

Allow disabling implicit initialization through configure script option
--disable-implicit-initialization, or CMake build option
LOG4CPLUS_REQUIRE_EXPLICIT_INITIALIZATION. (MaksymB)

log4cplusをどうにかしてみた

これかなーと思い、ソースからbuildしてやり直したのですが同じエラーで起動せず。念のため一つ古い2.0.3についてもbuildからやり直してみたのですが(Alpine Linuxでの2.0.3パッケージが見つからず)、同じエラーで起動しませんでした。

おかしいなぁということで、これまたGithubにkeaのレポジトリがあるので確認してみたのですが、issueとしてこの問題は登録されている気配はありませんでした。

GitHub - isc-projects/kea: A modern, scalable, robust DHCPv4 and DHCPv6 server, with database (MySQL, PostgreSQL), hooks, multi-threading, RADIUS, NETCONF, Kerberos and more.
A modern, scalable, robust DHCPv4 and DHCPv6 server, with database (MySQL, PostgreSQL), hooks, multi-threading, RADIUS, ...

DebianとかUbuntuの方はどうなっているのかなと思い確認してみたところ、どうやらこれらはlog4cplusのバージョン1系を使用しているようでした。

結局

ということでlog4cplusの1.2.2をソースからbuildして再トライしてみたところ、今度は問題なく起動することを確認しました。

$ docker exec -it docker-env_kea_1 ps -ef
PID   USER     TIME  COMMAND
    1 root      0:00 kea-dhcp6 -c /etc/kea/kea-dhcp6.conf -d
  161 root      0:00 ps -ef

なんとか動かせるところまで持って行けたので良かったです。しかし、log4cplusの2系での動かし方についてご存知の方がいらっしゃいましたら、是非ともご教示ください。

Kea Administrator Reference Manual
Kea is an open source implementation of the Dynamic Host Configuration Protocol (DHCP) servers, developed and maintained...
2019年9月4日:追記

気が付いたらドキュメントはftpからreadthedocs.ioに移行していましたね。

Kea Administrator Reference Manual — Kea 2.3.7-git documentation

というかあえてkea DHCP serverをmemfile形式で使用している人は少ないのかな・・・ Web情報だと圧倒的にDBを使用しているパターンばかり・・・

2019年12月25日:追記

一応この問題解決しました。

この記事を書いた人

kometchtech

うつ病を患いながら、IT業界の末席にいるおっさんエンジニア。科学計算をしたことがないのに、HPC分野にお邪魔している。興味のある分野で学習したことをblogにまとめつつ、うつ病の経過症状のメモも置いておく日々。じつはRouterboard User Group JPの中の人でもある。 Amazon欲しいものリスト / Arm板を恵んでくれる人募集中

kometchtechをフォローする
いつか、そのとき、あの場所で。rev.2
タイトルとURLをコピーしました