表題が分かりにくくて申し訳ないのですが、要するにkeaとbind9でのddnsで、kea-dhcpが生成したホスト名ではなく、クライアントのインストール時またはインストール後に指定・登録したホスト名をbind9に正引きのみ登録するという事です。
例えば、Debian 12の場合、インストール時にdhcpでkeaからアドレスをもらうと、ホスト名については、初めはkeaから生成されたホスト名が入ります。これを上書きしてホスト名をクライアント側で登録しておくと、インストール終了後、再起動した後は、この上書き登録したホスト名でbindに登録されるという事です。
このため、クライアントがipv4/ipv6を取得・bindへホスト名・アドレスを登録するにあたり、今回は検証目的のため設定が楽なdhcpcdを使いました。(2024/06/28追記:クライアントがNeworkManagerの場合についてはこちらを参考にして下さい。)
なお環境はサーバ・クライアント共にDebian 12です。
まずは、クライアントの設定です。先に、dhcpcdをインストールしてisc-dhcp-clientは削除します。具体的には以下の様にします。
続いてサーバです。凡そ以下の様になります。
1. bind9サーバ上でtsig keyの作成とパーミッションの変更および確認(後でコピペします。またalogorithmは任意に変えても構いません。)
7. keaサーバ群の再起動
例えば、Debian 12の場合、インストール時にdhcpでkeaからアドレスをもらうと、ホスト名については、初めはkeaから生成されたホスト名が入ります。これを上書きしてホスト名をクライアント側で登録しておくと、インストール終了後、再起動した後は、この上書き登録したホスト名でbindに登録されるという事です。
このため、クライアントがipv4/ipv6を取得・bindへホスト名・アドレスを登録するにあたり、今回は検証目的のため設定が楽なdhcpcdを使いました。(2024/06/28追記:クライアントがNeworkManagerの場合についてはこちらを参考にして下さい。)
なお環境はサーバ・クライアント共にDebian 12です。
まずは、クライアントの設定です。先に、dhcpcdをインストールしてisc-dhcp-clientは削除します。具体的には以下の様にします。
apt-get install dhcpcd dpkg -P isc-dhcp-clientつづいて/etc/dhcpcd.confの作成をします。インストール時のdefaultの/etc/dhcpcd.confを保存し、以下の様にします。(2024/06/28:/etc/resolv.confが暫くすると空になる為修正)
cd /etc cp -a dhcpcd.conf dhcpcd.conf.orig cat <<EOF > dhcpcd.conf hostname noipv6rs clientid duid ll persistent option domain_name_servers, domain_name, domain_search noipv4ll interface eth0 ipv6rs ipv6ra_noautoconf iaid 1 ia_na 1 eth0 EOFhostnameはクライアントのホスト名を"dhcp経由でクライアント側から送る"設定です。option host_nameとすると、"dhcpでホスト名を付けてもらう"設定になるので今回は入れていません。ipv6ra_noautoconfはraでIPv6アドレスを構成しない設定です。iaid 1とia_na 1 eth0 でdhcpv6経由にてeth0にアドレスを割り振るという設定です。その他の設定は特に難しいものはないので、dhcpcd.conf.origやマニュアルを参考にしてみてください。クライアントの設定は以上です。
続いてサーバです。凡そ以下の様になります。
1. bind9サーバ上でtsig keyの作成とパーミッションの変更および確認(後でコピペします。またalogorithmは任意に変えても構いません。)
cd /etc/bind tsig-keygen dom.myadomain.local > dom.myadomain.local.key chown root:bind dom.myadomain.local.key chmod 640 dom.myadomain.local.key cat dom.myadomain.local.key key "dom.myadomain.local" { algorithm hmac-sha256; secret "Waxd3wPTW8JUcre+7VkuxnPaPpXH2fLMmX813OhZEZk="; };2. bind9 サーバ上で生成したkeyをincludeさせ、bindを再起動
$ sudo vi /etc/bind/dom.mydomain.local include "/etc/bind/dom.mydomain.local.key"; zone "dom.myadomain.local" { type master; file "/var/lib/bind/dom.mydomain.local"; allow-update { 10.0.0.0/8; key "dom.mydomain.local"; }; }; $ sudo systemctl restart bind93. keaサーバ上で tsig-keys.json を作成(先程のalgorithmとsecretをコピペ)およびパーミッションの変更
cd /etc/kea cat <<EOF > tsig-keys.json "tsig-keys": [ { "name": "dom.mydomain.local", "algorithm": "hmac-sha256", "secret": "Waxd3wPTW8JUcre+7VkuxnPaPpXH2fLMmX813OhZEZk=" }, ], EOF chown _kea:root tsig-keys.json chmod 640 tsig-keys.json4. keaサーバ上で /etc/kea-dhcp4.confを修正
{ "Dhcp4": { "dhcp-ddns": { "enable-updates": true }, "ddns-qualifying-suffix": "dom.mydomain.local.", "ddns-generated-prefix": "dynamic", "ddns-replace-client-name": "when-not-present", "ddns-send-updates": true, "ddns-update-on-renew": false, "ddns-override-client-update": true, "ddns-override-no-update": true, // -- 以下省略5. keaサーバ上で /etc/kea-dhcp6.confを修正
"Dhcp6": { "dhcp-ddns": { "enable-updates": true }, "ddns-qualifying-suffix": "dom.mydomain.local.", "ddns-generated-prefix": "dynamic", "ddns-replace-client-name": "when-not-present", "ddns-send-updates": true, "ddns-update-on-renew": false, "ddns-override-client-update": true, "ddns-override-no-update": true, // -- 以下省略6. keaサーバ上で /etc/kea/kea-dhcp-ddns.confの作成
#/etc/kea/kea-dhcp-ddns.conf { "DhcpDdns": { "ip-address": "127.0.0.1", "port": 53001, "control-socket": { "socket-type": "unix", "socket-name": "/run/kea/kea-ddns-ctrl-socket" }, "forward-ddns" : { "ddns-domains" : [ { "name": "dom.myadomain.local.", "key-name": "dom.myadomain.local", "dns-servers": [ { "ip-address": "fd98:1:1::66" } ] } ] }, "loggers": [ { "name": "kea-dhcp-ddns", "output_options": [ { "output": "stdout", "pattern": "%-5p %m\n" } ], "severity": "DEBUG", "debuglevel": 99 } ] } }ここで指定するのは、ddns-domains []内ですが、nameはドメイン名に"."を付けたものにする必要がありました。
7. keaサーバ群の再起動
systemctl restart kea-dhcp4-server systemctl restart kea-dhcp6-server systemctl restart kea-dhcp-ddns-server正常に設定が出来ていると、クライアントの起動後に、以下の様にレコードが登録されます。
$TTL 1200 ; 20 minutes vm41-1 A 10.1.40.120 $TTL 1333 ; 22 minutes 13 seconds AAAA fd98:1:1:40::2001 DHCID ( AAIBZe2SYznOMYkZ5vQruNMvSJ4zLjkzqHjXi4TtSwLy 2ok= ) ; 2 1 32なお、Debianクライアントのインストール時に、一時的にhost名が生成されるのですが、ゾーンファイル上に残ってしまうので、クリーンアップするとよいかもしれません。(例としてbind9上で実行し、ゾーンファイルが/var/lib/bind/dom.mydomain.localの場合)
#!/bin/bash cd /etc/bind NL=" " list= DNS=sv66 ZONE=dom.mydomain.local CL_PREFIX=dynamic list="server $DNS zone $ZONE." for host in `grep -r $CL_PREFIX /var/lib/bind/$ZONE | awk '{print $1}'`; do list="${list}update delete $host.$ZONE.$NL" done list="${list}$NL" echo "$list" | nsupdate -k $ZONE.key今回は以上です。それでは。
コメント
コメントを投稿