Metonymical Deflection

ゆるく日々のコト・たまにITインフラ

Dynamic DNS 設定方法 BIND9 ISC-DHCP

BIND9とISC-DHCPによるDynamic DNS設定方法について記載します。
最初にBIND9とISC-DHCPのインストールから基本的な設定を記載した後、
Dynamic DNS設定に必要な内容を記載していきます。

1.環境

1-1.VMWare
筐体                             : 自作PC(Win10pro)
VMWare              : VMware(R) Workstation 17 Pro 17.5.1 build-23298084
仮想マシン                       : Ubuntu 22.04.2, vyos-1.5-rolling-202404040019
1-2 .全体構成


vyosをルータとして、DNSDHCPのサブネット、Clientのサブネットに分割しています。
DNSDHCP、Clientは全てUbuntu 22.04.2を使用しています。
vyosのeth2では、以下のようにDHCPリレー設定を行っています。

set service dhcp-relay listen-interface 'eth2'
set service dhcp-relay server '192.168.74.148'
set service dhcp-relay upstream-interface 'eth1'

もちろん、同一サブネット内であればDHCPリレー設定は不要です。
また、DNSDHCP仮想マシンを別けていますが、同一仮想マシン内でDNSDHCPサービスを同時に稼働させることも可能です。
なお、構成図上にu222c2147などホスト名を記載していますが、これは、動作確認時のログにホスト名が表示されるため、どのホストから出力されたログかを識別するために記載しています。

1-3 .全体の流れ ~概要~
  1. BIND9インストールと設定
  2. ISC-DHCPインストールと設定
  3. Dynamic DNS設定
  4. 動作確認とTips

2.BIND9インストールと設定

特に順番はありませんが、ここでは先にBIND9から設定していきます。*1

2-1.BIND9インストール
apt -y install bind9 bind9utils
2-2.named.conf設定

新規でZoneを定義しますので、include~の行を最終行に追記してください。

vi /etc/bind/named.conf

include "/etc/bind/named.conf.intzone";
2-3.named.conf.options設定

オプションはお好みで設定してください。
ここでは例として、forwaders, allow-query, recursionの設定を追記しました。

vi /etc/bind/named.conf.options

        forwarders {
                8.8.8.8;
        };
        allow-query { localhost; 192.168.0.0/16; };
        recursion yes;
2-4.Zoneファイルの指定設定

新規でファイルを作成します。
定義したZoneにおける各Zoneファイルを指定しています。

vi /etc/bind/named.conf.intzone

zone "example.com" IN {
        type master;
        file "/etc/bind/example.com.lan";
        allow-update { none; };
};
zone "75.168.192.in-addr.arpa" IN {
        type master;
        file "/etc/bind/75.168.192.db";
        allow-update { none; };
};
2-5.Zoneファイル設定:正引き

正引きファイルを設定します。
ns行までは、必須です。
vyosの行以下は、テスト用のため任意で設定してください。

vi /etc/bind/example.com.lan

$TTL 60
@   IN  SOA     ns.example.com. root.example.com. (
        2024062401  ;Serial
        60          ;Refresh
        30          ;Retry
        120         ;Expire
        60          ;Minimum TTL
)
        IN  NS      ns.example.com.
        IN  A       192.168.74.147
        IN  MX 10   ns.example.com.

ns      IN  A       192.168.74.147
vyos    IN  A       192.168.74.1
vyos    IN  A       192.168.75.1
2-6.Zoneファイル設定:逆引き

逆引きファイルを設定します。
PTRレコードはテスト用のため任意で設定してください。

vi /etc/bind/75.168.192.db

$TTL 60
@   IN  SOA     ns.example.com. root.example.com. (
        2024062401  ;Serial
        60          ;Refresh
        30          ;Retry
        120         ;Expire
        60          ;Minimum TTL
)
        IN  NS      ns.example.com.
1       IN  PTR     vyos.example.com.

設定が完了したら、サービスの再起動をしておきます。

systemctl restart named
2-7.動作確認

