オープンソース

一覧へ

2. KeaKeeperを利用するために

2.1. 必要なソフトウェア

KeaKeeperの動作には、以下のソフトウェアが必要です。

  • Kea 2.4
  • Webサーバ
  • MySQL/MariaDB
  • PHP (8.0以上、mbstring, openssl, pdo, mysqlをサポートしている必要があります。)

本書では、以下の環境でKeaを利用することを想定して説明を行います。

動作環境
項目 内容
OS AlamLinux 9
Kea Kea 2.4
WEBサーバ Apache HTTP Server 2.4
PHP php 8.0.30
DBサーバ MariaDB 15.1

2.2. PHPの設定

2.2.1. PHPのインストール

PHPを以下のコマンドでインストールします。
# dnf install php php-cli php-common php-mbstring php-pdo php-mysqlnd

2.2.2. php.iniの設定

/etc/php.iniにタイムゾーンの設定を行ないます。

# vi /etc/php.ini
:
:
:
;data.timezone =
data.timezone = Asia/Tokyo <-追記

2.3. WEBサーバのインストール

2.3.1. Apache HTTP Serverのインストール

Apache HTTP Serverを以下のコマンドでインストールします。
# dnf install httpd

2.3.2. Apache HTTP Serverの起動

Apache HTTP Serverを以下のコマンドで起動します。
# systemctl start httpd.service
# systemctl enable httpd.service

2.4. MariaDBの設定

2.4.1. MariaDBのインストール

MariaDBを以下のコマンドでインストールします。
# dnf install mariadb-server

2.4.2. MariaDB Serverの起動

MariaDB Serverを以下のコマンドで起動します。
# systemctl start mariadb.service
# systemctl enable mariadb.service

2.4.3. Firewalldの設定

Firewalldが有効な環境では、WEBサーバが利用するポートのアクセス許可設定を行う必要があります。 以下はhttpサービスを許可する例です。

# firewall-cmd --add-service=http --permanent

2.4.4. MariaDBの設定

次にMariaDBの設定を行ないます。 mysql_secure_installationコマンドを実行し、初期設定を行ないます。
このコマンドでは以下のことが行われます。環境に合わせて実施してください。
  • ソケット認証の有効化
  • 管理者パスワードの変更
  • 匿名ユーザの削除
  • 管理者ユーザのリモートログインの禁止
  • testデータベースの削除
  • 権限テーブルのリロード
# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] Y
Enabled successfully!
Reloading privilege tables..
 ... Success!

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

2.4.5. Kea/KeaKeeper用のDB作成

Kea/KeaKeeperが利用するDBを作成します。 DB名はkeaとします。

# mysql -u root -p
Enter password:
MariaDB [(none)]> CREATE DATABASE kea;
MariaDB [(none)]> QUIT;

2.4.6. Kea/KeaKeeper用のDBユーザ作成

次にKea/KeaKeeperが利用するDBユーザの作成を行ないます。
# mysql -u root -p
Enter password:
MariaDB [(none)]> GRANT ALL ON kea.* TO keauser@localhost IDENTIFIED BY 'password';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> QUIT;

2.5. Keaの設定

2.5.1. Keaのインストール

まずKeaのインストールを行ないます。Keaの最新版は以下のサイトからダウンロードできます。

https://ftp.isc.org/isc/kea/

Redhat系のディストリビューションの場合は、ISCが用意した専用のリポジトリからインストールすることもできます。
本書ではAlmalinux9に、ISCが用意した専用のリポジトリを利用してインストールを行ないます。

初めに、ISCのリポジトリを登録します。

# curl -1sLf 'https://dl.cloudsmith.io/public/isc/kea-2-4/setup.rpm.sh' | sudo -E bash
Keaのパッケージの依存関係で、EPELのリポジトリに登録されているパッケージが必要になるため、
EPELのリポジトリも登録します。
# dnf install epel-release

Keaをインストールします。

# dnf install isc-kea

2.5.2. Keaの設定

次にKeaの設定を行ないます。DHVPv4サービスの場合、設定は/etc/kea/kea-dhcp4.confに行ないます。DHVPv6サービスの場合、設定は/etc/kea/kea-dhcp6.confに行ないます。
設定の詳細については、以下のKeaのドキュメントを参照してください。

https://kea.readthedocs.io/en/kea-2.4.1/

この解説では、DHCPv4サービスを例に挙げて解説します。
実際の設定は、環境に合わせて行ってください。
なお、設定のポイントは以下です。
  • リース情報の保存先をDBに変更する
  • ホスト予約情報の保存先をDBに変更する
  • サブネットの設定にIDを付与する
