はじめに
DHCPサーバーでISC DHCP Serverの後継としてKea DHCP Serverというのがあるのを知ったので試してみようと思います。
バックエンドをデーターベースに出来るということでMariaDBを、そして管理にWebUIのKeaKeeperを使用します。
セットアップはASUSのベアボーンキットUN62ベースのPCにUbuntu Server 20.04 LTSをインストールして行いました。
この記事はデージーネットのKeaKeeperのドキュメントを参考にしました。
…というか、KeaKeeperとこのドキュメントがなかったらKea DHCP Serverを導入してなかったでしょう。
インストール
Ubuntu ServerはDebian系のLinuxなのでaptで必要なパッケージをインストール。
sudo apt update && sudo apt install kea-dhcp4-server kea-dhcp6-server kea-ctrl-agent kea-admin mariadb-server
データーベース設定
初期設定
mysql_secure_installation
を実行してMariaDB Serverの初期設定を行う。
sudo mysql_secure_installation
Kea DHCP Server用データーベース作成
rootユーザーでデーターベースにログインして、Kea DHCP Server用のデーターベース(kea)を作成する。
sudo mysql -u root -p
CREATE DATABASE kea;
QUIT;
Kea DHCP Server用ユーザー作成
rootユーザーでデーターベースにログインして、Kea DHCP Server用のユーザー(kea)を作成する。
sudo mysql -u root -p
GRANT ALL ON kea.* TO kea@localhost IDENTIFIED BY 'Password';
FLUSH PRIVILEGES;
QUIT;
Password には実際に設定するパスワードを入力する。
Kea DHCP Server用テーブル作成
kea-admin
コマンドを使用してKea DHCP Serverで使用するテーブルを作成する。
sudo kea-admin db-init mysql -h localhost -u kea -p Password -n kea
-h はデーターベースを実行しているホスト名 : ここではlocalhost
-u は先程作成したKea DHCP Server用のユーザー名 : ここではkea
-p は先程作成したKea DHCP Server用のユーザーのパスワード : ここではPassword
-n は先程作成したKea DHCP Server用のデーターベース名 : ここではkea
IPv4の設定
/etc/kea/kea-dhcp4.conf
を編集して設定を行う。
ネットワークインターフェース
使用するサーバーのネットワークインターフェース名を記述する。
"Dhcp4": {
:
:
"interfaces-config": {
// サーバーのネットワークインターフェース
"interfaces": [ "enp0s3" ]
},
:
:
}
リリース情報DB
リリース情報DBをどこに持つかを記述する。今回はMariaDBなので以下のように記述する。
"Dhcp4": {
:
:
"lease-database": {
// MariaDBなので"mysql"を指定
"type": "mysql",
// 先程作成したKea DHCP Server用データーベース
"name": "kea",
// 先程作成したKea DHCP Server用ユーザー
"user": "kea",
// 先程作成したKea DHCP Server用ユーザーのパスワード
"password": "Password",
// MariaDBを実行押しているホスト名
"host": "localhost",
// MariaDBの待受ポート番号
"port": 3306
},
:
:
}
ホスト予約情報DB
ホスト予約情報DBをどこに持つかを記述する。今回はMariaDBなので以下のように記述する。
"Dhcp4": {
:
:
"hosts-database": {
// MariaDBなので"mysql"を指定
"type": "mysql",
// 先程作成したKea DHCP Server用データーベース
"name": "kea",
// 先程作成したKea DHCP Server用ユーザー
"user": "kea",
// 先程作成したKea DHCP Server用ユーザーのパスワード
"password": "Password",
// MariaDBを実行押しているホスト名
"host": "localhost",
// MariaDBの待受ポート番号
"port": 3306
},
:
:
}
オプションデーターの設定
DNSサーバーやドメインを指定する。
"Dhcp4": {
:
:
"option-data": [
{
// DNSサーバーのIPアドレス
"name": "domain-name-servers",
"data": "192.168.100.1, 192.168.100.2"
},
{
// ドメイン名
"code": 15,
"data": "example.org"
},
{
// 検索ドメイン
"name": "domain-search",
"data": "mydomain.example.com, example.com"
},
:
:
}
サブネットの設定
サブネットを定義する。アドレスの範囲やDNSサーバー等を指定する。
サブネットの定義はのちにインストールするKeaKeeperでも編集可能。
"Dhcp4": {
:
:
"subnet4": [
{
// ID(KeaKeeperで使うので番号を付けておく)
"id": 1,
// サブネット
"subnet": "192.168.100.0/24",
// DHCPによる割り当て範囲
"pools": [ { "pool": "192.168.100.101 - 192.168.100.200" } ],
"option-data": [
{
// デフォルトゲートウェイ
"name": "routers",
"data": "192.168.100.1"
}
],
}
],
:
:
}
IPv6の設定
/etc/kea/kea-dhcp6.conf
を編集して設定を行う。
ネットワークインターフェース
使用するサーバーのネットワークインターフェース名を記述する。
"Dhcp6": {
:
:
"interfaces-config": {
// サーバーのネットワークインターフェース
"interfaces": [ "enp0s3" ]
},
:
:
}
リリース情報DB
リリース情報DBをどこに持つかを記述する。今回はMariaDBなので以下のように記述する。
"Dhcp6": {
:
:
"lease-database": {
// MariaDBなので"mysql"を指定
"type": "mysql",
// 先程作成したKea DHCP Server用データーベース
"name": "kea",
// 先程作成したKea DHCP Server用ユーザー
"user": "kea",
// 先程作成したKea DHCP Server用ユーザーのパスワード
"password": "Password",
// MariaDBを実行押しているホスト名
"host": "localhost",
// MariaDBの待受ポート番号
"port": 3306
},
:
:
}
ホスト予約情報DB
ホスト予約情報DBをどこに持つかを記述する。今回はMariaDBなので以下のように記述する。
"Dhcp6": {
:
:
"hosts-database": {
// MariaDBなので"mysql"を指定
"type": "mysql",
// 先程作成したKea DHCP Server用データーベース
"name": "kea",
// 先程作成したKea DHCP Server用ユーザー
"user": "kea",
// 先程作成したKea DHCP Server用ユーザーのパスワード
"password": "Password",
// MariaDBを実行押しているホスト名
"host": "localhost",
// MariaDBの待受ポート番号
"port": 3306
},
:
:
}
オプションデーターの設定
DNSサーバーを指定する。
"Dhcp6": {
:
:
"option-data": [
{
// DNSサーバー
"name": "dns-servers",
"data": "2001:db8:2::45, 2001:db8:2::100"
},
:
:
}
サブネットの設定
サブネットを定義する。アドレスの範囲やDNSサーバー等を指定する。
サブネットの定義はのちにインストールするKeaKeeperでも編集可能。
"Dhcp6": {
:
:
"subnet6": [
{
// ID(KeaKeeperで使うので番号を付けておく)
"id": 1,
// サブネット
"subnet": "2001:db8:1::/64",
// DHCPによる割り当て範囲
"pools": [ { "pool": "2001:db8:1::/80" } ],
"option-data": [
{
// DNSサーバー
"name": "dns-servers",
"data": "2001:db8:2::dead:beef, 2001:db8:2::cafe:babe"
}
],
:
:
}
起動
sudo systemctl start kea-dhcp4-server.service kea-dhcp6-server.service kea-ctrl-agent.service
システム起動時に自動起動を有効にする。
sudo systemctl enable kea-dhcp4-server.service kea-dhcp6-server.service kea-ctrl-agent.service
KeaKeeper
必要パッケージのインストール
KeaKeeper
は PHP
で動作するWebアプリケーションなので Apache2
と PHP
をインストールする。
sudo apt update && sudo apt install apache2 php php-curl php-mbstring php-pdo php-mysql
PHPの設定
/etc/php/7.4/apache2/php.ini
を編集してタイムゾーンの設定を行う。
[Date]
;date.timezone =
date.timezone = Asia/Tokyo
KeaKeeperのダウンロード
KeaKeeper
はOSDNのプロジェクトページからダウンロード出来る。
ファイル名は keakeeper-[バージョン].tar.gz
。
2020年10月20日現在の最新版は1.03なので keakeeper-1.03.tar.gz
をダウンロードする。
KeaKeeperのインストール
ダウンロードしたアーカイブを /var/www/html
に展開する。
sudo tar xzf keakeeper-1.03.tar.gz -C /var/www/html
KeaKeeperの設定
KeaKeeperファイル群の所有者変更
KeaKeeperはWebアプリケーションなのでWebサーバー(Apache2)からアクセスできるように所有者を変更する。
sudo chown -R www-data:www-data /var/www/html/keakeeper/
またKeaKeeperでKea DHCP Serverの設定ファイルに書き込みできるように設定する。
sudo chown -R _kea:www-data /etc/kea/
sudo chmod -R 644 /etc/kea/
設定のバックアップディレクトリーを作成しておく。
sudo mkdir /etc/kea/backupdir
sudo chown -R _kea:www-data /etc/kea/backupdir
sudo chmod -R 775 /etc/kea/backupdir
KeaKeeperの設定
/var/www/html/keakeeper/config/application.ini
を編集して設定を行う。
[i18n]
lang = 'ja_JP'
[conf]
pathdhcp4 = '/etc/kea/kea-dhcp4.conf'
pathdhcp6 = '/etc/kea/kea-dhcp6.conf'
[session]
timeout = 86400
cookie = 'PEnrargei019nrwu8'
path = '/'
domain = ''
secure = false
httponly = false
[search]
leasemax = 5
hostmax = 5
[db]
driver = 'mysql'
host = 'localhost'
port = 3306
database = 'kea'
user = 'kea'
password = 'Password'
[log]
facility = 'local0'
prog = 'keakeeper'
[path]
login[] = '/keakeeper/'
login[] = '/keakeeper/index.php'
[api]
server = 'http://127.0.0.1:8000'
dhcpv4backup = '/etc/kea/backupdir/kea-dhcp4.conf.backup'
dhcpv6backup = '/etc/kea/backupdir/kea-dhcp6.conf.backup'
dhcpv4lock = '/etc/kea/backupdir/kea-dhcp4.conf.lock'
dhcpv6lock = '/etc/kea/backupdir/kea-dhcp6.conf.lock'
今回変更するのは [db]
セクションと [path]
セクションと [api]
セクション。
その他のセクションは必要に応じて変更する。
[db]
セクションはKea DHCP Server用の設定を使用する[path]
セクションはapache2の設定に合わせて変更する[api]
セクションはポート番号をKea Ctrl Agentの設定に合わせる
MariaDBの設定
KeaKeeper用のテーブルを作成するSQLファイルを実行する。
sudo mysql -u kea -p kea < /var/www/html/keakeeper/db/auth.sql
Apache2の設定
今回は http://サーバーのIPアドレス/keakeeper/
として KeaKeeper
を公開する。/etc/apache2/sites-available/keakeeper.conf
を以下のように作成する。
Alias /keakeeper /var/www/html/keakeeper/public
<Directory "/var/www/html/keakeeper/public">
require all granted
</Directory>
そして a2ensite
コマンドでサイトを有効化する。
sudo a2ensite keakeeper
おわりに
Kea DHCP Serverをセットアップしてみましたが、やることが多くて結構大変でした。
ホスト予約情報の追加・削除がDHCPサーバーのリスタート無しで出来るのは便利です。
KeaKeeperの使い方はWebUIなので画面を見ればある程度分かると思いますが、KeaKeeperのドキュメント に詳しく書いてあります。