digコマンドで正引きと逆引きの確認を行います。
正引きの動作確認

root@u222c2147:~# dig vyos.example.com

; <<>> DiG 9.18.24-0ubuntu0.22.04.1-Ubuntu <<>> vyos.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18198
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;vyos.example.com.              IN      A

;; ANSWER SECTION:
vyos.example.com.       60      IN      A       192.168.75.1
vyos.example.com.       60      IN      A       192.168.74.1

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Sun Jul 07 08:57:27 JST 2024
;; MSG SIZE  rcvd: 77

逆引きの動作確認*2

Croot@u222c2147:~# dig -x 192.168.75.1

; <<>> DiG 9.18.24-0ubuntu0.22.04.1-Ubuntu <<>> -x 192.168.75.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41316
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;1.75.168.192.in-addr.arpa.     IN      PTR

;; ANSWER SECTION:
1.75.168.192.in-addr.arpa. 60   IN      PTR     vyos.example.com.

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Sun Jul 07 08:58:26 JST 2024
;; MSG SIZE  rcvd: 84

DNSサーバ設定は一旦完了です。

3.ISC-DHCPインストールと設定

3-1.ISC-DHCPインストール
apt -y install isc-dhcp-server
3-2.NIC設定

どのNICで待ち受けするかの設定を行います。

vi /etc/default/isc-dhcp-server

INTERFACESv4="ens34"
3-3.dhcpd.conf設定

デフォルトで設定されているoptionをコメントアウトします。
検証用にリース時間を任意で短くしています。単位は秒です。
2つのサブネットに対して設定を行います。

vi /etc/dhcp/dhcpd.conf

#option domain-name "example.org";
#option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 30;
max-lease-time 60;

subnet 192.168.74.0 netmask 255.255.255.0 {
}
subnet 192.168.75.0 netmask 255.255.255.0 {
    range 192.168.75.32 192.168.75.63;
    option routers 192.168.75.1;
    option domain-name-servers 192.168.74.147;
    option domain-name "example.com";
}

<補足>
"subnet 192.168.74.0"の設定は不要と思われがちですが、この設定がないとDHCPサービス起動時にFaildとなるため必須です。
これは待ち受けNICとして設定したens34のIPアドレスと同一サブネットの設定を定義しておかないとダメなようです。*3

設定が完了したら、サービスの再起動をしておきます。

systemctl restart isc-dhcp-server
3-4.動作確認

Clientを起動して、192.168.75.xのアドレスが取得できていればOKです。
または、以下のログをtailした状態で、Clientを起動しても良いと思います。

tail -f /var/log/syslog

Jul  7 09:12:36 u222c2148 dhcpd[886]: DHCPDISCOVER from 00:0c:29:c7:31:a6 via 192.168.75.1
Jul  7 09:12:37 u222c2148 dhcpd[886]: DHCPOFFER on 192.168.75.32 to 00:0c:29:c7:31:a6 (u222c2149) via 192.168.75.1
Jul  7 09:12:37 u222c2148 dhcpd[886]: DHCPREQUEST for 192.168.75.32 (192.168.74.148) from 00:0c:29:c7:31:a6 (u222c2149) via 192.168.75.1
Jul  7 09:12:37 u222c2148 dhcpd[886]: DHCPACK on 192.168.75.32 to 00:0c:29:c7:31:a6 (u222c2149) via 192.168.75.1

DHCPサーバ設定は一旦完了です。

4.Dynamic DNS設定

ここまでのDNSおよびDHCP設定をベースとして、Dynamic DNSの設定を行っていきます。

4-1.TSIG Keyファイル作成

/etc/bindにcdした後、ddns-confgenコマンドを実行します。
"dhcp75.ddns.lan"の部分は任意の文字列でOKです。

cd /etc/bind

ddns-confgen -k dhcp75.ddns.lan

<出力例>
key "dhcp75.ddns.lan"の赤文字部分がKeyとなります。

