はじめに
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_installationKea DHCP Server用データーベース作成
rootユーザーでデーターベースにログインして、Kea DHCP Server用のデーターベース(kea)を作成する。
sudo mysql -u root -pCREATE DATABASE kea;
QUIT;Kea DHCP Server用ユーザー作成
rootユーザーでデーターベースにログインして、Kea DHCP Server用のユーザー(kea)を作成する。
sudo mysql -u root -pGRANT 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.serviceKeaKeeper
必要パッケージのインストール
KeaKeeper は PHP で動作するWebアプリケーションなので Apache2 と PHP をインストールする。
sudo apt update && sudo apt install apache2 php php-curl php-mbstring php-pdo php-mysqlPHPの設定
/etc/php/7.4/apache2/php.ini を編集してタイムゾーンの設定を行う。
[Date]
;date.timezone =
date.timezone = Asia/TokyoKeaKeeperのダウンロード
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/htmlKeaKeeperの設定
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/backupdirKeaKeeperの設定
/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.sqlApache2の設定
今回は 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のドキュメント に詳しく書いてあります。
