/var/log/study

つまり雑記

ISC DHCP から置き換わるであろう Kea の話し 前編

ISC DHCP から置き換わるであろう Kea の話し 前編

Kea DHCPにまつわる話を 前、編という感じで書きます。

前編です。以下の記事は2017/12/10にwebにある情報を元に記述しています。

今回書く話し

ISC DHCPとKea, その問題点

wikipedia をさっくりと眺めると、Internet Systems Consortiumが開発している DHCP プロトコルのリファレンス実装とのことです。

で、そのISC DHCPに何の不満があるか?と言うと、主に開発面でISCの方々が厳しい思いをしているようで、以下のスライドの6ページ目にその厳しさが詰まっています。

www.slideshare.net

遅いとか、設定が複雑とかは、dhcpを利用する規模によって受け取り方が違うと思うので一概には言えないと個人的には思いますが、中の人たちがそのように言うのだから、そうなのでしょう。

そのような中でBIND10の中にDHCPを混ぜ込んで開発をスタートさせ、BIND10から離れてKeaというのがリリースされたのが2015年だそうです。(上記のスライドの7ページ目にそのように記載指定あります。)

現状のKeaにどのような機能があるのか?は後述しますが、このKeaがリリースされてすでにまる2年が経とうとしています。

そこで問題点として上げられるのが、ISC DHCP は何時までサポートが続くのか?ということです。参考となる一文は ISC の Software Support Policyに以下のように記述してあります。

The exact timeframe for EOL will depend on the maturity of Kea and other available options. We intend to create one more major branch, DHCP 4.4, and that will be the last major branch for ISC DHCP.

要はkeaの開発具合によってISC DHCPは終了したいと書いてあります。

つまり端的な問題点として上げられるのは近いうちに開発やサポートが終了する事が問題だと考えています。

この手のミドルウェアは、脆弱性がたまーに見つかって、パッチが出るのでバージョンアップする必要があると思うのですが、そんなときにISC DHCPは開発が終了していてパッチが当たったバージョンが無く困る状況を回避する必要があるはずです。

一応補足しておくと、似たような問題にpython2.7があると思うので、現実的にはISC DHCPがバンドルされたOSのEOLが訪れるまでは大丈夫ではないか?と思っていますが。

Kea の 情報源について

Keaは大体半年に1度のメジャーリリースをロードマップにしいています。なので、本ブログを2018年に見ても参考にならない可能性があるので、最初に一次の情報源をまとめておきます。

Keaについて

ISC DHCPとBIND10の苦難から生まれたKeaがどのようなDHCPなのか?という特徴は以下の4点が挙げられます。

  • 複数のコンポーネントから構成されている
  • JSON形式の設定ファイル
  • バックエンドが選択可能
  • プラグイン機構により、DHCPとしての動作の拡張が可能
  • 設定を変更するためのWebAPIサーバーが付属している

複数のコンポーネントから構成されている

Kea DHCPは以下のコンポーネントで構成されています。

  • Dhcp4
  • Dhcp6
  • DDNS
  • Control-Agent

上記で補足が必要なのは、Control-Agentくらいだと思いますが、それは後述するWebAPIのところで詳しく述べます。

JSON形式の設定ファイル

ISC DHCPの頃は、多分独自の設定ファイル記法でした。KeaではJSON記法を利用することが可能です。

コンポーネント用の記述 + ロギングのための設定と言う形になっています。

バックエンドが選択可能

バックエンドは以下から選択が可能です。

RDBMSやNoSQLをバックエンドで使うつもりがなかったので特に検証等をしていないためどの様に動作するかは知りません。

プラグイン機構により、DHCPとしての動作の拡張が可能

C++もしくはC言語、もしくはそれらから呼び出せる言語ならプラグインが作成可能です。 (作る必要になったときに備えて、自分はgolangを使って上手いことC++を回避できないか検討していました。)

Kea内ではhookと呼ばれており、DHCPとしての挙動の様々なタイミングで処理を呼び出せる様になっています。

Hook用のデベロッパーズガイドがあるので詳しいことはそちらに任せます。

乱数を用いてIPを払い出すようなプラグインは、C++を勉強してビルドできるようになるまでを含めて大体半日もあれば出来るくらいなので、プラグインは偉大だなと思えます。

設定を変更するためのWebAPIサーバーが付属している

たぶんKeaの目玉の機能となると思います。 Kea v1.2.0からの機能で、Mozillaからのサポートを受けて開発された機能となります。 前述したControl-Agentがwebのapiの受け口を持っており、JSONを送信することで様々な操作が可能です。次の記事で動かし方等をフォローアップしていきます。

前編まとめ

ということで、前編はKeaの特徴を日本語で振り返る記事になりました。

中編ではKeaを実際に動かしてみます。