root@u222c2147:/etc/bind# ddns-confgen -k dhcp75.ddns.lan
# To activate this key, place the following in named.conf, and
# in a separate keyfile on the system or systems from which nsupdate
# will be run:
key "dhcp75.ddns.lan" {
        algorithm hmac-sha256;
        secret "4g7Jwcozsh5s35M1gOJ7VLNVa9mJSK3s9lwVw06MKRc=";
};

# Then, in the "zone" statement for each zone you wish to dynamically
# update, place an "update-policy" statement granting update permission
# to this key.  For example, the following statement grants this key
# permission to update any name within the zone:
update-policy {
        grant dhcp75.ddns.lan zonesub ANY;
};

# After the keyfile has been placed, the following command will
# execute nsupdate using this key:
nsupdate -k 

同じディレクトリのまま、新規でkeyファイルを作成します。
前項の赤文字部分をそのままコピペしてください。

vi dhcp75.key

key "dhcp75.ddns.lan" {
        algorithm hmac-sha256;
        secret "4g7Jwcozsh5s35M1gOJ7VLNVa9mJSK3s9lwVw06MKRc=";
};

Keyファイルに対してchmodをしておきます。

chown root:bind dhcp75.key
4-2.Zoneファイル移動

Zoneファイルを/var/lib/bind/配下にmvします。
Zoneファイルは、DHCPサーバからのアップデート要求に基づいて動的更新されるためです。

mv /etc/bind/example.com.lan /var/lib/bind/
mv /etc/bind/75.168.192.db /var/lib/bind/
4-3.named.conf.intzoneファイルの更新

更新前にバックアップをとっておきます。

cp /etc/bind/named.conf.intzone /etc/bind/named.conf.intzone.org


変更するポイントは以下3点です。

  • dhcp75.keyをincludeします。
  • file行のPathを更新します。
  • allow-update行を削除し、update-policyに更新します。
vi /etc/bind/named.conf.intzone

include "/etc/bind/dhcp75.key";

zone "example.com" IN {
        type master;
        file "/var/lib/bind/example.com.lan";
        update-policy {
        grant dhcp75.ddns.lan wildcard *.example.com A DHCID;
        };
};
zone "75.168.192.in-addr.arpa" IN {
        type master;
        file "/var/lib/bind/75.168.192.db";
        update-policy {
        grant dhcp75.ddns.lan wildcard *.75.168.192.in-addr.arpa PTR;
        };
};

更新が完了したら、以下のコマンドでチェックします。
何も出力されなければOKです。

sudo named-checkconf

サービスの再起動とステータス確認を行います。

systemctl restart named
systemctl status named

<出力例>

