LinuxのDHCPdなツールといえば、最近まではISC DHCPdのほぼ一択の状況でしたが、最近はISCが新たに書き直したKea DHCP serverが推奨されているようです。
早速、テスト環境で構築してみているのですが問題が発生しております。
問題
とりあえずの試しの環境なので、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にレポジトリがあるようなので確認してみます。
最新のv2.0.4で以下のような更新がありました。
Allow disabling implicit initialization through
configure
script option--disable-implicit-initialization
, or CMake build optionLOG4CPLUS_REQUIRE_EXPLICIT_INITIALIZATION
. (MaksymB)
log4cplusをどうにかしてみた
これかなーと思い、ソースからbuildしてやり直したのですが同じエラーで起動せず。念のため一つ古い2.0.3についてもbuildからやり直してみたのですが(Alpine Linuxでの2.0.3パッケージが見つからず)、同じエラーで起動しませんでした。
おかしいなぁということで、これまたGithubにkeaのレポジトリがあるので確認してみたのですが、issueとしてこの問題は登録されている気配はありませんでした。
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系での動かし方についてご存知の方がいらっしゃいましたら、是非ともご教示ください。
気が付いたらドキュメントはftpからreadthedocs.ioに移行していましたね。
というかあえてkea DHCP serverをmemfile形式で使用している人は少ないのかな・・・ Web情報だと圧倒的にDBを使用しているパターンばかり・・・
2019年12月25日:追記
一応この問題解決しました。