Kea DHCPをSamba ADDCのDDNSとHot-standby HAで構築した話

前提

  • Ubuntu 22.04
  • Kea 2.2.0

Kea DHCPをインストールする

ISC公式が用意しているリポジトリからKeaをインストールしてください。

2022/12/26日時点で、 https://cloudsmith.io/~isc/repos/ で公開されており、 最新バージョンである2.2.0はこちらからアクセスできます。

Samba AD DCと連携させる

Samba AD DCのDNS機能を使い、DDNS風の動作をさせる例です。

設定スクリプトの準備

dhcp-dyndns.sh/etc/kea/kea-dhcp-dyndns.sh に保存してください。

また、スクリプト内の設定を必要に応じて変更してください。

hooks librariesの設定をする

下記のような設定を投入してください。

"hooks-libraries": [
    {
        "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_run_script.so",
        "parameters": {
            "name": "/etc/kea/kea-dhcp-dyndns.sh",
            "sync": false
        }
    }
]

ドメインに参加させる

必要パッケージをインストールする

apt install winbind krb5-user samba

netコマンドが実行できれば成功です。

smb.confを記述する

[global]
   kerberos method = secrets and keytab
   realm = YOUR.DOMAIN.EXAMPLE.COM
   workgroup = YOUR
   security = ads

参加コマンドを打つ

Administratorユーザで参加する場合は下記のコマンドで参加できます。

net ads join -U Administrators

DNS編集ユーザを作る

パスワードは利用しないのでランダムで設定。

ユーザ名と説明文はお好みで。

samba-tool user create dhcpduser --random-password --description='Unprivileged user for DNS updates via ISC DHCP server'
samba-tool user setexpiry dhcpduser --noexpiry
samba-tool group addmembers DnsAdmins dhcpduser

keytabを出力

Samba AD DCが動いているマシン上で下記のコマンドを実行し、 dhcpduser.keytab を入手します。

samba-tool domain exportkeytab [email protected] dhcpduser.keytab

入手したkeytabファイルはDHCPサーバの/etc/dhcpduser.keytabにコピーしてください。

権限の設定を忘れずに行ってください。

HA構成を作る

前提パッケージをインストールする

apt install isc-kea-ctrl-agent

リモート接続設定を変更する

/etc/kea/kea-ctrl-agent.confを編集します。

http-host0.0.0.0(もしくは適切な値)に変更してください。

HA設定を追加する

下記の設定を適宜変更して投入する。

libdhcp_lease_cmdsを入れないと正常に動かない(リース情報を共有できない)ので注意。

"hooks-libraries": [
    {
        "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_lease_cmds.so",
        "parameters": { } 
    },
    {
        "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_ha.so",
        "parameters": {
            "high-availability": [{
                "this-server-name": "dhcp01",
                "mode": "load-balancing",
                "heartbeat-delay": 10000,
                "max-response-delay": 10000,
                "max-ack-delay": 5000,
                "max-unacked-clients": 5,
                "peers": [{
                    "name": "dhcp01",
                    "url": "http://17.0.1.1:8000/",
                    "role": "primary",
                    "auto-failover": true
                }, {
                    "name": "dhcp02",
                    "url": "http://17.0.2.1:8000/",
                    "role": "secondary",
                    "auto-failover": true
                }]
            }]
        }
    }
]
最終更新 Nov 15, 2023 16:13 PM JST
Built with Hugo
テーマ StackJimmy によって設計されています。