いなほちゅんのひとりごとブログ版

私のメモ帳を公開してみる。

Kea DHCP Server with KeaKeeper on Ubuntu Server

Kea DHCP Server with KeaKeeper on Ubuntu Server
日付
カテゴリー
シェア

はじめに

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のドキュメント に詳しく書いてあります。

参考サイト


アーカイブ

タグ

ページの先頭へ