kea
dhcpサーバとしてはiscのdhcp serverが有名ですが、新しいdhcpサーバとしてkeaが開発されています。
debianへのインストール
debianの公式パッケージにもkeaは含まれていますが、より新しいバージョンを利用したい場合はiscのリポジトリを追加して利用します。
詳しい方法については、すでに記事「パッケージからISC Kea DHCP サーバのインストール方法」があるので、そちらを参照してください。
また、こちらの環境では「Kea DHCPでAct-Act(load-balancing)のHA構成を組む」の記事を参考に2台のkeaでHA構成(Act-Act)にしています。
systemd用の起動ファイル修正
mariadbにdhcpの情報を保存するようにしたら、インストールしたままでは、再起動時にisc-kea-dhcp-serverが正常に起動しなくなっていた。詳しく調べると、どうやらsystemdで起動する際にmariadbが起動する前にkeaが起動すると、異常終了してしまう。
systemdの設定ファイルで起動の依存関係を記述することで回避しようとしたがうまくいかなかった。
/lib/systemd/system/isc-kea-dhcp4-server.service
の[Unit]セクションに
[Unit]
...
After=mariadb.target
を追加してみた。これでうまくいくと思ったが、実際にリブートすると異常終了している。そこで[Service]セクションのExecStart
を修正してmariadbのソケットが生成されるまでkeaの起動を待つようにした。
[Service]
...
ExecStart=/usr/bin/bash -c "while [ ! -S /var/run/mysqld/mysqld.sock ]; do sleep 1; done;/usr/sbin/kea-dhcp4 -c /etc/kea/kea-dhcp4.conf"
これで再起動してもkeaが正常に稼働してることを確認できた。
DBの更新
apt upgrade
すると、うまく起動しなくなった。keaのlogを確認すると
2021-08-06 12:11:36.699 ERROR [kea-dhcp4.dhcp4/63609.140537304271296] DHCP4_INIT_FAIL failed to initialize Kea server: configuration error using file '/etc/kea/kea-dhcp4.conf': Unable to open database: MySQL schema version mismatch: need version: 10.0 found version: 9.6
というエラーが記録されており、どうやらデータベースのschemaが更新された模様。
kea-admin db-upgrade mysql -u kea -n kea -p
を実行してデータベースを更新し、restartすると無事に起動した。