まず、リース情報の保存先をDBに変更します。
以下のようにlease-databaseのセクションを変更します。
"Dhcp4": {

  (snip)

  "lease-database": {
            "type": "mysql",
            "host": "127.0.0.1",
            "name": "kea",
            "user": "keauser",
            "password": "password"
  },
  (snip)
  • typeにはDBのタイプとしてmysqlを指定します
  • hostにはDBのホストを指定します
  • nameにはDBの名前を指定します
  • userには、上記の手順で追加したユーザIDを指定します
  • passwordには、上記の手順で追加したユーザのパスワードを指定します
次に、ホスト予約情報の保存先をDBに変更します。
以下のようにhosts-databaseのセクションを変更します。
"Dhcp4": {

  (snip)

  "hosts-database": {
    "type": "mysql",
    "host": "127.0.0.1",
    "name": "kea",
    "user": "keauser",
    "password": "password"
  },

  (snip)
  • typeにはDBのタイプとしてmysqlを指定します
  • hostにはDBのホストを指定します
  • nameにはDBの名前を指定します
  • userには、上記の手順で追加したユーザIDを指定します
  • passwordには、上記の手順で追加したユーザのパスワードを指定します
最後に、subnet4セクションのサブネット毎にIDを付与します。
このIDはデータベースに格納されたホスト予約情報が、どのサブネットの情報か判断するために利用されます。
IDが無い場合は、データの不整合が発生したり、上手く動作しない恐れがあります。
またKeaの設定全体で(DHCPv6含む)、全てのサブネットにユニークなIDを付与する必要があります。重複していた場合も、上手く動作しません。

以下の例では、サブネット「192.168.10.0/24」にid「1」を付与し、サブネット「192.168.11.0/24」にid「2」を付与しています。

2.5.3. テーブルの作成

データベースにテーブルを作成します。
データベースへのテーブルの作成は、パッケージに含まれているファイルを使用します。
# mysql -u keauser -p kea < /usr/share/kea/scripts/mysql/dhcpdb_create.mysql

コマンド実行後、データベースには以下のようにテーブルが追加されます。

MariaDB [dhcpdb]> show tables;
+-------------------------------+
| Tables_in_dhcpdb              |
+-------------------------------+
| auth                          |
| dhcp4_audit                   |
| dhcp4_audit_revision          |
| dhcp4_client_class            |
| dhcp4_client_class_dependency |
| dhcp4_client_class_order      |
| dhcp4_client_class_server     |
| dhcp4_global_parameter        |
| dhcp4_global_parameter_server |
| dhcp4_option_def              |
| dhcp4_option_def_server       |
| dhcp4_options                 |
| dhcp4_options_server          |
| dhcp4_pool                    |
| dhcp4_search_option82         |
| dhcp4_server                  |
| dhcp4_shared_network          |
| dhcp4_shared_network_server   |
| dhcp4_subnet                  |
| dhcp4_subnet_server           |
| dhcp6_audit                   |
| dhcp6_audit_revision          |
| dhcp6_client_class            |
| dhcp6_client_class_dependency |
| dhcp6_client_class_order      |
| dhcp6_client_class_server     |
| dhcp6_global_parameter        |
| dhcp6_global_parameter_server |
| dhcp6_option_def              |
| dhcp6_option_def_server       |
| dhcp6_options                 |
| dhcp6_options_server          |
| dhcp6_pd_pool                 |
| dhcp6_pool                    |
| dhcp6_server                  |
| dhcp6_shared_network          |
| dhcp6_shared_network_server   |
| dhcp6_subnet                  |
| dhcp6_subnet_server           |
| dhcp_option_scope             |
| host_identifier_type          |
| hosts                         |
| ipv6_reservations             |
| lease4                        |
| lease4_pool_stat              |
| lease4_stat                   |
| lease4_stat_by_client_class   |
| lease6                        |
| lease6_pool_stat              |
| lease6_relay_id               |
| lease6_remote_id              |
| lease6_stat                   |
| lease6_stat_by_client_class   |
| lease6_types                  |
| lease_hwaddr_source           |
| lease_state                   |
| logs                          |
| modification                  |
| parameter_data_type           |
| schema_version                |
+-------------------------------+

2.5.4. Keaの起動

最後にKeaを起動します。
以下はDHCPv4サービスを起動する場合の例です。
# systemctl start kea-dhcp4
# systemctl enable kea-dhcp4
一覧へ