root@u222c2147:/etc/bind# systemctl status named
● named.service - BIND Domain Name Server
     Loaded: loaded (/lib/systemd/system/named.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2024-07-07 09:34:04 JST; 8s ago
       Docs: man:named(8)
    Process: 1429 ExecStart=/usr/sbin/named $OPTIONS (code=exited, status=0/SUCCESS)
   Main PID: 1430 (named)
      Tasks: 6 (limit: 4514)
     Memory: 6.0M
        CPU: 23ms
     CGroup: /system.slice/named.service
             └─1430 /usr/sbin/named -u bind

Jul 07 09:34:04 u222c2147 named[1430]: network unreachable resolving './NS/IN': 2001:503:c27::2:30#53
Jul 07 09:34:04 u222c2147 named[1430]: network unreachable resolving './NS/IN': 2001:500:2d::d#53
Jul 07 09:34:04 u222c2147 named[1430]: network unreachable resolving './NS/IN': 2801:1b8:10::b#53
Jul 07 09:34:04 u222c2147 named[1430]: network unreachable resolving './NS/IN': 2001:500:2f::f#53
Jul 07 09:34:04 u222c2147 named[1430]: network unreachable resolving './NS/IN': 2001:7fd::1#53
Jul 07 09:34:04 u222c2147 named[1430]: network unreachable resolving './NS/IN': 2001:500:1::53#53
Jul 07 09:34:04 u222c2147 named[1430]: network unreachable resolving './NS/IN': 2001:500:12::d0d#53
Jul 07 09:34:04 u222c2147 named[1430]: network unreachable resolving './NS/IN': 2001:500:9f::42#53
Jul 07 09:34:04 u222c2147 named[1430]: managed-keys-zone: Key 20326 for zone . is now trusted (acceptance timer complete)
Jul 07 09:34:04 u222c2147 named[1430]: resolver priming query complete: success

DNSの設定更新としては以上となります。
引き続き、DHCPの設定更新を行っていきます。

4-4.TSIG Keyファイルのコピー

SCPコマンドで、DNSサーバ上で作成したdhcp75.keyを、DHCPサーバ上の/etc/dhcp/ddns-keys/配下にコピーします。

scp /etc/bind/dhcp75.key root@192.168.74.148:/etc/dhcp/ddns-keys/

もしくは、DHCPサーバ上で直接作成しても構いません。Keyファイル作成時の赤文字部分をそのままコピペします。*4

vi /etc/dhcp/ddns-keys/dhcp75.key

key "dhcp75.ddns.lan" {
        algorithm hmac-sha256;
        secret "4g7Jwcozsh5s35M1gOJ7VLNVa9mJSK3s9lwVw06MKRc=";
};
4-5.dhcpd.confファイルの更新

更新前にバックアップをとっておきます。

cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.org

変更するポイントは以下3点です。

  • dhcp75.keyをincludeします。
  • ddns-updates行とzone行を追記します。
  • ddns-update-styleをnoneからstandardに変更します。
vi /etc/dhcp/dhcpd.conf

include "/etc/dhcp/ddns-keys/dhcp75.key";

ddns-updates on;
ddns-update-style standard;

zone example.com. {
  primary 192.168.74.147;
  key dhcp75.ddns.lan;
}

zone 75.168.192.in-addr.arpa. {
  primary 192.168.74.147;
  key dhcp75.ddns.lan;
}

サービスの再起動とステータス確認を行います。

systemctl restart isc-dhcp-server
systemctl status isc-dhcp-server

<出力例>

root@u222c2148:~# systemctl status isc-dhcp-server
● isc-dhcp-server.service - ISC DHCP IPv4 server
     Loaded: loaded (/lib/systemd/system/isc-dhcp-server.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2024-07-07 09:44:52 JST; 5s ago
       Docs: man:dhcpd(8)
   Main PID: 1305 (dhcpd)
      Tasks: 4 (limit: 4514)
     Memory: 14.3M
        CPU: 15ms
     CGroup: /system.slice/isc-dhcp-server.service
             └─1305 dhcpd -user dhcpd -group dhcpd -f -4 -pf /run/dhcp-server/dhcpd.pid -cf /etc/dhcp/dhcpd.conf ens34

Jul 07 09:44:52 u222c2148 dhcpd[1305]: PID file: /run/dhcp-server/dhcpd.pid
Jul 07 09:44:52 u222c2148 dhcpd[1305]: Wrote 1 leases to leases file.
Jul 07 09:44:52 u222c2148 sh[1305]: Wrote 1 leases to leases file.
Jul 07 09:44:52 u222c2148 dhcpd[1305]: Listening on LPF/ens34/00:0c:29:26:19:61/192.168.74.0/24
Jul 07 09:44:52 u222c2148 sh[1305]: Listening on LPF/ens34/00:0c:29:26:19:61/192.168.74.0/24
Jul 07 09:44:52 u222c2148 sh[1305]: Sending on   LPF/ens34/00:0c:29:26:19:61/192.168.74.0/24
Jul 07 09:44:52 u222c2148 sh[1305]: Sending on   Socket/fallback/fallback-net
Jul 07 09:44:52 u222c2148 dhcpd[1305]: Sending on   LPF/ens34/00:0c:29:26:19:61/192.168.74.0/24
Jul 07 09:44:52 u222c2148 dhcpd[1305]: Sending on   Socket/fallback/fallback-net
Jul 07 09:44:52 u222c2148 dhcpd[1305]: Server starting service.

DHCPの設定更新としては以上となります。


5.動作確認とTips

5-1.動作確認

DNSDHCPサーバのそれぞれで以下のコマンドを実行しておきます。

tail -f /var/log/syslog

Clientを起動してください。
DNSDHCPサーバ上で、それぞれ以下のログが出力されれば正常に更新されています。
DNS側の出力例>

Jul  7 09:49:27 u222c2147 named[1430]: client @0x7fe06c22b078 192.168.74.148#60321/key dhcp75.ddns.lan: updating zone 'example.com/IN': adding an RR at 'u222c2149.example.com' A 192.168.75.32
Jul  7 09:49:27 u222c2147 named[1430]: client @0x7fe06c22b078 192.168.74.148#60321/key dhcp75.ddns.lan: updating zone 'example.com/IN': adding an RR at 'u222c2149.example.com' DHCID AAIBo4qhcLCIFqPc87yoBzE3J4JKcPgq9Ae8nrkULTsbD2A=
Jul  7 09:49:27 u222c2147 named[1430]: client @0x7fe06c22a9b8 192.168.74.148#40031/key dhcp75.ddns.lan: updating zone '75.168.192.in-addr.arpa/IN': deleting rrset at '32.75.168.192.in-addr.arpa' PTR
Jul  7 09:49:27 u222c2147 named[1430]: client @0x7fe06c22a9b8 192.168.74.148#40031/key dhcp75.ddns.lan: updating zone '75.168.192.in-addr.arpa/IN': adding an RR at '32.75.168.192.in-addr.arpa' PTR u222c2149.example.com.

DHCP側の出力例>

Jul  7 09:49:26 u222c2148 dhcpd[1305]: DHCPDISCOVER from 00:0c:29:c7:31:a6 via 192.168.75.1
Jul  7 09:49:27 u222c2148 dhcpd[1305]: DHCPOFFER on 192.168.75.32 to 00:0c:29:c7:31:a6 (u222c2149) via 192.168.75.1
Jul  7 09:49:27 u222c2148 dhcpd[1305]: DHCPREQUEST for 192.168.75.32 (192.168.74.148) from 00:0c:29:c7:31:a6 (u222c2149) via 192.168.75.1
Jul  7 09:49:27 u222c2148 dhcpd[1305]: DHCPACK on 192.168.75.32 to 00:0c:29:c7:31:a6 (u222c2149) via 192.168.75.1
Jul  7 09:49:27 u222c2148 dhcpd[1305]: Added new forward map from u222c2149.example.com to 192.168.75.32
Jul  7 09:49:27 u222c2148 dhcpd[1305]: Added reverse map from 32.75.168.192.in-addr.arpa. to u222c2149.example.com

Clientからもdigコマンドで確認してみます。
<digコマンドの出力例>

root@u222c2149:~# dig u222c2149.example.com

; <<>> DiG 9.18.1-1ubuntu1.3-Ubuntu <<>> u222c2149.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33246
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;u222c2149.example.com.         IN      A

;; ANSWER SECTION:
u222c2149.example.com.  30      IN      A       192.168.75.32

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Sun Jul 07 10:17:57 JST 2024
;; MSG SIZE  rcvd: 66

root@u222c2149:~# dig -x 192.168.75.32

; <<>> DiG 9.18.1-1ubuntu1.3-Ubuntu <<>> -x 192.168.75.32
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17163
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;32.75.168.192.in-addr.arpa.    IN      PTR

;; ANSWER SECTION:
32.75.168.192.in-addr.arpa. 30  IN      PTR     u222c2149.example.com.

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Sun Jul 07 10:18:03 JST 2024
;; MSG SIZE  rcvd: 90
5-2.Zoneファイルを手動更新する場合

Zoneファイルは自動更新されるため、手動でZoneファイルを設定したい場合は、自動更新を明示的に一時停止する必要があります。
自動更新を一時停止する場合は以下のコマンド

rndc freeze

自動更新を再開する場合は以下のコマンド

rndc thaw

自動更新が始まると、/var/lib/bind/配下のZoneファイルは、以下のように更新されます。*5
<正引きファイル出力例>

root@u222c2147:~# cat /var/lib/bind/example.com.lan
$ORIGIN .
$TTL 60 ; 1 minute
example.com             IN SOA  ns.example.com. root.example.com. (
                                2024062435 ; serial
                                60         ; refresh (1 minute)
                                30         ; retry (30 seconds)
                                120        ; expire (2 minutes)
                                60         ; minimum (1 minute)
                                )
                        NS      ns.example.com.
                        A       192.168.74.147
                        MX      10 ns.example.com.
$ORIGIN example.com.
ns                      A       192.168.74.147
$TTL 30 ; 30 seconds
u222c2149               A       192.168.75.32
                        DHCID   ( AAIBo4qhcLCIFqPc87yoBzE3J4JKcPgq9Ae8nrkULTsb
                                D2A= ) ; 2 1 32
$TTL 60 ; 1 minute
vyos                    A       192.168.74.1
                        A       192.168.75.1

<逆引きファイル出力例>

root@u222c2147:~# cat /var/lib/bind/75.168.192.db
$ORIGIN .
$TTL 60 ; 1 minute
75.168.192.in-addr.arpa IN SOA  ns.example.com. root.example.com. (
                                2024062420 ; serial
                                60         ; refresh (1 minute)
                                30         ; retry (30 seconds)
                                120        ; expire (2 minutes)
                                60         ; minimum (1 minute)
                                )
                        NS      ns.example.com.
$ORIGIN 75.168.192.in-addr.arpa.
1                       PTR     vyos.example.com.
$TTL 30 ; 30 seconds
32                      PTR     u222c2149.example.com.

<補足>
/var/lib/bind/配下には、.jnl(ジャーナル)ファイルが存在します。
先にジャーナルファイルが更新された後、少し時間をおいてからZoneファイルが更新されます。*6

root@u222c2147:~# ls -Fal /var/lib/bind/
total 24
drwxrwxr-x  2 root bind 4096 Jul  7 10:03 ./
drwxr-xr-x 42 root root 4096 Jul  6 18:07 ../
-rw-r--r--  1 bind bind  404 Jul  7 10:02 75.168.192.db
-rw-r--r--  1 bind bind 3449 Jul  7 10:04 75.168.192.db.jnl
-rw-r--r--  1 bind bind  552 Jul  7 10:03 example.com.lan
-rw-r--r--  1 bind bind 2792 Jul  7 10:04 example.com.lan.jnl

以上です。

5.最後に

以下のサイトを参考にさせて頂きました。
j.eng's site: Dynamic DNS updates for DHCP hosts
[ubuntu] Dynamic DNS with BIND and ISC-DHCP

BBルータなどを使用していると、DDNSはデフォルトで良い感じに設定されているため、あまり意識しないかもしれませんが、ゼロから構築しようとするとサクッとできない部分もあるので、自分用にまとめてみました。

*1:先にISC-DHCPから設定しても問題ありません。

*2:逆引きの場合、"dig -x @192.168.74.147 192.168.75.1"とすると、上手くいかないときがあったので、仮想マシンDNSサーバ設定を、予め明示的に192.168.74.147に設定しておいてください。

*3:DHCPサーバの居るサブネットではDHCPによるアドレス配布はしないから、といって、この設定を忘れるとDHCPサービスが起動しない、という罠にハマりがちなので要注意です。

*4:もし、/etc/dhcp/ddns-keysディレクトリが存在しない場合は、mkdirで作成してください。

*5:見てわかる通り、ZoneファイルはBIND9プロセスで制御されているため、rndc freezeをせずにviなどでZoneファイルを開くとコンフリクトなどを起こす可能性があります。

*6:ジャーナルファイルが更新された時点でDNSクエリは可能な状態になっていますので、Zoneファイルが更新されないからといって不安にならないでください。