読者です 読者をやめる 読者になる 読者になる

CentOS 7 の dhcpd で DDNS が失敗する

次のような感じで、リースした IP アドレスを Dynamic DNS でネームサーバに登録する DHCP サーバを CentOS 6 で作っていたのですが、なぜか CentOS 7 にすると同じような設定でも DDNS での更新が失敗するようになりました。

dhcpd.conf

log-facility daemon;
not authoritative;

ddns-updates on;
ddns-update-style interim;
ignore client-updates;

subnet 10.1.1.0 netmask 255.255.255.0 {
    default-lease-time          21600;
    max-lease-time              43200;
    range dynamic-bootp         10.1.1.100 10.1.1.200;
    option routers              10.1.1.1;
    option subnet-mask          255.255.255.0;
    option domain-name-servers  10.1.1.10;
    option domain-name          "test";
    option domain-search        "test";
    ddns-domainname             "test";
    ddns-ttl                    3600;
}

CentOS 6 で成功していたときは次のようなログが記録されていました。

dhcpd: Added new forward map from aaa.test to 10.1.1.100
dhcpd: added reverse map from 100.1.1.10.in-addr.arpa. to aaa.test

CentOS 7 で失敗したときには次のようなログが記録されていました。

dhcpd: Unable to add forward map from aaa.test to 10.1.1.100: not found

各バージョンは次の通りです。

CentOS 6.5 / dhcp-4.1.1-38.P1.el6.centos.x86_64
CentOS 7.0.1406 / dhcp-4.2.5-27.el7.centos.x86_64

試行錯誤の結果、CentOS 7 でも dhcpd.conf で zone でネームサーバを明示すれば大丈夫でした。

log-facility daemon;
not authoritative;

ddns-updates on;
ddns-update-style interim;
ignore client-updates;

subnet 10.1.1.0 netmask 255.255.255.0 {
    default-lease-time          21600;
    max-lease-time              43200;
    range dynamic-bootp         10.1.1.100 10.1.1.200;
    option routers              10.1.1.1;
    option subnet-mask          255.255.255.0;
    option domain-name-servers  10.1.1.10;
    option domain-name          "test";
    option domain-search        "test";
    ddns-domainname             "test";
    ddns-ttl                    3600;

    zone test. {
        primary 10.1.1.10;
    }

    zone 1.1.10.in-addr.arpa. {
        primary 10.1.1.10;
    }
}

CentOS 7 で zone を書いて成功したときは次のようなログが記録されました(CentOS 6 で成功していたときのログと同じです)。

dhcpd: Added new forward map from aaa.test to 10.1.1.100
dhcpd: Added reverse map from 100.1.1.10.in-addr.arpa. to aaa.test

CentOS 6 の dhcpd だと zone を記述していなくても SOA レコードから権威サーバを探して更新先のネームサーバを特定しているっぽいのだけど (nsupdate も同じような動作するよね?)、CentOS 7 の dhcpd だと SOA レコードの検索はせずに、zone で指定されたネームサーバに直接更新を掛けているようでした。

実際、SOA レコードとか NS レコードを適当に書いても更新に成功しました。

dhcpdns も本職ではなく詳しくないので、なにか根本的なところで間違っているのかもしれません。